--- /dev/null
+The current maintainers are:
+
+Evandro Gouvêa <egouvea@cs.cmu.edu>
+Arthur Chan <archan@cs.cmu.edu>
+Mosur Ravishankar <rkm@cs.cmu.edu>
+Yitao Sun <yitao@cs.cmu.edu>
+David Huggins-Daines <dhuggins@cs.cmu.edu>
+
+Major contributors include, but are not limited to:
+
+Ricky Houghton
+Rita Singh
+Bhiksha Raj
+Mike Seltzer
+Kevin Lenzo
+Alex Acero
+Xuedong Huang
+Eric Thayer
--- /dev/null
+main copyright:
+
+/* ====================================================================
+ * Copyright (c) 1999-2011 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+dtoa.c:
+/****************************************************************
+ *
+ * The author of this software is David M. Gay.
+ *
+ * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software and in all copies of the supporting
+ * documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ ***************************************************************/
+
+utf8.c:
+
+/**************************************************************
+ *
+ * Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
+ *
+ * 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.
+ *
+ ***************************************************************/
--- /dev/null
+2007-01-26 David Huggins-Daines <dhuggins@cs.cmu.edu>
+
+ * all: SphinxBase 0.2
+ * all: New feature extraction API needed for PS/S3 merge
+
+2005-11-19 David Huggins-Daines <dhd@pobox.com>
+
+ * all: Initial refactoring of SphinxTrain, Sphinx2, Sphinx3,
+ PocketSphinx into sphinx-common
+
--- /dev/null
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008 Free Software Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *Note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
--- /dev/null
+SUBDIRS = src \
+ doc \
+ include \
+ test \
+ python
+
+EXTRA_DIST = autogen.sh \
+ sphinxbase.sln \
+ sphinxbase.pc.in \
+ win32/sphinx_fe/sphinx_fe.vcxproj \
+ win32/sphinxbase/sphinxbase.vcxproj \
+ win32/sphinx_cepview/sphinx_cepview.vcxproj \
+ win32/sphinx_jsgf2fsg/sphinx_jsgf2fsg.vcxproj \
+ win32/sphinx_lm_convert/sphinx_lm_convert.vcxproj \
+ win32/sphinx_pitch/sphinx_pitch.vcxproj \
+ win32/sphinx_fe/sphinx_fe.vcxproj.user \
+ win32/sphinxbase/sphinxbase.vcxproj.user \
+ win32/sphinx_cepview/sphinx_cepview.vcxproj.user \
+ win32/sphinx_jsgf2fsg/sphinx_jsgf2fsg.vcxproj.user \
+ win32/sphinx_lm_convert/sphinx_lm_convert.vcxproj.user \
+ win32/sphinx_pitch/sphinx_pitch.vcxproj.user \
+ win32/sphinx_fe/sphinx_fe.vcxproj.filters \
+ win32/sphinxbase/sphinxbase.vcxproj.filters \
+ win32/sphinx_cepview/sphinx_cepview.vcxproj.filters \
+ win32/sphinx_jsgf2fsg/sphinx_jsgf2fsg.vcxproj.filters \
+ win32/sphinx_lm_convert/sphinx_lm_convert.vcxproj.filters \
+ win32/sphinx_pitch/sphinx_pitch.vcxproj.filters \
+ m4/pkg.m4 \
+ m4/iconv.m4 \
+ m4/lib-ld.m4 \
+ m4/lib-link.m4 \
+ m4/lib-prefix.m4 \
+ group/ABLD.BAT \
+ group/bld.inf \
+ group/sphinxbase.mmp
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = sphinxbase.pc
+CLEANFILES = sphinxbase.pc
+
+ACLOCAL_AMFLAGS = -I m4
+
+etags:
+ etags `find . -name "*.[ch]"`
+
+ctags:
+ ctags `find . -name "*.[ch]"`
+
+doxygen:
+ doxygen ./doc/doxygen.cfg
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/sphinxbase.pc.in \
+ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+ config.guess config.rpath config.sub depcomp install-sh \
+ ltmain.sh missing ylwrap
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES = sphinxbase.pc
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = src \
+ doc \
+ include \
+ test \
+ python
+
+EXTRA_DIST = autogen.sh \
+ sphinxbase.sln \
+ sphinxbase.pc.in \
+ win32/sphinx_fe/sphinx_fe.vcxproj \
+ win32/sphinxbase/sphinxbase.vcxproj \
+ win32/sphinx_cepview/sphinx_cepview.vcxproj \
+ win32/sphinx_jsgf2fsg/sphinx_jsgf2fsg.vcxproj \
+ win32/sphinx_lm_convert/sphinx_lm_convert.vcxproj \
+ win32/sphinx_pitch/sphinx_pitch.vcxproj \
+ win32/sphinx_fe/sphinx_fe.vcxproj.user \
+ win32/sphinxbase/sphinxbase.vcxproj.user \
+ win32/sphinx_cepview/sphinx_cepview.vcxproj.user \
+ win32/sphinx_jsgf2fsg/sphinx_jsgf2fsg.vcxproj.user \
+ win32/sphinx_lm_convert/sphinx_lm_convert.vcxproj.user \
+ win32/sphinx_pitch/sphinx_pitch.vcxproj.user \
+ win32/sphinx_fe/sphinx_fe.vcxproj.filters \
+ win32/sphinxbase/sphinxbase.vcxproj.filters \
+ win32/sphinx_cepview/sphinx_cepview.vcxproj.filters \
+ win32/sphinx_jsgf2fsg/sphinx_jsgf2fsg.vcxproj.filters \
+ win32/sphinx_lm_convert/sphinx_lm_convert.vcxproj.filters \
+ win32/sphinx_pitch/sphinx_pitch.vcxproj.filters \
+ m4/pkg.m4 \
+ m4/iconv.m4 \
+ m4/lib-ld.m4 \
+ m4/lib-link.m4 \
+ m4/lib-prefix.m4 \
+ group/ABLD.BAT \
+ group/bld.inf \
+ group/sphinxbase.mmp
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = sphinxbase.pc
+CLEANFILES = sphinxbase.pc
+ACLOCAL_AMFLAGS = -I m4
+all: all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+sphinxbase.pc: $(top_builddir)/config.status $(srcdir)/sphinxbase.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d $(distdir) || mkdir $(distdir)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pkgconfigDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
+ distclean distclean-generic distclean-libtool distclean-tags \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-pkgconfigDATA install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-pkgconfigDATA
+
+
+etags:
+ etags `find . -name "*.[ch]"`
+
+ctags:
+ ctags `find . -name "*.[ch]"`
+
+doxygen:
+ doxygen ./doc/doxygen.cfg
+# 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:
--- /dev/null
+No news is good news.
+
+Sphinxbase-0.7
+^^^^^^^^^^^^^^
+
+Thanks: David Huggins-Daines, Yuri Orlov, Edwin Miguel
+
+Improvements:
+
+ * Symbian fixes
+ * Sphinxtrain also depends on sphinxbase now
+ * Cepwin feature type
+ * Large header structure reorganization for multiplatform compilation
+ * Add libsndfile support, now it can read many formats
+ * Fsg arc iterators for faster FSG decoding
+ * Add support for text and HTK format output of features
+
+Bug fixes:
+
+ * Fixes read/write of unigram dmp models
+ * Fixes issue with linking to iconv on cygwin
--- /dev/null
+CMU Sphinx common libraries
+---------------------------
+
+This package contains the basic libraries shared by the CMU Sphinx
+trainer and all the Sphinx decoders (Sphinx-II, Sphinx-III, and
+PocketSphinx), as well as some common utilities for manipulating
+acoustic feature and audio files.
+
+Installation Guide:
+
+This section contains installation for various platforms
+
+Linux/Unix installation
+^^^^^^^^^^^^^^^^^^^^^^^
+
+sphinxbase is used by other modules. The convention requires the
+physical layout of the code looks like this:
+ package/
+ sphinxbase/
+
+So if you get the file from a distribution, you might want to rename
+sphinxbase-X.X to sphinxbase by typing
+
+ > mv sphinxbase-X.X sphinxbase (where X.X being the version of sphinxbase)
+
+If you downloaded directly from the Subversion repository, you need to
+create the "configure" file by typing
+
+ > ./autogen.sh
+
+If you downloaded a release version or if you have already run
+"autogen.sh", you can build simply by running
+
+ > ./configure
+ > make
+
+If you are compiling for a platform without floating-point arithmetic,
+you should instead use:
+
+ > ./configure --enable-fixed --without-lapack
+ > make
+
+You can also check the validity of the package by typing
+
+ > make check
+
+and then install it with
+
+ > make install
+
+This defaults to installing SphinxBase under /usr/local. You may
+customize it by running ./configure with an argument, as in
+
+ >./configure --prefix=/my/own/installation/directory
+
+XCode Installation (for iPhone):
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Sphinxbase uses the standard unix autogen system, and there's a script
+included, 'build_for_iphone.sh' that will setup configure to create
+binaries that are XCode friendly.
+
+1) ./autogen.sh
+2) ./build_for_iphone.sh simulator
+3) ./build_for_iphone.sh device
+
+Then in XCode, open your project info, and for 'All Configurations', and
+set:
+
+'Header Search Paths' = "$(HOME)$(SDK_DIR)/include/sphinxbase"
+'Library Search Paths' = "$(HOME)$(SDK_DIR)/lib"
+'Other Linker Flags' = "-lsphinxbase"
+
+Windows Installation:
+^^^^^^^^^^^^^^^^^^^^^
+To compile sphinxbase in Visual Studio 2010 Express (or newer):
+1, unzip the file.
+2, rename the directory to sphinxbase
+3, go into the sphinxbase folder and click sphinxbase.sln
+4, in the menu, choose Build -> Rebuild All -> Batch Build -> Build
+
+In Step 4, make sure all projects are selected, preferably the
+"Release" version of each.
+
+If you are using cygwin, the installation procedure is very similar to
+the Unix installation. However, there is no audio driver support in
+cygwin currently so one can only use the batch mode recognzier.
+
--- /dev/null
+# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.10.2], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10.2])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 4
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[# Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file. Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*) set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 13
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/iconv.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/pkg.m4])
--- /dev/null
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+PKG_NAME="the package."
+
+DIE=0
+
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`autoconf' installed to."
+ echo "Download the appropriate package for your distribution,"
+ echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+ DIE=1
+}
+
+(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
+ if libtoolize --version </dev/null >/dev/null 2>&1; then
+ LIBTOOLIZE=libtoolize
+ elif glibtoolize --version </dev/null >/dev/null 2>&1; then
+ LIBTOOLIZE=glibtoolize
+ else
+ echo
+ echo "**Error**: You must have \`libtool' installed."
+ echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz"
+ echo "(or a newer version if it is available)"
+ DIE=1
+ fi
+}
+
+grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && {
+ grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
+ (gettext --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`gettext' installed."
+ echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
+ echo "(or a newer version if it is available)"
+ DIE=1
+ }
+}
+
+grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && {
+ grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
+ (gettext --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`gettext' installed."
+ echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
+ echo "(or a newer version if it is available)"
+ DIE=1
+ }
+}
+
+(automake --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`automake' installed."
+ echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
+ echo "(or a newer version if it is available)"
+ DIE=1
+ NO_AUTOMAKE=yes
+}
+
+
+# if no automake, don't bother testing for aclocal
+test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: Missing \`aclocal'. The version of \`automake'"
+ echo "installed doesn't appear recent enough."
+ echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
+ echo "(or a newer version if it is available)"
+ DIE=1
+}
+
+if test "$DIE" -eq 1; then
+ exit 1
+fi
+
+if test -z "$*"; then
+ echo "**Warning**: I am going to run \`configure' with no arguments."
+ echo "If you wish to pass any to it, please specify them on the"
+ echo \`$0\'" command line."
+ echo
+fi
+
+case $CC in
+xlc )
+ am_opt=--include-deps;;
+esac
+
+for coin in `find $srcdir -name configure.in -print`
+do
+ dr=`dirname $coin`
+ if test -f $dr/NO-AUTO-GEN; then
+ echo skipping $dr -- flagged as no auto-gen
+ else
+ echo processing $dr
+ macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
+ ( cd $dr
+ aclocalinclude="$ACLOCAL_FLAGS"
+ for k in $macrodirs; do
+ if test -d $k; then
+ aclocalinclude="$aclocalinclude -I $k"
+ ##else
+ ## echo "**Warning**: No such directory \`$k'. Ignored."
+ fi
+ done
+ if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then
+ if grep "sed.*POTFILES" configure.in >/dev/null; then
+ : do nothing -- we still have an old unmodified configure.in
+ else
+ echo "Creating $dr/aclocal.m4 ..."
+ test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
+ echo "Running gettextize... Ignore non-fatal messages."
+ echo "no" | gettextize --force --copy
+ echo "Making $dr/aclocal.m4 writable ..."
+ test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
+ fi
+ fi
+ if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then
+ echo "Creating $dr/aclocal.m4 ..."
+ test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
+ echo "Running gettextize... Ignore non-fatal messages."
+ echo "no" | gettextize --force --copy
+ echo "Making $dr/aclocal.m4 writable ..."
+ test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
+ fi
+ if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
+ echo "Running $LIBTOOLIZE..."
+ $LIBTOOLIZE --force --copy
+ fi
+ echo "Running aclocal $aclocalinclude ..."
+ aclocal -I m4 $aclocalinclude
+ if grep "^AC_CONFIG_HEADER" configure.in >/dev/null; then
+ echo "Running autoheader..."
+ autoheader
+ fi
+ echo "Running automake --gnu --copy $am_opt ..."
+ automake --add-missing --gnu --copy $am_opt
+ echo "Running autoconf ..."
+ autoconf
+ )
+ fi
+done
+
+#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
+
+if test x$NOCONFIGURE = x; then
+ echo Running $srcdir/configure $conf_flags "$@" ...
+ $srcdir/configure $conf_flags "$@" \
+ && echo Now type \`make\' to compile $PKG_NAME
+else
+ echo Skipping configure process.
+fi
--- /dev/null
+#! /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-11-15'
+
+# 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.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if echo '\n#ifdef __amd64\nIS_64BIT_ARCH\n#endif' | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-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 | genuineintel)
+ 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 ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ 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:
--- /dev/null
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2006 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | pw32* | os2*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ sco3.2v5*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ interix3*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ ;;
+ aix4* | aix5*)
+ ;;
+ amigaos*)
+ ;;
+ beos*)
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32*)
+ shrext=.dll
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ ;;
+ dgux*)
+ ;;
+ freebsd1*)
+ ;;
+ kfreebsd*-gnu)
+ ;;
+ freebsd* | dragonfly*)
+ ;;
+ gnu*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ ;;
+ interix3*)
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux*)
+ ;;
+ knetbsd*-gnu)
+ ;;
+ netbsd*)
+ ;;
+ newsos6)
+ ;;
+ nto-qnx*)
+ ;;
+ openbsd*)
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ ;;
+ osf3* | osf4* | osf5*)
+ ;;
+ solaris*)
+ ;;
+ sunos4*)
+ ;;
+ sysv4 | sysv4.3*)
+ ;;
+ sysv4*MP*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ ;;
+ uts4*)
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
--- /dev/null
+#! /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-09-08'
+
+# 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 | z80)
+ 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-* | z80-*)
+ ;;
+ # 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
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ 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
+ ;;
+ z80-*-coff)
+ basic_machine=z80-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* | -cegcc* \
+ | -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:
--- /dev/null
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63 for sphinxbase 0.7.
+#
+# 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'"
+
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<_LT_EOF
+$*
+_LT_EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+ then
+ break
+ fi
+ done
+ fi
+
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+ else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$ECHO" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ ECHO='print -r'
+ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ ECHO='printf %s\n'
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ ECHO="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ ECHO=echo
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+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='sphinxbase'
+PACKAGE_TARNAME='sphinxbase'
+PACKAGE_VERSION='0.7'
+PACKAGE_STRING='sphinxbase 0.7'
+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"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+SNDFILE_LIBS
+SNDFILE_CFLAGS
+PKG_CONFIG
+HAVE_PKGCONFIG
+BUILD_CYTHON_FALSE
+BUILD_CYTHON_TRUE
+HAVE_CYTHON
+BUILD_PYTHON_FALSE
+BUILD_PYTHON_TRUE
+PYTHON_CONFIG
+PYTHON
+BUILD_DOXYGEN_FALSE
+BUILD_DOXYGEN_TRUE
+HAVE_DOXYGEN
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+lt_ECHO
+RANLIB
+AR
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+ad_backend
+ad_libs
+ad_files
+FIXED_POINT_FALSE
+FIXED_POINT_TRUE
+USE_THREADS_FALSE
+USE_THREADS_TRUE
+USE_LAPACK_FALSE
+USE_LAPACK_TRUE
+LAPACK_LITE_FALSE
+LAPACK_LITE_TRUE
+LTLIBICONV
+LIBICONV
+EGREP
+GREP
+CPP
+YACC
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+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_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+with_gnu_ld
+enable_rpath
+with_libiconv_prefix
+with_lapack
+enable_threads
+enable_fixed
+enable_fixed16
+enable_debug
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+enable_libtool_lock
+with_python
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+YACC
+CPP
+PKG_CONFIG
+SNDFILE_CFLAGS
+SNDFILE_LIBS'
+
+
+# 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 sphinxbase 0.7 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/sphinxbase]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of sphinxbase 0.7:";;
+ 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]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-rpath do not hardcode runtime library paths
+ --disable-threads Disable thread-safe versions of memory allocation
+ functions (default: check)
+ --enable-fixed=RADIX Use 32-bit fixed-point for MFCC and GMM computation,
+ optionally specifying a radix point
+ --enable-fixed16 Use 16-bit fixed-point for MFCC computation
+ --enable-debug Enable debugging output
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+ --without-lapack Disable matrix algebra support (depends on LAPACK)
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --without-python Disable Python extension
+
+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>
+ YACC Bison command
+ CPP C preprocessor
+ PKG_CONFIG path to pkg-config utility
+ SNDFILE_CFLAGS
+ C compiler flags for SNDFILE, overriding pkg-config
+ SNDFILE_LIBS
+ linker flags for SNDFILE, overriding pkg-config
+
+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
+sphinxbase configure 0.7
+generated by GNU Autoconf 2.63
+
+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 sphinxbase $as_me 0.7, which was
+generated by GNU Autoconf 2.63. 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: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $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
+
+
+ac_config_headers="$ac_config_headers include/config.h include/sphinx_config.h"
+
+am__api_version='1.10'
+
+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 build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ $as_echo "$as_me:$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 test "${ac_cv_path_mkdir+set}" = set; 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
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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
+
+ 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.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+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_AWK+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$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
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $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
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='sphinxbase'
+ VERSION='0.7'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $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
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_STRIP="strip"
+ $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_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+
+CFLAGS=${CFLAGS:--g -O2 -Wall}
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; 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_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+ { (exit 1); exit 1; }; };;
+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:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; 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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+ { (exit 1); exit 1; }; };;
+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
+
+
+
+case $host in
+ arm-wince-pe*)
+ CFLAGS=${CFLAGS:--march=armv4 -mapcs-32 -malignment-traps}
+ LIBS='-lc -lgcc -lwinsock -lcoredll'
+ CFLAGS="$CFLAGS -DNEWLIB -DSARM -DWIN32 -DGNUWINCE"
+ ;;
+ *uclinux*)
+ # uClinux needs special "flat" binaries
+ LDFLAGS="$LDFLAGS -Wl,-elf2flt"
+ ;;
+ *)
+ ;;
+esac
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+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: 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:$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: 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:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if test "${ac_cv_search_strerror+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$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 strerror ();
+int
+main ()
+{
+return strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; 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
+ 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_search_strerror=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_strerror+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_strerror+set}" = set; then
+ :
+else
+ ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+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: 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:$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: 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:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+ case $ac_cv_prog_cc_stdc in
+ no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;;
+ *) { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if test "${ac_cv_prog_cc_c99+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c99=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 <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+ your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str;
+ int number;
+ float fnumber;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case 's': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case 'd': // int
+ number = va_arg (args_copy, int);
+ break;
+ case 'f': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+}
+
+int
+main ()
+{
+
+ // Check bool.
+ _Bool success = false;
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ test_varargs ("s, d' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+ || dynamic_array[ni.number - 1] != 543);
+
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+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_c99=$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_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" 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_c99"
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+ { $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
+if test "x$ac_cv_prog_cc_c89" != xno; then
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+ ac_cv_prog_cc_stdc=no
+fi
+
+
+fi
+
+ ;;
+esac
+ { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+ if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+
+ case $ac_cv_prog_cc_stdc in
+ no) { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ '') { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ *) { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+
+# We don't bother ourselves with flex checks until the rest of the world has an up-to-date Flex
+# We need specific bison extensions, so check for bison
+# Extract the first word of "bison", so it can be a program name with args.
+set dummy bison; 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_YACC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$YACC"; then
+ ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_YACC="bison -y"
+ $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_YACC" && ac_cv_prog_YACC="no"
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+ { $as_echo "$as_me:$LINENO: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "x$YACC" = "xno";
+then
+ { { $as_echo "$as_me:$LINENO: error: You need to install bison" >&5
+$as_echo "$as_me: error: You need to install bison" >&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
+{ $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: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $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
+
+
+{ $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; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ { $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
+ # See if we're dealing with a universal compiler.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_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
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are some -arch flags. Note that *ppc* also matches
+ # ppc64. This check is also rather less than ideal.
+ case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #(
+ *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+ esac
+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
+ 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)
+
+cat >>confdefs.h <<\_ACEOF
+#define AC_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+ ;; #(
+ *)
+ { { $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
+
+{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5
+$as_echo_n "checking return type of signal handlers... " >&6; }
+if test "${ac_cv_type_signal+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 <signal.h>
+
+int
+main ()
+{
+return *(signal (0, 0)) (0) == 1;
+ ;
+ 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_type_signal=int
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_signal=void
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
+$as_echo "$ac_cv_type_signal" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define RETSIGTYPE $ac_cv_type_signal
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking for long long" >&5
+$as_echo_n "checking for long long... " >&6; }
+if test "${ac_cv_type_long_long+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_long_long=no
+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 ()
+{
+if (sizeof (long long))
+ return 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
+ 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 ()
+{
+if (sizeof ((long long)))
+ return 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
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_long_long=yes
+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
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
+$as_echo "$ac_cv_type_long_long" >&6; }
+if test "x$ac_cv_type_long_long" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LONG_LONG 1
+_ACEOF
+
+
+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:$LINENO: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if test "${ac_cv_sizeof_long_long+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= 0)];
+test_array [0] = 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
+ ac_lo=0 ac_mid=0
+ while :; do
+ 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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)];
+test_array [0] = 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
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+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. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) < 0)];
+test_array [0] = 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
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ 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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= $ac_mid)];
+test_array [0] = 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
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ 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
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ 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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)];
+test_array [0] = 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
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_long=$ac_lo;;
+'') if test "$ac_cv_type_long_long" = yes; then
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+ else
+ ac_cv_sizeof_long_long=0
+ fi ;;
+esac
+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
+static long int longval () { return (long int) (sizeof (long long)); }
+static unsigned long int ulongval () { return (long int) (sizeof (long long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (((long int) (sizeof (long long))) < 0)
+ {
+ long int i = longval ();
+ if (i != ((long int) (sizeof (long long))))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ((long int) (sizeof (long long))))
+ 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
+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_sizeof_long_long=`cat conftest.val`
+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 )
+if test "$ac_cv_type_long_long" = yes; then
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+ else
+ ac_cv_sizeof_long_long=0
+ fi
+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
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$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:$LINENO: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)];
+test_array [0] = 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
+ ac_lo=0 ac_mid=0
+ while :; do
+ 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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 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
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+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. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)];
+test_array [0] = 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
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ 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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 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
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ 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
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ 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 ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 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
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') if test "$ac_cv_type_long" = yes; then
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+ else
+ ac_cv_sizeof_long=0
+ fi ;;
+esac
+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
+static long int longval () { return (long int) (sizeof (long)); }
+static unsigned long int ulongval () { return (long int) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (((long int) (sizeof (long))) < 0)
+ {
+ long int i = longval ();
+ if (i != ((long int) (sizeof (long))))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ((long int) (sizeof (long))))
+ 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
+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_sizeof_long=`cat conftest.val`
+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 )
+if test "$ac_cv_type_long" = yes; then
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+ else
+ ac_cv_sizeof_long=0
+ fi
+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
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$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
+
+
+
+
+
+for ac_func in popen perror snprintf
+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; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+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 "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | [A-Za-z]:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+ enableval=$enable_rpath; :
+else
+ enable_rpath=yes
+fi
+
+
+
+ acl_libdirstem=lib
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then
+ withval=$with_libiconv_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+
+fi
+
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='iconv '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" \
+ && { test -f "$additional_libdir/lib$name.$shlibext" \
+ || { test "$shlibext" = dll \
+ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then
+ found_dir="$additional_libdir"
+ if test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_so="$additional_libdir/lib$name.$shlibext"
+ else
+ found_so="$additional_libdir/lib$name.dll.a"
+ fi
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" \
+ && { test -f "$dir/lib$name.$shlibext" \
+ || { test "$shlibext" = dll \
+ && test -f "$dir/lib$name.dll.a"; }; }; then
+ found_dir="$dir"
+ if test -f "$dir/lib$name.$shlibext"; then
+ found_so="$dir/lib$name.$shlibext"
+ else
+ found_so="$dir/lib$name.dll.a"
+ fi
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$hardcode_direct" = yes; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+ done
+ fi
+
+
+
+
+
+
+
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ 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 <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ 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
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ 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 <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ 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
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+ if test "${am_cv_proto_iconv+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 <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+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
+ am_cv_proto_iconv_arg1=""
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ am_cv_proto_iconv_arg1="const"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+ am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ { $as_echo "$as_me:$LINENO: result: ${ac_t:-
+ }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+ }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+ fi
+
+
+use_lapack=true
+use_internal_lapack=false
+
+# Check whether --with-lapack was given.
+if test "${with_lapack+set}" = set; then
+ withval=$with_lapack;
+if test x$withval = xno; then
+ use_lapack=false
+fi
+
+fi
+
+if test x$use_lapack = xtrue; then
+
+{ $as_echo "$as_me:$LINENO: checking for sgesv_ in -llapack" >&5
+$as_echo_n "checking for sgesv_ in -llapack... " >&6; }
+if test "${ac_cv_lib_lapack_sgesv_+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-llapack $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 sgesv_ ();
+int
+main ()
+{
+return sgesv_ ();
+ ;
+ 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_lapack_sgesv_=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_lapack_sgesv_=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_lapack_sgesv_" >&5
+$as_echo "$ac_cv_lib_lapack_sgesv_" >&6; }
+if test "x$ac_cv_lib_lapack_sgesv_" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBLAPACK 1
+_ACEOF
+
+ LIBS="-llapack $LIBS"
+
+else
+ use_internal_lapack=true
+fi
+
+ if test x$use_internal_lapack != xtrue; then
+
+{ $as_echo "$as_me:$LINENO: checking for sgemm_ in -lblas" >&5
+$as_echo_n "checking for sgemm_ in -lblas... " >&6; }
+if test "${ac_cv_lib_blas_sgemm_+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lblas $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 sgemm_ ();
+int
+main ()
+{
+return sgemm_ ();
+ ;
+ 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_blas_sgemm_=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_blas_sgemm_=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_blas_sgemm_" >&5
+$as_echo "$ac_cv_lib_blas_sgemm_" >&6; }
+if test "x$ac_cv_lib_blas_sgemm_" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBBLAS 1
+_ACEOF
+
+ LIBS="-lblas $LIBS"
+
+else
+ use_internal_lapack=true
+fi
+
+ fi
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_LAPACK /**/
+_ACEOF
+
+fi
+ if test x$use_internal_lapack = xtrue; then
+ LAPACK_LITE_TRUE=
+ LAPACK_LITE_FALSE='#'
+else
+ LAPACK_LITE_TRUE='#'
+ LAPACK_LITE_FALSE=
+fi
+
+ if test x$use_lapack = xtrue; then
+ USE_LAPACK_TRUE=
+ USE_LAPACK_FALSE='#'
+else
+ USE_LAPACK_TRUE='#'
+ USE_LAPACK_FALSE=
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for log in -lm" >&5
+$as_echo_n "checking for log in -lm... " >&6; }
+if test "${ac_cv_lib_m_log+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $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 log ();
+int
+main ()
+{
+return log ();
+ ;
+ 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_m_log=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_m_log=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_m_log" >&5
+$as_echo "$ac_cv_lib_m_log" >&6; }
+if test "x$ac_cv_lib_m_log" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+threadsafe=auto
+# Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then
+ enableval=$enable_threads;
+if test x$enableval != x; then
+ threadsafe=$enableval
+fi
+
+fi
+
+if test x$threadsafe != xno; then
+ threads=false
+ case $host in
+ *cygwin*|*mingw*|*wince*)
+ threads=true
+ ;;
+ *)
+
+for ac_header in pthread.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
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ threads=true
+fi
+
+done
+
+
+{ $as_echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
+$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
+if test "${ac_cv_lib_pthread_pthread_create+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_create ();
+int
+main ()
+{
+return pthread_create ();
+ ;
+ 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_create=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_pthread_pthread_create=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_create" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPTHREAD 1
+_ACEOF
+
+ LIBS="-lpthread $LIBS"
+
+fi
+
+ ;;
+ esac
+ if test x$threads = xtrue; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_THREADS /**/
+_ACEOF
+
+ threadsafe=yes
+ elif test x$threadsafe = xyes; then
+ { { $as_echo "$as_me:$LINENO: error: --enable-threads was given but test for thread functions failed!" >&5
+$as_echo "$as_me: error: --enable-threads was given but test for thread functions failed!" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ threadsafe=no
+ fi
+fi
+ if test x$threadsafe = xyes; then
+ USE_THREADS_TRUE=
+ USE_THREADS_FALSE='#'
+else
+ USE_THREADS_TRUE='#'
+ USE_THREADS_FALSE=
+fi
+
+
+fixed_point=false
+# Check whether --enable-fixed was given.
+if test "${enable_fixed+set}" = set; then
+ enableval=$enable_fixed;
+if test x$enableval = xyes; then
+ cat >>confdefs.h <<\_ACEOF
+#define FIXED_POINT 1
+_ACEOF
+
+ fixed_point=true
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define FIXED_POINT /**/
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_RADIX $enableval
+_ACEOF
+
+fi
+fi
+
+ if test x$fixed_point = xtrue; then
+ FIXED_POINT_TRUE=
+ FIXED_POINT_FALSE='#'
+else
+ FIXED_POINT_TRUE='#'
+ FIXED_POINT_FALSE=
+fi
+
+
+# Check whether --enable-fixed16 was given.
+if test "${enable_fixed16+set}" = set; then
+ enableval=$enable_fixed16;
+if test x$enableval = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define FIXED_POINT /**/
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define FIXED16 /**/
+_ACEOF
+
+fi
+fi
+
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then
+ enableval=$enable_debug;
+cat >>confdefs.h <<\_ACEOF
+#define SPHINX_DEBUG /**/
+_ACEOF
+
+fi
+
+
+case $host in
+ *-*-linux*|*-*-uclinux*|*-*-freebsd*|*-*-netbsd*|*-*-openbsd*)
+ # Check for ALSA, fall back to OSS
+ if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5
+$as_echo_n "checking for alsa/asoundlib.h... " >&6; }
+if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5
+$as_echo "$ac_cv_header_alsa_asoundlib_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking alsa/asoundlib.h usability" >&5
+$as_echo_n "checking alsa/asoundlib.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 <alsa/asoundlib.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 alsa/asoundlib.h presence" >&5
+$as_echo_n "checking alsa/asoundlib.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 <alsa/asoundlib.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: alsa/asoundlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: alsa/asoundlib.h: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5
+$as_echo_n "checking for alsa/asoundlib.h... " >&6; }
+if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_alsa_asoundlib_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5
+$as_echo "$ac_cv_header_alsa_asoundlib_h" >&6; }
+
+fi
+if test "x$ac_cv_header_alsa_asoundlib_h" = x""yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define AD_BACKEND_ALSA /**/
+_ACEOF
+
+ ad_files="ad_alsa.lo"
+ ad_backend="AD_BACKEND_ALSA"
+
+{ $as_echo "$as_me:$LINENO: checking for snd_pcm_open in -lasound" >&5
+$as_echo_n "checking for snd_pcm_open in -lasound... " >&6; }
+if test "${ac_cv_lib_asound_snd_pcm_open+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lasound $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 snd_pcm_open ();
+int
+main ()
+{
+return snd_pcm_open ();
+ ;
+ 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_asound_snd_pcm_open=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_asound_snd_pcm_open=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_asound_snd_pcm_open" >&5
+$as_echo "$ac_cv_lib_asound_snd_pcm_open" >&6; }
+if test "x$ac_cv_lib_asound_snd_pcm_open" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBASOUND 1
+_ACEOF
+
+ LIBS="-lasound $LIBS"
+
+fi
+
+else
+
+
+cat >>confdefs.h <<\_ACEOF
+#define AD_BACKEND_OSS /**/
+_ACEOF
+
+ ad_files="ad_oss.lo"
+ ad_backend="AD_BACKEND_OSS"
+
+fi
+
+
+ ;;
+ *-*-*cygwin*|*-*-*mingw*)
+ ad_files="play_win32.lo rec_win32.lo"
+ ad_libs="-lwinmm"
+ ad_backend="AD_BACKEND_WIN32"
+
+cat >>confdefs.h <<\_ACEOF
+#define AD_BACKEND_WIN32 /**/
+_ACEOF
+
+ ;;
+ *)
+ ad_files="ad_base.lo"
+ ad_backend="AD_BACKEND_NONE"
+ { $as_echo "$as_me:$LINENO: result: No audio interface for host type $host." >&5
+$as_echo "No audio interface for host type $host." >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define AD_BACKEND_NONE /**/
+_ACEOF
+
+ ;;
+esac
+
+
+
+
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.6b'
+macro_revision='1.3017'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ $as_unset ac_script || ac_script=
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+ 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_DUMPBIN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$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
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+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_DUMPBIN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_DUMPBIN="$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_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:9330: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:9333: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:9336: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $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
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $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
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_OBJDUMP="objdump"
+ $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_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}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="${ac_tool_prefix}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
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_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
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $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
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_STRIP="strip"
+ $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_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$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: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:$LINENO: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 10541 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat >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 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
+ lt_cv_cc_needs_belf=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ lt_cv_cc_needs_belf=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $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
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_DSYMUTIL="dsymutil"
+ $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_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $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
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_NMEDIT="nmedit"
+ $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_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $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
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_LIPO="lipo"
+ $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_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $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
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_OTOOL="otool"
+ $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_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $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
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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_OTOOL64="otool64"
+ $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_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat >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 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
+ lt_cv_ld_exported_symbols_list=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ lt_cv_ld_exported_symbols_list=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="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+
+for ac_header in dlfcn.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; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then
+ withval=$with_pic; pic_mode="$withval"
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:$LINENO: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11910: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:11914: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12249: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:12253: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12354: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:12358: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12409: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:12413: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ 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 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
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ 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 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
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat >conftest.$ac_ext <<_ACEOF
+int foo(void) {}
+_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
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+$as_echo "$archive_cmds_need_lc" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ 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 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
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+ shlibpath_overrides_runpath=yes
+fi
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Add ABI-specific directories to the system library path.
+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:$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 "x$ac_cv_lib_dl_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
+$as_echo_n "checking for shl_load... " >&6; }
+if test "${ac_cv_func_shl_load+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 shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); 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 shl_load
+
+/* 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 ();
+/* 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_shl_load || defined __stub___shl_load
+choke me
+#endif
+
+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_func_shl_load=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_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
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+$as_echo "$ac_cv_func_shl_load" >&6; }
+if test "x$ac_cv_func_shl_load" = x""yes; then
+ lt_cv_dlopen="shl_load"
+else
+ { $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 "x$ac_cv_lib_dld_shl_load" = x""yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
+$as_echo_n "checking for dlopen... " >&6; }
+if test "${ac_cv_func_dlopen+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 dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); 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 dlopen
+
+/* 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 ();
+/* 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_dlopen || defined __stub___dlopen
+choke me
+#endif
+
+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_func_dlopen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_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
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+$as_echo "$ac_cv_func_dlopen" >&6; }
+if test "x$ac_cv_func_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen"
+else
+ { $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 "x$ac_cv_lib_dl_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $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_svld_dlopen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_svld_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_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+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 dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ 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_dld_link=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dld_dld_link=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_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 15212 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 15308 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+# Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; 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_HAVE_DOXYGEN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$HAVE_DOXYGEN"; then
+ ac_cv_prog_HAVE_DOXYGEN="$HAVE_DOXYGEN" # 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_HAVE_DOXYGEN="yes"
+ $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_HAVE_DOXYGEN" && ac_cv_prog_HAVE_DOXYGEN="no"
+fi
+fi
+HAVE_DOXYGEN=$ac_cv_prog_HAVE_DOXYGEN
+if test -n "$HAVE_DOXYGEN"; then
+ { $as_echo "$as_me:$LINENO: result: $HAVE_DOXYGEN" >&5
+$as_echo "$HAVE_DOXYGEN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$HAVE_DOXYGEN" = "xyes"; then
+ BUILD_DOXYGEN_TRUE=
+ BUILD_DOXYGEN_FALSE='#'
+else
+ BUILD_DOXYGEN_TRUE='#'
+ BUILD_DOXYGEN_FALSE=
+fi
+
+
+use_python=true
+PYTHON=python
+
+# Check whether --with-python was given.
+if test "${with_python+set}" = set; then
+ withval=$with_python;
+if test x$withval = xno; then
+ use_python=false
+ PYTHON=bogus
+elif test x$withval = xyes; then
+ # No specific python binary was given, so check for it in PATH
+ use_python=true
+ PYTHON=python
+else
+ # A python was given, assume it is in the user's PATH or is fully qualified
+ use_python=true
+ PYTHON="$withval"
+ PYTHON_CONFIG="$withval"-config
+fi
+
+fi
+
+if test "x$use_python" = xtrue -a "x$PYTHON" = xpython; then
+ # 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:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PYTHON+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+ $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_path_PYTHON" && ac_cv_path_PYTHON="bogus"
+ ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ # Extract the first word of "python-config", so it can be a program name with args.
+set dummy python-config; 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_path_PYTHON_CONFIG+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $PYTHON_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $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_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $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_path_PYTHON_CONFIG" && ac_cv_path_PYTHON_CONFIG="bogus"
+ ;;
+esac
+fi
+PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
+if test -n "$PYTHON_CONFIG"; then
+ { $as_echo "$as_me:$LINENO: result: $PYTHON_CONFIG" >&5
+$as_echo "$PYTHON_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test "x$use_python" = xtrue -a "x$PYTHON" != xbogus -a "x$PYTHON_CONFIG" != xbogus; then
+ PYTHON_INCLUDES=`"$PYTHON_CONFIG" --includes`
+ CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+ if test "${ac_cv_header_Python_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for Python.h" >&5
+$as_echo_n "checking for Python.h... " >&6; }
+if test "${ac_cv_header_Python_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_Python_h" >&5
+$as_echo "$ac_cv_header_Python_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking Python.h usability" >&5
+$as_echo_n "checking Python.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 <Python.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 Python.h presence" >&5
+$as_echo_n "checking Python.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 <Python.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: Python.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: Python.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: Python.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: Python.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: Python.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: Python.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: Python.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: Python.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: Python.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: Python.h: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for Python.h" >&5
+$as_echo_n "checking for Python.h... " >&6; }
+if test "${ac_cv_header_Python_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_Python_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_Python_h" >&5
+$as_echo "$ac_cv_header_Python_h" >&6; }
+
+fi
+if test "x$ac_cv_header_Python_h" = x""yes; then
+ use_python=true
+else
+ use_python=false
+fi
+
+
+else
+ use_python=false
+ PYTHON=bogus
+fi
+if test "x$use_python" != xtrue ; then
+ { $as_echo "$as_me:$LINENO: WARNING: Disabling python since development headers were not found" >&5
+$as_echo "$as_me: WARNING: Disabling python since development headers were not found" >&2;}
+fi
+ if test "x$use_python" = "xtrue"; then
+ BUILD_PYTHON_TRUE=
+ BUILD_PYTHON_FALSE='#'
+else
+ BUILD_PYTHON_TRUE='#'
+ BUILD_PYTHON_FALSE=
+fi
+
+
+
+if test "x$PYTHON" != xbogus; then
+ # Extract the first word of "cython", so it can be a program name with args.
+set dummy cython; 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_HAVE_CYTHON+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$HAVE_CYTHON"; then
+ ac_cv_prog_HAVE_CYTHON="$HAVE_CYTHON" # 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_HAVE_CYTHON="yes"
+ $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_HAVE_CYTHON" && ac_cv_prog_HAVE_CYTHON="no"
+fi
+fi
+HAVE_CYTHON=$ac_cv_prog_HAVE_CYTHON
+if test -n "$HAVE_CYTHON"; then
+ { $as_echo "$as_me:$LINENO: result: $HAVE_CYTHON" >&5
+$as_echo "$HAVE_CYTHON" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+ if test "x$HAVE_CYTHON" = "xyes"; then
+ BUILD_CYTHON_TRUE=
+ BUILD_CYTHON_FALSE='#'
+else
+ BUILD_CYTHON_TRUE='#'
+ BUILD_CYTHON_FALSE=
+fi
+
+
+# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; 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_HAVE_PKGCONFIG+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$HAVE_PKGCONFIG"; then
+ ac_cv_prog_HAVE_PKGCONFIG="$HAVE_PKGCONFIG" # 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_HAVE_PKGCONFIG="yes"
+ $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_HAVE_PKGCONFIG" && ac_cv_prog_HAVE_PKGCONFIG="no"
+fi
+fi
+HAVE_PKGCONFIG=$ac_cv_prog_HAVE_PKGCONFIG
+if test -n "$HAVE_PKGCONFIG"; then
+ { $as_echo "$as_me:$LINENO: result: $HAVE_PKGCONFIG" >&5
+$as_echo "$HAVE_PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x$HAVE_PKGCONFIG" = "xyes"; then
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; 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_path_PKG_CONFIG+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; 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_path_ac_pt_PKG_CONFIG+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$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
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $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; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for SNDFILE" >&5
+$as_echo_n "checking for SNDFILE... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$SNDFILE_CFLAGS"; then
+ pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sndfile\"") >&5
+ ($PKG_CONFIG --exists --print-errors "sndfile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$SNDFILE_LIBS"; then
+ pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sndfile\"") >&5
+ ($PKG_CONFIG --exists --print-errors "sndfile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sndfile"`
+ else
+ SNDFILE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sndfile"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$SNDFILE_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ true
+elif test $pkg_failed = untried; then
+ true
+else
+ SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS
+ SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+for ac_header in sndfile.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
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+
+
+ac_config_files="$ac_config_files sphinxbase.pc Makefile include/Makefile include/sphinxbase/Makefile python/Makefile python/setup.py src/Makefile src/libsphinxad/Makefile src/libsphinxbase/Makefile src/libsphinxbase/util/Makefile src/libsphinxbase/feat/Makefile src/libsphinxbase/fe/Makefile src/libsphinxbase/lm/Makefile src/sphinx_fe/Makefile src/sphinx_cepview/Makefile src/sphinx_jsgf2fsg/Makefile src/sphinx_adtools/Makefile src/sphinx_lmtools/Makefile doc/Makefile doc/doxyfile test/Makefile test/unit/testfuncs.sh test/unit/Makefile test/unit/test_ad/Makefile test/unit/test_alloc/Makefile test/unit/test_bitvec/Makefile test/unit/test_case/Makefile test/unit/test_string/Makefile test/unit/test_cmdln/Makefile test/unit/test_hash/Makefile test/unit/test_matrix/Makefile test/unit/test_feat/Makefile test/unit/test_fe/Makefile test/unit/test_logmath/Makefile test/unit/test_ngram/Makefile test/unit/test_fsg/Makefile test/unit/test_thread/Makefile test/unit/test_util/Makefile test/regression/testfuncs.sh test/regression/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}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_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
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+if test -z "${LAPACK_LITE_TRUE}" && test -z "${LAPACK_LITE_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"LAPACK_LITE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"LAPACK_LITE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_LAPACK_TRUE}" && test -z "${USE_LAPACK_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"USE_LAPACK\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"USE_LAPACK\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_THREADS_TRUE}" && test -z "${USE_THREADS_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"USE_THREADS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"USE_THREADS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${FIXED_POINT_TRUE}" && test -z "${FIXED_POINT_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"FIXED_POINT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"FIXED_POINT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${BUILD_DOXYGEN_TRUE}" && test -z "${BUILD_DOXYGEN_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"BUILD_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${BUILD_PYTHON_TRUE}" && test -z "${BUILD_PYTHON_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"BUILD_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${BUILD_CYTHON_TRUE}" && test -z "${BUILD_CYTHON_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_CYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"BUILD_CYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$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 sphinxbase $as_me 0.7, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+sphinxbase config.status 0.7
+configured by $0, generated by GNU Autoconf 2.63,
+ 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'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$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;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; };;
+ --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
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
+enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
+host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
+host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
+host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
+build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
+build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
+build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
+SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
+Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
+GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
+EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
+FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
+LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
+NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
+LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
+exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
+AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
+GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
+SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
+ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
+need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
+LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
+libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
+version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
+striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+SHELL \
+ECHO \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
+ ;;
+esac
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+_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
+ "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
+ "include/sphinx_config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/sphinx_config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "sphinxbase.pc") CONFIG_FILES="$CONFIG_FILES sphinxbase.pc" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+ "include/sphinxbase/Makefile") CONFIG_FILES="$CONFIG_FILES include/sphinxbase/Makefile" ;;
+ "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
+ "python/setup.py") CONFIG_FILES="$CONFIG_FILES python/setup.py" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "src/libsphinxad/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsphinxad/Makefile" ;;
+ "src/libsphinxbase/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsphinxbase/Makefile" ;;
+ "src/libsphinxbase/util/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsphinxbase/util/Makefile" ;;
+ "src/libsphinxbase/feat/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsphinxbase/feat/Makefile" ;;
+ "src/libsphinxbase/fe/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsphinxbase/fe/Makefile" ;;
+ "src/libsphinxbase/lm/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsphinxbase/lm/Makefile" ;;
+ "src/sphinx_fe/Makefile") CONFIG_FILES="$CONFIG_FILES src/sphinx_fe/Makefile" ;;
+ "src/sphinx_cepview/Makefile") CONFIG_FILES="$CONFIG_FILES src/sphinx_cepview/Makefile" ;;
+ "src/sphinx_jsgf2fsg/Makefile") CONFIG_FILES="$CONFIG_FILES src/sphinx_jsgf2fsg/Makefile" ;;
+ "src/sphinx_adtools/Makefile") CONFIG_FILES="$CONFIG_FILES src/sphinx_adtools/Makefile" ;;
+ "src/sphinx_lmtools/Makefile") CONFIG_FILES="$CONFIG_FILES src/sphinx_lmtools/Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "doc/doxyfile") CONFIG_FILES="$CONFIG_FILES doc/doxyfile" ;;
+ "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
+ "test/unit/testfuncs.sh") CONFIG_FILES="$CONFIG_FILES test/unit/testfuncs.sh" ;;
+ "test/unit/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/Makefile" ;;
+ "test/unit/test_ad/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_ad/Makefile" ;;
+ "test/unit/test_alloc/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_alloc/Makefile" ;;
+ "test/unit/test_bitvec/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_bitvec/Makefile" ;;
+ "test/unit/test_case/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_case/Makefile" ;;
+ "test/unit/test_string/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_string/Makefile" ;;
+ "test/unit/test_cmdln/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_cmdln/Makefile" ;;
+ "test/unit/test_hash/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_hash/Makefile" ;;
+ "test/unit/test_matrix/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_matrix/Makefile" ;;
+ "test/unit/test_feat/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_feat/Makefile" ;;
+ "test/unit/test_fe/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_fe/Makefile" ;;
+ "test/unit/test_logmath/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_logmath/Makefile" ;;
+ "test/unit/test_ngram/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_ngram/Makefile" ;;
+ "test/unit/test_fsg/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_fsg/Makefile" ;;
+ "test/unit/test_thread/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_thread/Makefile" ;;
+ "test/unit/test_util/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/test_util/Makefile" ;;
+ "test/regression/testfuncs.sh") CONFIG_FILES="$CONFIG_FILES test/regression/testfuncs.sh" ;;
+ "test/regression/Makefile") CONFIG_FILES="$CONFIG_FILES test/regression/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
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ 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='\r'
+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; }; }
+
+ 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_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 = "\a"
+
+}
+{
+ 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"
+
+# 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 >"$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_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+ { (exit 1); exit 1; }; }
+ 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 = "\a"
+}
+/^[\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_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+ { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { $as_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
+ 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:$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 "$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; }; }
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || { { $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; }; }
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || { { $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; }; }
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file. Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*) set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir=$dirpart/$fdir
+ 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; }; }; }
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that does not interpret backslashes.
+ECHO=$lt_ECHO
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1+=\$2"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+ ;;
+ esac
+
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
+
+ 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
+
--- /dev/null
+dnl Welcome to the Sphinx automated build system.
+dnl try not to hurt yourself ;)
+
+AC_INIT([sphinxbase], 0.7)
+AC_CONFIG_HEADERS([include/config.h include/sphinx_config.h])
+AM_INIT_AUTOMAKE([no-define])
+AC_CONFIG_MACRO_DIR([m4])
+
+CFLAGS=${CFLAGS:--g -O2 -Wall}
+
+AC_CANONICAL_HOST
+
+dnl
+dnl Set proper compiler flags and such for some platforms
+dnl
+case $host in
+ arm-wince-pe*)
+ CFLAGS=${CFLAGS:--march=armv4 -mapcs-32 -malignment-traps}
+ LIBS='-lc -lgcc -lwinsock -lcoredll'
+ CFLAGS="$CFLAGS -DNEWLIB -DSARM -DWIN32 -DGNUWINCE"
+ ;;
+ *uclinux*)
+ # uClinux needs special "flat" binaries
+ LDFLAGS="$LDFLAGS -Wl,-elf2flt"
+ ;;
+ *)
+ ;;
+esac
+
+AC_ISC_POSIX
+AC_PROG_CC
+AC_PROG_CC_STDC
+
+# We don't bother ourselves with flex checks until the rest of the world has an up-to-date Flex
+# We need specific bison extensions, so check for bison
+AC_CHECK_PROG(YACC, bison, [bison -y], no)
+if test "x$YACC" = "xno";
+then
+ AC_MSG_ERROR([You need to install bison])
+fi
+AC_ARG_VAR(YACC,[Bison command])
+
+AC_HEADER_STDC
+AC_C_BIGENDIAN
+AC_TYPE_SIGNAL
+AC_CHECK_TYPES(long long)
+AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_FUNCS([popen perror snprintf])
+AC_CHECK_HEADER(errno.h)
+AM_ICONV
+
+dnl
+dnl Check for Lapack stuff unless disabled
+dnl
+use_lapack=true
+use_internal_lapack=false
+AC_ARG_WITH(lapack,
+ AS_HELP_STRING([--without-lapack],
+ [Disable matrix algebra support (depends on LAPACK)]),[
+if test x$withval = xno; then
+ use_lapack=false
+fi
+])
+if test x$use_lapack = xtrue; then
+ AC_CHECK_LIB(lapack, sgesv_,,use_internal_lapack=true)
+ if test x$use_internal_lapack != xtrue; then
+ AC_CHECK_LIB(blas, sgemm_,,use_internal_lapack=true)
+ fi
+ AC_DEFINE(WITH_LAPACK, [], [Enable matrix algebra with LAPACK])
+fi
+AM_CONDITIONAL(LAPACK_LITE, test x$use_internal_lapack = xtrue)
+AM_CONDITIONAL(USE_LAPACK, test x$use_lapack = xtrue)
+
+dnl
+dnl Just make sure we have this...
+dnl
+AC_CHECK_LIB(m, log)
+
+dnl
+dnl Enable thread-safe versions of some internal functions
+dnl
+threadsafe=auto
+AC_ARG_ENABLE(threads,
+ AS_HELP_STRING([--disable-threads],
+ [Disable thread-safe versions of memory allocation functions (default: check)]),[
+if test x$enableval != x; then
+ threadsafe=$enableval
+fi
+])
+if test x$threadsafe != xno; then
+ threads=false
+ dnl
+ dnl Can't seem to check for Windows API functions, but that's okay
+ dnl because we know they will be there...
+ dnl
+ case $host in
+ *cygwin*|*mingw*|*wince*)
+ threads=true
+ ;;
+ *)
+ AC_CHECK_HEADERS([pthread.h], [threads=true])
+ AC_CHECK_LIB(pthread, pthread_create)
+ ;;
+ esac
+ if test x$threads = xtrue; then
+ AC_DEFINE(ENABLE_THREADS, [], [Enable thread safety])
+ threadsafe=yes
+ elif test x$threadsafe = xyes; then
+ AC_MSG_ERROR(--enable-threads was given but test for thread functions failed!)
+ else
+ threadsafe=no
+ fi
+fi
+AM_CONDITIONAL(USE_THREADS, test x$threadsafe = xyes)
+
+dnl
+dnl Allow compilation for fixed or floating-point MFCC and GMM computation
+dnl
+fixed_point=false
+AC_ARG_ENABLE(fixed,
+ AS_HELP_STRING([--enable-fixed=RADIX],
+ [Use 32-bit fixed-point for MFCC and GMM computation,
+ optionally specifying a radix point]),[
+if test x$enableval = xyes; then
+ AC_DEFINE(FIXED_POINT)
+ fixed_point=true
+else
+ AC_DEFINE(FIXED_POINT, [], [Use fixed-point computation])
+ AC_DEFINE_UNQUOTED(DEFAULT_RADIX,$enableval,[Default radix point for fixed-point])
+fi])
+AM_CONDITIONAL(FIXED_POINT, test x$fixed_point = xtrue)
+
+dnl
+dnl Enable 16-bit fixed-point (Q15) format for MFCC (less accurate, more fast)
+dnl
+AC_ARG_ENABLE(fixed16,
+ AS_HELP_STRING([--enable-fixed16],
+ [Use 16-bit fixed-point for MFCC computation]),[
+if test x$enableval = xyes; then
+ AC_DEFINE(FIXED_POINT, [], [Use fixed-point computation])
+ AC_DEFINE(FIXED16, [], [Use Q15 fixed-point computation])
+fi])
+
+dnl
+dnl Enable debugging
+dnl
+AC_ARG_ENABLE(debug,
+ AS_HELP_STRING([--enable-debug],
+ [Enable debugging output]),
+ AC_DEFINE(SPHINX_DEBUG, [],
+ [Enable debugging output]))
+
+dnl
+dnl determine audio type or use none if none supported on this platform
+dnl
+case $host in
+ *-*-linux*|*-*-uclinux*|*-*-freebsd*|*-*-netbsd*|*-*-openbsd*)
+ # Check for ALSA, fall back to OSS
+ AC_CHECK_HEADER(alsa/asoundlib.h,[
+ AC_DEFINE(AD_BACKEND_ALSA, [],
+ [Use ALSA library for sound I/O])
+ ad_files="ad_alsa.lo"
+ ad_backend="AD_BACKEND_ALSA"
+ AC_CHECK_LIB(asound, snd_pcm_open)],[
+ AC_DEFINE(AD_BACKEND_OSS, [],
+ [Use OSS for sound I/O])
+ ad_files="ad_oss.lo"
+ ad_backend="AD_BACKEND_OSS"
+ ])
+ ;;
+ *-*-*cygwin*|*-*-*mingw*)
+ ad_files="play_win32.lo rec_win32.lo"
+ ad_libs="-lwinmm"
+ ad_backend="AD_BACKEND_WIN32"
+ AC_DEFINE(AD_BACKEND_WIN32, [], [Use WinMM interface for sound I/O])
+ ;;
+ *)
+ ad_files="ad_base.lo"
+ ad_backend="AD_BACKEND_NONE"
+ AC_MSG_RESULT([No audio interface for host type $host.])
+ AC_DEFINE(AD_BACKEND_NONE, [], [No interface for sound I/O])
+ ;;
+esac
+
+AC_SUBST(ad_files)
+AC_SUBST(ad_libs)
+AC_SUBST(ad_backend)
+
+AM_PROG_LIBTOOL
+
+dnl
+dnl Check for Doxygen, and build dox if present
+dnl
+AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, yes, no)
+AM_CONDITIONAL(BUILD_DOXYGEN, test "x$HAVE_DOXYGEN" = "xyes")
+
+dnl
+dnl Check for Python, and build python module if present
+dnl
+use_python=true
+PYTHON=python
+AC_ARG_WITH(python,
+ AS_HELP_STRING([--without-python],
+ [Disable Python extension]),[
+if test x$withval = xno; then
+ use_python=false
+ PYTHON=bogus
+elif test x$withval = xyes; then
+ # No specific python binary was given, so check for it in PATH
+ use_python=true
+ PYTHON=python
+else
+ # A python was given, assume it is in the user's PATH or is fully qualified
+ use_python=true
+ PYTHON="$withval"
+ PYTHON_CONFIG="$withval"-config
+fi
+])
+if test "x$use_python" = xtrue -a "x$PYTHON" = xpython; then
+ AC_PATH_PROG(PYTHON, python, bogus)
+ AC_PATH_PROG(PYTHON_CONFIG, python-config, bogus)
+fi
+if test "x$use_python" = xtrue -a "x$PYTHON" != xbogus -a "x$PYTHON_CONFIG" != xbogus; then
+ PYTHON_INCLUDES=`"$PYTHON_CONFIG" --includes`
+ CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+ AC_CHECK_HEADER(Python.h,use_python=true,use_python=false)
+else
+ use_python=false
+ PYTHON=bogus
+fi
+if test "x$use_python" != xtrue ; then
+ AC_WARN([Disabling python since development headers were not found])
+fi
+AM_CONDITIONAL(BUILD_PYTHON, test "x$use_python" = "xtrue")
+AC_SUBST(PYTHON)
+
+dnl
+dnl Check for Cython, and rebuild python module if present
+dnl
+if test "x$PYTHON" != xbogus; then
+ AC_CHECK_PROG(HAVE_CYTHON, cython, yes, no)
+fi
+AM_CONDITIONAL(BUILD_CYTHON, test "x$HAVE_CYTHON" = "xyes")
+
+dnl
+dnl Check for pkgconfig
+dnl
+AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, yes, no)
+
+dnl
+dnl Check for libsndfile
+dnl
+if test "x$HAVE_PKGCONFIG" = "xyes"; then
+ PKG_CHECK_MODULES(SNDFILE,sndfile,,true)
+ AC_CHECK_HEADERS([sndfile.h])
+fi
+AC_SUBST(SNDFILE_LIBS)
+AC_SUBST(SNDFILE_CFLAGS)
+
+AC_CONFIG_FILES([
+sphinxbase.pc
+Makefile
+include/Makefile
+include/sphinxbase/Makefile
+python/Makefile
+python/setup.py
+src/Makefile
+src/libsphinxad/Makefile
+src/libsphinxbase/Makefile
+src/libsphinxbase/util/Makefile
+src/libsphinxbase/feat/Makefile
+src/libsphinxbase/fe/Makefile
+src/libsphinxbase/lm/Makefile
+src/sphinx_fe/Makefile
+src/sphinx_cepview/Makefile
+src/sphinx_jsgf2fsg/Makefile
+src/sphinx_adtools/Makefile
+src/sphinx_lmtools/Makefile
+doc/Makefile
+doc/doxyfile
+test/Makefile
+test/unit/testfuncs.sh
+test/unit/Makefile
+test/unit/test_ad/Makefile
+test/unit/test_alloc/Makefile
+test/unit/test_bitvec/Makefile
+test/unit/test_case/Makefile
+test/unit/test_string/Makefile
+test/unit/test_cmdln/Makefile
+test/unit/test_hash/Makefile
+test/unit/test_matrix/Makefile
+test/unit/test_feat/Makefile
+test/unit/test_fe/Makefile
+test/unit/test_logmath/Makefile
+test/unit/test_ngram/Makefile
+test/unit/test_fsg/Makefile
+test/unit/test_thread/Makefile
+test/unit/test_util/Makefile
+test/regression/testfuncs.sh
+test/regression/Makefile
+])
+AC_OUTPUT
--- /dev/null
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2007-03-29.01
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 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., 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 Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- /dev/null
+EXTRA_DIST = args2man.pl \
+ sphinx_cepview.1.in \
+ sphinx_fe.1.in \
+ sphinx_pitch.1.in \
+ sphinx_cont_adseg.1 \
+ sphinx_cont_fileseg.1 \
+ sphinx_lm_sort.1
+
+if BUILD_DOXYGEN
+all-local: html/index.html
+endif
+
+headers = \
+ $(top_srcdir)/include/sphinxbase/ad.h \
+ $(top_srcdir)/include/sphinxbase/agc.h \
+ $(top_srcdir)/include/sphinxbase/bio.h \
+ $(top_srcdir)/include/sphinxbase/bitvec.h \
+ $(top_srcdir)/include/sphinxbase/byteorder.h \
+ $(top_srcdir)/include/sphinxbase/case.h \
+ $(top_srcdir)/include/sphinxbase/ckd_alloc.h \
+ $(top_srcdir)/include/sphinxbase/clapack_lite.h \
+ $(top_srcdir)/include/sphinxbase/cmd_ln.h \
+ $(top_srcdir)/include/sphinxbase/cmn.h \
+ $(top_srcdir)/include/sphinxbase/cont_ad.h \
+ $(top_srcdir)/include/sphinxbase/err.h \
+ $(top_srcdir)/include/sphinxbase/f2c.h \
+ $(top_srcdir)/include/sphinxbase/feat.h \
+ $(top_srcdir)/include/sphinxbase/fe.h \
+ $(top_srcdir)/include/sphinxbase/filename.h \
+ $(top_srcdir)/include/sphinxbase/fixpoint.h \
+ $(top_srcdir)/include/sphinxbase/fsg_model.h \
+ $(top_srcdir)/include/sphinxbase/genrand.h \
+ $(top_srcdir)/include/sphinxbase/glist.h \
+ $(top_srcdir)/include/sphinxbase/hash_table.h \
+ $(top_srcdir)/include/sphinxbase/heap.h \
+ $(top_srcdir)/include/sphinxbase/info.h \
+ $(top_srcdir)/include/sphinxbase/jsgf.h \
+ $(top_srcdir)/include/sphinxbase/libutil.h \
+ $(top_srcdir)/include/sphinxbase/listelem_alloc.h \
+ $(top_srcdir)/include/sphinxbase/logmath.h \
+ $(top_srcdir)/include/sphinxbase/matrix.h \
+ $(top_srcdir)/include/sphinxbase/mmio.h \
+ $(top_srcdir)/include/sphinxbase/mulaw.h \
+ $(top_srcdir)/include/sphinxbase/ngram_model.h \
+ $(top_srcdir)/include/sphinxbase/pio.h \
+ $(top_srcdir)/include/sphinxbase/prim_type.h \
+ $(top_srcdir)/include/sphinxbase/profile.h \
+ $(top_srcdir)/include/sphinxbase/sphinxbase_export.h \
+ $(top_srcdir)/include/sphinxbase/strfuncs.h \
+ $(top_srcdir)/include/sphinxbase/unlimit.h \
+ $(top_srcdir)/include/sphinxbase/yin.h
+
+latex/refman.pdf: doxyfile $(headers)
+ doxygen
+ $(MAKE) -C latex refman.pdf
+
+html/index.html: doxyfile $(headers)
+ doxygen
+
+clean-local:
+ -rm -rf html latex doxytags
+
+# Totally CMU-specific rule for uploading documentation
+upload: html/index.html
+ rsync -av html/ fife:/usr12/apache2/htdocs/sphinx/doc/doxygen/sphinxbase/
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/doxyfile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES = doxyfile
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = args2man.pl \
+ sphinx_cepview.1.in \
+ sphinx_fe.1.in \
+ sphinx_pitch.1.in \
+ sphinx_cont_adseg.1 \
+ sphinx_cont_fileseg.1 \
+ sphinx_lm_sort.1
+
+headers = \
+ $(top_srcdir)/include/sphinxbase/ad.h \
+ $(top_srcdir)/include/sphinxbase/agc.h \
+ $(top_srcdir)/include/sphinxbase/bio.h \
+ $(top_srcdir)/include/sphinxbase/bitvec.h \
+ $(top_srcdir)/include/sphinxbase/byteorder.h \
+ $(top_srcdir)/include/sphinxbase/case.h \
+ $(top_srcdir)/include/sphinxbase/ckd_alloc.h \
+ $(top_srcdir)/include/sphinxbase/clapack_lite.h \
+ $(top_srcdir)/include/sphinxbase/cmd_ln.h \
+ $(top_srcdir)/include/sphinxbase/cmn.h \
+ $(top_srcdir)/include/sphinxbase/cont_ad.h \
+ $(top_srcdir)/include/sphinxbase/err.h \
+ $(top_srcdir)/include/sphinxbase/f2c.h \
+ $(top_srcdir)/include/sphinxbase/feat.h \
+ $(top_srcdir)/include/sphinxbase/fe.h \
+ $(top_srcdir)/include/sphinxbase/filename.h \
+ $(top_srcdir)/include/sphinxbase/fixpoint.h \
+ $(top_srcdir)/include/sphinxbase/fsg_model.h \
+ $(top_srcdir)/include/sphinxbase/genrand.h \
+ $(top_srcdir)/include/sphinxbase/glist.h \
+ $(top_srcdir)/include/sphinxbase/hash_table.h \
+ $(top_srcdir)/include/sphinxbase/heap.h \
+ $(top_srcdir)/include/sphinxbase/info.h \
+ $(top_srcdir)/include/sphinxbase/jsgf.h \
+ $(top_srcdir)/include/sphinxbase/libutil.h \
+ $(top_srcdir)/include/sphinxbase/listelem_alloc.h \
+ $(top_srcdir)/include/sphinxbase/logmath.h \
+ $(top_srcdir)/include/sphinxbase/matrix.h \
+ $(top_srcdir)/include/sphinxbase/mmio.h \
+ $(top_srcdir)/include/sphinxbase/mulaw.h \
+ $(top_srcdir)/include/sphinxbase/ngram_model.h \
+ $(top_srcdir)/include/sphinxbase/pio.h \
+ $(top_srcdir)/include/sphinxbase/prim_type.h \
+ $(top_srcdir)/include/sphinxbase/profile.h \
+ $(top_srcdir)/include/sphinxbase/sphinxbase_export.h \
+ $(top_srcdir)/include/sphinxbase/strfuncs.h \
+ $(top_srcdir)/include/sphinxbase/unlimit.h \
+ $(top_srcdir)/include/sphinxbase/yin.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+doxyfile: $(top_builddir)/config.status $(srcdir)/doxyfile.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+@BUILD_DOXYGEN_FALSE@all-local:
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+@BUILD_DOXYGEN_TRUE@all-local: html/index.html
+
+latex/refman.pdf: doxyfile $(headers)
+ doxygen
+ $(MAKE) -C latex refman.pdf
+
+html/index.html: doxyfile $(headers)
+ doxygen
+
+clean-local:
+ -rm -rf html latex doxytags
+
+# Totally CMU-specific rule for uploading documentation
+upload: html/index.html
+ rsync -av html/ fife:/usr12/apache2/htdocs/sphinx/doc/doxygen/sphinxbase/
+# 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:
--- /dev/null
+#!/usr/bin/env perl
+use strict;
+use Pod::Usage;
+
+my $program = shift;
+pod2usage(2) unless defined($program);
+
+open ARGTEXT, "$program 2>&1 |" or die "Failed to run $program: $!";
+my $inargs = 0;
+my @args;
+while (<ARGTEXT>) {
+ chomp;
+ if (/^\[NAME/) {
+ $inargs = 1;
+ next;
+ }
+ next unless $inargs;
+ last if /^\s*$/;
+ my ($name, $deflt, $descr) = /^(\S+)\s+(\S+)\s+(.*)$/;
+ push @args, [$name, $deflt, $descr];
+}
+die "No arguments found!" unless @args;
+
+while (<>) {
+ if (/\.\\\" ### ARGUMENTS ###/) {
+ foreach (@args) {
+ my ($name, $deflt, $descr) = @$_;
+ $name =~ s/-/\\-/g;
+ $descr =~ s/ (-\S+)/ \\fB\\$1\\fR/g;
+ print <<"EOA";
+.TP
+.B $name
+$descr
+EOA
+ }
+ }
+ else {
+ print;
+ }
+}
+
+__END__
+
+=head1 NAME
+
+sphinx_args2man - Generate manual pages from the output of Sphinx programs
+
+=head1 SYNOPSIS
+
+B<sphinx_args2man> I<PROGRAM> E<lt> I<TEMPLATE> E<gt> I<OUTPUT>
+
+=head1 DESCRIPTION
+
+This program runs a Sphinx program I<PROGRAM>, reads a template file
+from standard input, and writes a manual page in L<man(7)> format to
+standard output.
+
+The template file is a manual page in L<man(7)> format, containing a
+comment line of the form:
+
+ .\" ### ARGUMENTS ###
+
+Which will be replaced in the output with the arguments and their
+descriptions from I<PROGRAM>.
+
+=head1 AUTHOR
+
+David Huggins-Daines <dhuggins@cs.cmu.edu>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2007 Carnegie Mellon University. You may copy and
+distribute this file under the same conditions as the rest of
+PocketSphinx. See the file COPYING for more information.
+
+=cut
--- /dev/null
+# Doxyfile 1.5.2
+
+# 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
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file that
+# follow. The default is UTF-8 which is also the encoding used for all text before
+# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
+# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
+# possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = SphinxBase
+
+# 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 = 0.6
+
+# 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 = @builddir@
+
+# 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:
+# Afrikaans, Arabic, 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, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# 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 = YES
+
+# 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 = @top_srcdir@
+
+# 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 = YES
+
+# 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 = YES
+
+# 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 you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_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 = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# 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 NO.
+
+SHOW_DIRECTORIES = NO
+
+# 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 = @top_srcdir@/include @top_srcdir@/src
+
+# This tag can be used to specify the character encoding of the source files that
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# 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 = YES
+
+# 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 = */.svn/* */.deps/* */.libs/* *.py
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the output.
+# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
+# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# 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 = YES
+
+# 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 REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = 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 = NO
+
+#---------------------------------------------------------------------------
+# 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 = YES
+
+# 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 = letter
+
+# 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 = @builddir@/doxytags
+
+# 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
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
+# be found in the default search path.
+
+MSCGEN_PATH =
+
+# 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 = NO
+
+# 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 = NO
+
+# 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 CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a caller 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 caller graphs for selected
+# functions only using the \callergraph command.
+
+CALLER_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_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen will always
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# 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
--- /dev/null
+.TH SPHINX_CEPVIEW 1 "2007-08-27"
+.SH NAME
+sphinx_cepview \- View acoustic feature files
+.SH SYNOPSIS
+.B sphinx_cepview
+[\fI options \fR]...
+.SH DESCRIPTION
+.PP
+This program reads acoustic feature files in Sphinx format and
+displays their contents as text for inspection.
+.\" ### ARGUMENTS ###
+.SH AUTHOR
+Written by numerous people at CMU from 1994 onwards. This manual page
+by David Huggins-Daines <dhuggins@cs.cmu.edu>
+.SH COPYRIGHT
+Copyright \(co 1994-2007 Carnegie Mellon University. See the file
+\fICOPYING\fR included with this package for more information.
+.br
--- /dev/null
+.TH SPHINX_CONT_ADSEG 1 "2008-05-12"
+.SH NAME
+sphinx_cont_adseg \- Read audio from the audio device and segment it
+.SH SYNOPSIS
+.B sphinx_cont_adseg
+.I sampling-rate
+.I silence-threshold
+.SH DESCRIPTION
+.PP
+This program reads audio from the system audio device and segments it
+into individual non-silence regions. The argument
+.I sampling-rate
+is the sampling rate to read audio at (e.g. 16000), while the argument
+.I silence-threshold
+is the number of seconds to wait before deciding that a non-silence
+region is done (e.g. 1.0).
+.SH AUTHOR
+Written by M. K. Ravishankar <rkm@cs.cmu.edu>. This manual page
+by David Huggins-Daines <dhuggins@cs.cmu.edu>
+.SH COPYRIGHT
+Copyright \(co 1999-2001 Carnegie Mellon University. See the file
+\fICOPYING\fR included with this package for more information.
+.br
--- /dev/null
+.TH SPHINX_CONT_ADSEG 1 "2008-05-12"
+.SH NAME
+sphinx_cont_fileseg \- Segment a waveform file into non-silence regions
+.SH SYNOPSIS
+.B sphinx_cont_fileseg
+[
+.B -? | -h
+]
+[
+.B \-d | \-debug
+]
+[
+.B \-sps
+.I sampling-rate (16000)
+]
+[
+.B \-b | \-byteswap
+]
+[
+{
+.B \-s | \-silsep
+}
+.I length-silence-separator(sec) (0.5)
+]
+[
+.B \-w | \-writeseg
+]
+[
+.B \-min-noise
+.I min-noise
+]
+[
+.B \-max-noise
+.I max-noise
+]
+[
+.B \-delta-sil
+.I delta-sil
+]
+[
+.B \-delta-speech
+.I delta-speech
+]
+[
+.B \-sil-onset
+.I sil-onset
+]
+[
+.B -speech-onset
+.I speech-onset
+]
+[
+.B \-adapt-rate
+.I adapt-rate
+]
+[
+.B \-max-adreadsize
+.I ad_read_blksize
+]
+[
+.B -c
+.I copy-input-file
+]
+[
+.B -r | -rawmode
+]
+.B -i
+.I input-file
+.SH DESCRIPTION
+.PP
+This program reads an input file and segments it
+into individual non-silence regions.
+.SH AUTHOR
+Written by M. K. Ravishankar <rkm@cs.cmu.edu>. This (rather lousy) manual page
+by David Huggins-Daines <dhuggins@cs.cmu.edu>
+.SH COPYRIGHT
+Copyright \(co 1999-2001 Carnegie Mellon University. See the file
+\fICOPYING\fR included with this package for more information.
+.br
--- /dev/null
+.TH SPHINX_FE 1 "2007-08-27"
+.SH NAME
+sphinx_fe \- Convert audio files to acoustic feature files
+.SH SYNOPSIS
+.B sphinx_fe
+[\fI options \fR]...
+.SH DESCRIPTION
+.PP
+This program converts audio files (in either Microsoft WAV, NIST
+Sphere, or raw format) to acoustic feature files for input to
+batch-mode speech recognition. The resulting files are also useful
+for various other things. A list of options follows:
+.\" ### ARGUMENTS ###
+.PP
+Currently the only kind of features supported are MFCCs (mel-frequency
+cepstral coefficients). There are numerous options which control the
+properties of the output features. It is \fBVERY\fR important that
+you document the specific set of flags used to create any given set of
+feature files, since this information is \fBNOT\fR recorded in the
+files themselves, and any mismatch between the parameters used to
+extract features for recognition and those used to extract features
+for training will cause recognition to fail.
+.SH AUTHOR
+Written by numerous people at CMU from 1994 onwards. This manual page
+by David Huggins-Daines <dhuggins@cs.cmu.edu>
+.SH COPYRIGHT
+Copyright \(co 1994-2007 Carnegie Mellon University. See the file
+\fICOPYING\fR included with this package for more information.
+.br
--- /dev/null
+.TH SPHINX_LM_SORT 1 "2008-06-26"
+.SH NAME
+sphinx_lm_sort \- Order N-Grams in a language model for Sphinx
+.SH SYNOPSIS
+.B sphinx_lm_sort
+<
+.I input_lm
+>
+.I output_lm
+.SH DESCRIPTION
+.PP
+This program arranges the N-Grams in an ARPA-format language model to
+be acceptable to Sphinx. This is necessary if you created the
+language model with SRILM or any other tool which is not as strict
+about ordering N-Grams in its output.
+.SH AUTHOR
+David Huggins-Daines <dhuggins@cs.cmu.edu>
+.SH COPYRIGHT
+Copyright \(co 2008 Carnegie Mellon University. See the file
+\fICOPYING\fR included with this package for more information.
+.br
--- /dev/null
+.TH SPHINX_PITCH 1 "2007-05-12"
+.SH NAME
+sphinx_pitch \- Extract pitch from audio files
+.SH SYNOPSIS
+.B sphinx_pitch
+[\fI options \fR]...
+.SH DESCRIPTION
+.PP
+This program reads audio files and analyzes them for pitch and voicing.
+.\" ### ARGUMENTS ###
+.SH AUTHOR
+David Huggins-Daines <dhuggins@cs.cmu.edu>
+.SH COPYRIGHT
+Copyright \(co 2007-2008 Carnegie Mellon University. See the file
+\fICOPYING\fR included with this package for more information.
+.br
--- /dev/null
+@ECHO OFF\r
+\r
+REM Bldmake-generated batch file - ABLD.BAT\r
+REM ** DO NOT EDIT **\r
+\r
+perl -S ABLD.PL "\sphinx\sphinxbase\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9\r
+if errorlevel==1 goto CheckPerl\r
+goto End\r
+\r
+:CheckPerl\r
+perl -v >NUL\r
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?\r
+goto End\r
+\r
+:End\r
--- /dev/null
+/*\r
+============================================================================\r
+ Name : bld.inf\r
+ Author : \r
+ Copyright : Your copyright notice\r
+ Description : This file provides the information required for building the\r
+ whole of a sphinxbase_s60.\r
+============================================================================\r
+*/\r
+\r
+PRJ_PLATFORMS\r
+DEFAULT\r
+\r
+PRJ_MMPFILES\r
+sphinxbase.mmp\r
--- /dev/null
+/*\r
+============================================================================\r
+ Name : sphinxbase.mmp\r
+ Author : \r
+ Copyright : Your copyright notice\r
+ Description : This is the project specification file for sphinxbase.\r
+============================================================================\r
+*/\r
+\r
+TARGET sphinxbase.dll\r
+TARGETTYPE STDDLL\r
+EPOCALLOWDLLDATA \r
+UID 0x20004c45 0xe000acd4\r
+EPOCSTACKSIZE 0x14000\r
+\r
+USERINCLUDE ..\include ..\include\sphinxbase ..\include\s60\r
+SYSTEMINCLUDE \epoc32\include \epoc32\include\stdapis \epoc32\include\stdapis\sys\r
+SYSTEMINCLUDE \epoc32\include\mmf\server \epoc32\include\platform\r
+\r
+#ifdef ENABLE_ABIV2_MODE\r
+DEBUGGABLE_UDEBONLY\r
+#endif\r
+SOURCEPATH ..\src\libsphinxad\r
+SOURCE cont_ad_base.c\r
+SOURCEPATH ..\src\libsphinxbase\fe\r
+SOURCE fe_interface.c fe_sigproc.c fe_warp.c fe_warp_affine.c fe_warp_inverse_linear.c fe_warp_piecewise_linear.c fixlog.c yin.c\r
+SOURCEPATH ..\src\libsphinxbase\feat\r
+SOURCE agc.c cmn.c cmn_prior.c feat.c lda.c\r
+SOURCEPATH ..\src\libsphinxbase\lm\r
+SOURCE fsg_model.c jsgf.c jsgf_parser.c jsgf_scanner.c lm3g_model.c ngram_model.c ngram_model_arpa.c ngram_model_dmp.c ngram_model_dmp32.c ngram_model_set.c\r
+SOURCEPATH ..\src\libsphinxbase\util\r
+SOURCE bio.c bitvec.c blas_lite.c case.c ckd_alloc.c cmd_ln.c dtoa.c err.c f2c_lite.c filename.c genrand.c glist.c hash_table.c heap.c huff_code.c info.c listelem_alloc.c logmath.c matrix.c mmio.c pio.c profile.c sbthread.c slamch.c slapack_lite.c strfuncs.c unlimit.c utf8.c\r
+SOURCEPATH ..\src\libsphinxad\r
+SOURCE ad_s60.cpp\r
+\r
+\r
+/*EXPORTUNFROZEN*/ /*comment to release*/\r
+\r
+LIBRARY libm.lib libpthread.lib mediaclientaudioinputstream.lib\r
+CAPABILITY AllFiles MultimediaDD UserEnvironment\r
--- /dev/null
+SUBDIRS = sphinxbase
+
+pkginclude_HEADERS = \
+ sphinx_config.h
+
+EXTRA_DIST = \
+ wince/sphinx_config.h \
+ wince/config.h \
+ win32/sphinx_config.h \
+ win32/config.h \
+ s60/config.h \
+ s60/sphinx_config.h \
+ android/config.h \
+ android/sphinx_config.h
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include
+DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(srcdir)/sphinx_config.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h sphinx_config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pkgincludedir)"
+pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(pkginclude_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = sphinxbase
+pkginclude_HEADERS = \
+ sphinx_config.h
+
+EXTRA_DIST = \
+ wince/sphinx_config.h \
+ wince/config.h \
+ win32/sphinx_config.h \
+ win32/config.h \
+ s60/config.h \
+ s60/sphinx_config.h \
+ android/config.h \
+ android/sphinx_config.h
+
+all: config.h sphinx_config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status include/config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+sphinx_config.h: stamp-h2
+ @if test ! -f $@; then \
+ rm -f stamp-h2; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h2; \
+ else :; fi
+
+stamp-h2: $(srcdir)/sphinx_config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h2
+ cd $(top_builddir) && $(SHELL) ./config.status include/sphinx_config.h
+
+distclean-hdr:
+ -rm -f config.h stamp-h1 sphinx_config.h stamp-h2
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in sphinx_config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in sphinx_config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in sphinx_config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) config.h.in sphinx_config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(HEADERS) config.h sphinx_config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pkgincludeHEADERS
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkgincludeHEADERS install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-pkgincludeHEADERS
+
+# 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:
--- /dev/null
+/* include/config.h. Generated from config.h.in by configure. */
+/* include/config.h.in. Generated from configure.in by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* Use ALSA library for sound I/O */
+/* #define AD_BACKEND_ALSA */
+
+/* No interface for sound I/O */
+#undef AD_BACKEND_NONE
+
+/* Use OSS for sound I/O */
+/* #undef AD_BACKEND_OSS */
+
+/* Use WinMM interface for sound I/O */
+/* #undef AD_BACKEND_WIN32 */
+
+/* Default radix point for fixed-point */
+/* #undef DEFAULT_RADIX */
+
+/* Enable thread safety */
+#define ENABLE_THREADS /**/
+
+/* Use Q15 fixed-point computation */
+/* #undef FIXED16 */
+
+/* Use fixed-point computation */
+#define FIXED_POINT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if you have the iconv() function. */
+/* #define HAVE_ICONV 1 */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `asound' library (-lasound). */
+/* #define HAVE_LIBASOUND 1 */
+
+/* Define to 1 if you have the `blas' library (-lblas). */
+/* #define HAVE_LIBBLAS 1 */
+
+/* Define to 1 if you have the `lapack' library (-llapack). */
+/* #define HAVE_LIBLAPACK 1 */
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `perror' function. */
+#define HAVE_PERROR 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the <sndfile.h> header file. */
+#define HAVE_SNDFILE_H 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 8
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* Enable debugging output */
+/* #undef SPHINX_DEBUG */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable matrix algebra with LAPACK */
+/* #define WITH_LAPACK */
+
+/* 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
--- /dev/null
+/* include/sphinx_config.h. Generated from sphinx_config.h.in by configure. */
+/* sphinx_config.h: Externally visible configuration parameters */
+
+/* Use ALSA library for sound I/O */
+/* #define AD_BACKEND_ALSA */
+
+/* Use IRIX interface for sound I/O */
+/* #undef AD_BACKEND_IRIX */
+
+/* No interface for sound I/O */
+#undef AD_BACKEND_NONE
+
+/* Use OSF interface for sound I/O */
+/* #undef AD_BACKEND_OSF */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS_BSD */
+
+/* Use SunOS interface for sound I/O */
+/* #undef AD_BACKEND_SUNOS */
+
+/* Use WinMM interface for sound I/O */
+/* #undef AD_BACKEND_WIN32 */
+
+/* Default radix point for fixed-point */
+/* #undef DEFAULT_RADIX */
+
+/* Use Q15 fixed-point computation */
+/* #undef FIXED16 */
+
+/* Use fixed-point computation */
+#define FIXED_POINT
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 8
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* Enable debugging output */
+/* #undef SPHINX_DEBUG */
--- /dev/null
+/* include/config.h.in. Generated from configure.in by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Use ALSA library for sound I/O */
+#undef AD_BACKEND_ALSA
+
+/* No interface for sound I/O */
+#undef AD_BACKEND_NONE
+
+/* Use OSS for sound I/O */
+#undef AD_BACKEND_OSS
+
+/* Use WinMM interface for sound I/O */
+#undef AD_BACKEND_WIN32
+
+/* Default radix point for fixed-point */
+#undef DEFAULT_RADIX
+
+/* Enable thread safety */
+#undef ENABLE_THREADS
+
+/* Use Q15 fixed-point computation */
+#undef FIXED16
+
+/* Use fixed-point computation */
+#undef FIXED_POINT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `asound' library (-lasound). */
+#undef HAVE_LIBASOUND
+
+/* Define to 1 if you have the `blas' library (-lblas). */
+#undef HAVE_LIBBLAS
+
+/* Define to 1 if you have the `lapack' library (-llapack). */
+#undef HAVE_LIBLAPACK
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
+/* Define to 1 if the system has the type `long long'. */
+#undef HAVE_LONG_LONG
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `perror' function. */
+#undef HAVE_PERROR
+
+/* Define to 1 if you have the `popen' function. */
+#undef HAVE_POPEN
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
+
+/* Define to 1 if you have the <sndfile.h> header file. */
+#undef HAVE_SNDFILE_H
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* 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 <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 <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_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 as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* Enable debugging output */
+#undef SPHINX_DEBUG
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Enable matrix algebra with LAPACK */
+#undef WITH_LAPACK
+
+/* 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
--- /dev/null
+/* Silvio Moioli: keep only one configuration file */
+
+#include "sphinx_config.h"
--- /dev/null
+/* include/sphinx_config.h, defaults for S60. */
+/* sphinx_config.h: Externally visible configuration parameters for
+ * SphinxBase.
+ */
+
+/* Use S60 interface for sound I/O */
+#define AD_BACKEND_S60
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* Enable debugging output */
+#undef SPHINX_DEBUG
+
+/* Extension for executables */
+#define EXEEXT ".exe"
+
+/* Enable thread safety */
+#define ENABLE_THREADS 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `perror' function. */
+#define HAVE_PERROR 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable matrix algebra with LAPACK */
+#define WITH_LAPACK 1
--- /dev/null
+/* include/sphinx_config.h. Generated from sphinx_config.h.in by configure. */
+/* sphinx_config.h: Externally visible configuration parameters */
+
+/* Use ALSA library for sound I/O */
+#define AD_BACKEND_ALSA /**/
+
+/* Use IRIX interface for sound I/O */
+/* #undef AD_BACKEND_IRIX */
+
+/* No interface for sound I/O */
+/* #undef AD_BACKEND_NONE */
+
+/* Use OSF interface for sound I/O */
+/* #undef AD_BACKEND_OSF */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS_BSD */
+
+/* Use SunOS interface for sound I/O */
+/* #undef AD_BACKEND_SUNOS */
+
+/* Use WinMM interface for sound I/O */
+/* #undef AD_BACKEND_WIN32 */
+
+/* Default radix point for fixed-point */
+/* #undef DEFAULT_RADIX */
+
+/* Use Q15 fixed-point computation */
+/* #undef FIXED16 */
+
+/* Use fixed-point computation */
+/* #undef FIXED_POINT */
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 8
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* Enable debugging output */
+/* #undef SPHINX_DEBUG */
--- /dev/null
+/* sphinx_config.h: Externally visible configuration parameters */
+
+/* Use ALSA library for sound I/O */
+#undef AD_BACKEND_ALSA
+
+/* Use IRIX interface for sound I/O */
+#undef AD_BACKEND_IRIX
+
+/* No interface for sound I/O */
+#undef AD_BACKEND_NONE
+
+/* Use OSF interface for sound I/O */
+#undef AD_BACKEND_OSF
+
+/* Use OSS interface for sound I/O */
+#undef AD_BACKEND_OSS
+
+/* Use OSS interface for sound I/O */
+#undef AD_BACKEND_OSS_BSD
+
+/* Use SunOS interface for sound I/O */
+#undef AD_BACKEND_SUNOS
+
+/* Use WinMM interface for sound I/O */
+#undef AD_BACKEND_WIN32
+
+/* Default radix point for fixed-point */
+#undef DEFAULT_RADIX
+
+/* Use Q15 fixed-point computation */
+#undef FIXED16
+
+/* Use fixed-point computation */
+#undef FIXED_POINT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* Define to 1 if the system has the type `long long'. */
+#undef HAVE_LONG_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* Enable debugging output */
+#undef SPHINX_DEBUG
--- /dev/null
+pkginclude_HEADERS = \
+ ad.h \
+ agc.h \
+ bio.h \
+ bitvec.h \
+ byteorder.h \
+ case.h \
+ ckd_alloc.h \
+ clapack_lite.h \
+ cmd_ln.h \
+ cmn.h \
+ cont_ad.h \
+ err.h \
+ f2c.h \
+ feat.h \
+ fe.h \
+ filename.h \
+ fixpoint.h \
+ fsg_model.h \
+ genrand.h \
+ glist.h \
+ hash_table.h \
+ heap.h \
+ huff_code.h \
+ info.h \
+ jsgf.h \
+ libutil.h \
+ listelem_alloc.h \
+ logmath.h \
+ matrix.h \
+ mmio.h \
+ mulaw.h \
+ ngram_model.h \
+ pio.h \
+ yin.h \
+ prim_type.h \
+ profile.h \
+ sbthread.h \
+ sphinxbase_export.h \
+ strfuncs.h \
+ unlimit.h
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include/sphinxbase
+DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pkgincludedir)"
+pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(pkginclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+pkginclude_HEADERS = \
+ ad.h \
+ agc.h \
+ bio.h \
+ bitvec.h \
+ byteorder.h \
+ case.h \
+ ckd_alloc.h \
+ clapack_lite.h \
+ cmd_ln.h \
+ cmn.h \
+ cont_ad.h \
+ err.h \
+ f2c.h \
+ feat.h \
+ fe.h \
+ filename.h \
+ fixpoint.h \
+ fsg_model.h \
+ genrand.h \
+ glist.h \
+ hash_table.h \
+ heap.h \
+ huff_code.h \
+ info.h \
+ jsgf.h \
+ libutil.h \
+ listelem_alloc.h \
+ logmath.h \
+ matrix.h \
+ mmio.h \
+ mulaw.h \
+ ngram_model.h \
+ pio.h \
+ yin.h \
+ prim_type.h \
+ profile.h \
+ sbthread.h \
+ sphinxbase_export.h \
+ strfuncs.h \
+ unlimit.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sphinxbase/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu include/sphinxbase/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-pkgincludeHEADERS install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-pkgincludeHEADERS
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * ad.h -- generic live audio interface for recording and playback
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ *
+ * $Log: ad.h,v $
+ * Revision 1.8 2005/06/22 08:00:06 arthchan2003
+ * Completed all doxygen documentation on file description for libs3decoder/libutil/libs3audio and programs.
+ *
+ * Revision 1.7 2004/12/14 00:39:49 arthchan2003
+ * add <s3types.h> to the code, change some comments to doxygen style
+ *
+ * Revision 1.6 2004/12/06 11:17:55 arthchan2003
+ * Update the copyright information of ad.h, *sigh* start to feel tired of updating documentation system. Anyone who has time, please take up libs3audio. That is the last place which is undocumented
+ *
+ * Revision 1.5 2004/07/23 23:44:46 egouvea
+ * Changed the cygwin code to use the same audio files as the MS Visual code, removed unused variables from fe_interface.c
+ *
+ * Revision 1.4 2004/02/29 23:48:31 egouvea
+ * Updated configure.in to the recent automake/autoconf, fixed win32
+ * references in audio files.
+ *
+ * Revision 1.3 2002/11/10 19:27:38 egouvea
+ * Fixed references to sun's implementation of audio interface,
+ * referring to the correct .h file, and replacing sun4 with sunos.
+ *
+ * Revision 1.2 2001/12/11 04:40:55 lenzo
+ * License cleanup.
+ *
+ * Revision 1.1.1.1 2001/12/03 16:01:45 egouvea
+ * Initial import of sphinx3
+ *
+ * Revision 1.1.1.1 2001/01/17 05:17:14 ricky
+ * Initial Import of the s3.3 decoder, has working decodeaudiofile, s3.3_live
+ *
+ *
+ * 19-Jan-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added AD_ return codes. Added ad_open_sps_bufsize(), and
+ * ad_rec_t.n_buf.
+ *
+ * 17-Apr-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_open_play_sps().
+ *
+ * 07-Mar-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_open_sps().
+ *
+ * 10-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_wbuf_t, ad_rec_t, and ad_play_t types, and augmented all
+ * recording functions with ad_rec_t, and playback functions with
+ * ad_play_t.
+ *
+ * 06-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+/** \file ad.h
+ * \brief generic live audio interface for recording and playback
+ */
+
+#ifndef _AD_H_
+#define _AD_H_
+
+#include <sphinx_config.h>
+
+#if defined (__CYGWIN__)
+#include <w32api/windows.h>
+#include <w32api/mmsystem.h>
+#elif (defined(WIN32) && !defined(GNUWINCE)) || defined(_WIN32_WCE)
+#include <windows.h>
+#include <mmsystem.h>
+#elif defined(AD_BACKEND_ALSA)
+#include <alsa/asoundlib.h>
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+#include <sphinxbase/prim_type.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#define AD_SAMPLE_SIZE (sizeof(int16))
+#define DEFAULT_SAMPLES_PER_SEC 16000
+
+/* Return codes */
+#define AD_OK 0
+#define AD_EOF -1
+#define AD_ERR_GEN -1
+#define AD_ERR_NOT_OPEN -2
+#define AD_ERR_WAVE -3
+
+
+#if (defined(WIN32) || defined(AD_BACKEND_WIN32)) && !defined(GNUWINCE)
+typedef struct {
+ HGLOBAL h_whdr;
+ LPWAVEHDR p_whdr;
+ HGLOBAL h_buf;
+ LPSTR p_buf;
+} ad_wbuf_t;
+#endif
+
+
+/* ------------ RECORDING -------------- */
+
+/*
+ * NOTE: ad_rec_t and ad_play_t are READ-ONLY structures for the user.
+ */
+
+#if (defined(WIN32) || defined(AD_BACKEND_WIN32)) && !defined(GNUWINCE)
+
+#define DEFAULT_DEVICE (char*)DEV_MAPPER
+
+/**
+ * Audio recording structure.
+ */
+typedef struct ad_rec_s {
+ HWAVEIN h_wavein; /* "HANDLE" to the audio input device */
+ ad_wbuf_t *wi_buf; /* Recording buffers provided to system */
+ int32 n_buf; /* #Recording buffers provided to system */
+ int32 opened; /* Flag; A/D opened for recording */
+ int32 recording;
+ int32 curbuf; /* Current buffer with data for application */
+ int32 curoff; /* Start of data for application in curbuf */
+ int32 curlen; /* #samples of data from curoff in curbuf */
+ int32 lastbuf; /* Last buffer containing data after recording stopped */
+ int32 sps; /* Samples/sec */
+ int32 bps; /* Bytes/sample */
+} ad_rec_t;
+
+#elif defined(AD_BACKEND_OSS)
+
+#define DEFAULT_DEVICE "/dev/dsp"
+
+/** \struct ad_rec_t
+ * \brief Audio recording structure.
+ */
+
+/* Added by jd5q+@andrew.cmu.edu, 10/3/1997: */
+typedef struct {
+ int32 dspFD; /* Audio device descriptor */
+ int32 recording;
+ int32 sps; /* Samples/sec */
+ int32 bps; /* Bytes/sample */
+} ad_rec_t;
+
+#elif defined(AD_BACKEND_ESD)
+
+#define DEFAULT_DEVICE NULL
+typedef struct {
+ int32 fd;
+ int32 recording;
+ int32 sps;
+ int32 bps;
+} ad_rec_t;
+
+#elif defined(AD_BACKEND_ALSA)
+
+#define DEFAULT_DEVICE "default"
+typedef struct {
+ snd_pcm_t *dspH;
+ int32 recording;
+ int32 sps;
+ int32 bps;
+} ad_rec_t;
+
+#elif defined(AD_BACKEND_S60)
+
+typedef struct ad_rec_s {
+ void* recorder;
+ int32 recording;
+ int32 sps;
+ int32 bps;
+} ad_rec_t;
+
+SPHINXBASE_EXPORT
+ad_rec_t *ad_open_sps_bufsize (int32 samples_per_sec, int32 bufsize_msec);
+
+#else
+
+#define DEFAULT_DEVICE NULL
+typedef struct {
+ int32 sps; /**< Samples/sec */
+ int32 bps; /**< Bytes/sample */
+} ad_rec_t;
+
+
+#endif
+
+
+/**
+ * Open a specific audio device for recording.
+ *
+ * The device is opened in non-blocking mode and placed in idle state.
+ *
+ * @return pointer to read-only ad_rec_t structure if successful, NULL
+ * otherwise. The return value to be used as the first argument to
+ * other recording functions.
+ */
+SPHINXBASE_EXPORT
+ad_rec_t *ad_open_dev (
+ const char *dev, /**< Device name (platform-specific) */
+ int32 samples_per_sec /**< Samples per second */
+ );
+
+/**
+ * Open the default audio device with a given sampling rate.
+ */
+SPHINXBASE_EXPORT
+ad_rec_t *ad_open_sps (
+ int32 samples_per_sec /**< Samples per second */
+ );
+
+
+/**
+ * Open the default audio device.
+ */
+SPHINXBASE_EXPORT
+ad_rec_t *ad_open ( void );
+
+
+#if defined(WIN32) && !defined(GNUWINCE)
+/*
+ * Like ad_open_sps but specifies buffering required within driver. This function is
+ * useful if the default (5000 msec worth) is too small and results in loss of data.
+ */
+SPHINXBASE_EXPORT
+ad_rec_t *ad_open_sps_bufsize (int32 samples_per_sec, int32 bufsize_msec);
+#endif
+
+
+/* Start audio recording. Return value: 0 if successful, <0 otherwise */
+SPHINXBASE_EXPORT
+int32 ad_start_rec (ad_rec_t *);
+
+
+/* Stop audio recording. Return value: 0 if successful, <0 otherwise */
+SPHINXBASE_EXPORT
+int32 ad_stop_rec (ad_rec_t *);
+
+
+/* Close the recording device. Return value: 0 if successful, <0 otherwise */
+SPHINXBASE_EXPORT
+int32 ad_close (ad_rec_t *);
+
+
+/*
+ * Read next block of audio samples while recording; read upto max samples into buf.
+ * Return value: # samples actually read (could be 0 since non-blocking); -1 if not
+ * recording and no more samples remaining to be read from most recent recording.
+ */
+SPHINXBASE_EXPORT
+int32 ad_read (ad_rec_t *, int16 *buf, int32 max);
+
+
+/* ------ PLAYBACK; SIMILAR TO RECORDING ------- */
+
+#if defined(WIN32) && !defined(GNUWINCE)
+
+typedef struct {
+ HWAVEOUT h_waveout; /* "HANDLE" to the audio output device */
+ ad_wbuf_t *wo_buf; /* Playback buffers given to the system */
+ int32 opened; /* Flag; A/D opened for playback */
+ int32 playing;
+ char *busy; /* flags [N_WO_BUF] indicating whether given to system */
+ int32 nxtbuf; /* Next buffer [0..N_WO_BUF-1] to be used for playback data */
+ int32 sps; /* Samples/sec */
+ int32 bps; /* Bytes/sample */
+} ad_play_t;
+
+#else
+
+typedef struct {
+ int32 sps; /* Samples/sec */
+ int32 bps; /* Bytes/sample */
+} ad_play_t; /* Dummy definition for systems without A/D stuff */
+
+#endif
+
+
+SPHINXBASE_EXPORT
+ad_play_t *ad_open_play_sps (int32 samples_per_sec);
+
+SPHINXBASE_EXPORT
+ad_play_t *ad_open_play ( void );
+
+SPHINXBASE_EXPORT
+int32 ad_start_play (ad_play_t *);
+
+SPHINXBASE_EXPORT
+int32 ad_stop_play (ad_play_t *);
+
+SPHINXBASE_EXPORT
+int32 ad_close_play (ad_play_t *);
+
+
+/**
+ * Queue a block of audio samples for playback.
+ *
+ * Write the next block of [len] samples from rawbuf to the A/D device for playback.
+ * The device may queue less than len samples, possibly 0, since it is non-blocking.
+ * The application should resubmit the remaining data to be played.
+ * Return value: # samples accepted for playback; -1 if error.
+ */
+SPHINXBASE_EXPORT
+int32 ad_write (ad_play_t *, int16 *buf, int32 len);
+
+
+/* ------ MISCELLANEOUS ------- */
+
+/**
+ * Convert mu-law data to int16 linear PCM format.
+ */
+SPHINXBASE_EXPORT
+void ad_mu2li (int16 *outbuf, /* Out: PCM data placed here (allocated by user) */
+ unsigned char *inbuf, /* In: Input buffer with mulaw data */
+ int32 n_samp); /* In: #Samples in inbuf */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * agc.h -- Various forms of automatic gain control (AGC)
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.1 2006/04/05 20:27:30 dhdfu
+ * A Great Reorganzation of header files and executables
+ *
+ * Revision 1.8 2005/06/21 19:25:41 arthchan2003
+ * 1, Fixed doxygen documentation. 2, Added $ keyword.
+ *
+ * Revision 1.4 2005/06/13 04:02:56 archan
+ * Fixed most doxygen-style documentation under libs3decoder.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 28-Apr-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Copied from previous version.
+ */
+
+
+#ifndef _S3_AGC_H_
+#define _S3_AGC_H_
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/fe.h>
+
+/** \file agc.h
+ * \brief routine that implements automatic gain control
+ *
+ * \warning This function may not be fully compatible with
+ * SphinxTrain's family of AGC.
+ *
+ * This implements AGC.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Types of acoustic gain control to apply to the features.
+ */
+typedef enum agc_type_e {
+ AGC_NONE = 0,
+ AGC_MAX,
+ AGC_EMAX,
+ AGC_NOISE
+} agc_type_t;
+
+/** Convert string representation (from command-line) to agc_type_t */
+SPHINXBASE_EXPORT
+agc_type_t agc_type_from_str(const char *str);
+
+/** String representations of agc_type_t values. */
+SPHINXBASE_EXPORT
+extern const char *agc_type_str[];
+
+/**
+ * Structure holding data for doing AGC.
+ **/
+typedef struct agc_s {
+ mfcc_t max; /**< Estimated max for current utterance (for AGC_EMAX) */
+ mfcc_t obs_max; /**< Observed max in current utterance */
+ int32 obs_frame; /**< Whether any data was observed after prev update */
+ int32 obs_utt; /**< Whether any utterances have been observed */
+ mfcc_t obs_max_sum;
+ mfcc_t noise_thresh; /**< Noise threshold (for AGC_NOISE only) */
+} agc_t;
+
+/**
+ * Initialize AGC structure with default values.
+ */
+SPHINXBASE_EXPORT
+agc_t *agc_init(void);
+
+/**
+ * Free AGC structure.
+ */
+SPHINXBASE_EXPORT
+void agc_free(agc_t *agc);
+
+/**
+ * Apply AGC to the given mfc vectors (normalize all C0 mfc coefficients in the given
+ * input such that the max C0 value is 0, by subtracting the input max C0 from all).
+ * This function operates on an entire utterance at a time. Hence, the entire utterance
+ * must be available beforehand (batchmode).
+ */
+SPHINXBASE_EXPORT
+void agc_max(agc_t *agc, /**< In: AGC structure (not used) */
+ mfcc_t **mfc, /**< In/Out: mfc[f] = cepstrum vector in frame f */
+ int32 n_frame /**< In: number of frames of cepstrum vectors supplied */
+ );
+
+/**
+ * Apply AGC to the given block of MFC vectors.
+ * Unlike agc_max() this does not require the entire utterance to be
+ * available. Call agc_emax_update() at the end of each utterance to
+ * update the AGC parameters. */
+SPHINXBASE_EXPORT
+void agc_emax(agc_t *agc, /**< In: AGC structure */
+ mfcc_t **mfc, /**< In/Out: mfc[f] = cepstrum vector in frame f */
+ int32 n_frame /**< In: number of frames of cepstrum vectors supplied */
+ );
+
+/**
+ * Update AGC parameters for next utterance.
+ **/
+SPHINXBASE_EXPORT
+void agc_emax_update(agc_t *agc /**< In: AGC structure */
+ );
+
+/**
+ * Get the current AGC maximum estimate.
+ **/
+SPHINXBASE_EXPORT
+float32 agc_emax_get(agc_t *agc);
+
+/**
+ * Set the current AGC maximum estimate.
+ **/
+SPHINXBASE_EXPORT
+void agc_emax_set(agc_t *agc, float32 m);
+
+/**
+ * Apply AGC using noise threshold to the given block of MFC vectors.
+ **/
+SPHINXBASE_EXPORT
+void agc_noise(agc_t *agc, /**< In: AGC structure */
+ mfcc_t **mfc, /**< In/Out: mfc[f] = cepstrum vector in frame f */
+ int32 n_frame /**< In: number of frames of cepstrum vectors supplied */
+ );
+
+/**
+ * Get the current AGC noise threshold.
+ **/
+SPHINXBASE_EXPORT
+float32 agc_get_threshold(agc_t *agc);
+
+/**
+ * Set the current AGC noise threshold.
+ **/
+SPHINXBASE_EXPORT
+void agc_set_threshold(agc_t *agc, float32 threshold);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * bio.h -- Sphinx-3 binary file I/O functions.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: bio.h,v $
+ * Revision 1.8 2005/06/21 20:40:46 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Add the $ keyword.
+ *
+ * Revision 1.5 2005/06/13 04:02:57 archan
+ * Fixed most doxygen-style documentation under libs3decoder.
+ *
+ * Revision 1.4 2005/05/10 21:21:52 archan
+ * Three functionalities added but not tested. Code on 1) addition/deletion of LM in mode 4. 2) reading text-based LM 3) Converting txt-based LM to dmp-based LM.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 28-Apr-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+#ifndef _S3_BIO_H_
+#define _S3_BIO_H_
+
+#include <stdio.h>
+#include <stdarg.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/byteorder.h>
+
+/** \file bio.h
+ * \brief Cross platform binary IO to process files in sphinx3 format.
+ *
+ *
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#define BYTE_ORDER_MAGIC (0x11223344)
+
+/** "reversed senses" SWAP, ARCHAN: This is still incorporated in
+ Sphinx 3 because lm3g2dmp used it. Don't think that I am very
+ happy with it. */
+
+#if (__BIG_ENDIAN__)
+#define REVERSE_SENSE_SWAP_INT16(x) x = ( (((x)<<8)&0x0000ff00) | (((x)>>8)&0x00ff) )
+#define REVERSE_SENSE_SWAP_INT32(x) x = ( (((x)<<24)&0xff000000) | (((x)<<8)&0x00ff0000) | \
+ (((x)>>8)&0x0000ff00) | (((x)>>24)&0x000000ff) )
+#else
+#define REVERSE_SENSE_SWAP_INT16(x)
+#define REVERSE_SENSE_SWAP_INT32(x)
+
+#endif
+
+
+
+/**
+ * Read binary file format header: has the following format
+ * <pre>
+ * s3
+ * <argument-name> <argument-value>
+ * <argument-name> <argument-value>
+ * ...
+ * endhdr
+ * 4-byte byte-order word used to find file byte ordering relative to host machine.
+ * </pre>
+ * Lines beginning with # are ignored.
+ * Memory for name and val allocated by this function; use bio_hdrarg_free to free them.
+ * @return: 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 bio_readhdr (FILE *fp, /**< In: File to read */
+ char ***name, /**< Out: array of argument name strings read */
+ char ***val, /**< Out: corresponding value strings read */
+ int32 *swap /**< Out: file needs byteswapping iff (*swap) */
+ );
+/**
+ * Write a simple binary file header, containing only the version string. Also write
+ * the byte order magic word.
+ * @return: 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 bio_writehdr_version (FILE *fp, /**< Output: File to write */
+ char *version /**< Input: A string of version */
+ );
+
+
+SPHINXBASE_EXPORT
+int32 bio_writehdr(FILE *fp, ...);
+
+/**
+ * Free name and value strings previously allocated and returned by bio_readhdr.
+ */
+SPHINXBASE_EXPORT
+void bio_hdrarg_free (char **name, /**< In: Array previously returned by bio_readhdr */
+ char **val /**< In: Array previously returned by bio_readhdr */
+ );
+
+/**
+ * Like fread but perform byteswapping and accumulate checksum (the 2 extra arguments).
+ * But unlike fread, returns -1 if required number of elements (n_el) not read; also,
+ * no byteswapping or checksum accumulation is performed in that case.
+ */
+SPHINXBASE_EXPORT
+int32 bio_fread (void *buf,
+ int32 el_sz,
+ int32 n_el,
+ FILE *fp, /**< In: An input file pointer */
+ int32 swap, /**< In: Byteswap iff (swap != 0) */
+ uint32 *chksum /**< In/Out: Accumulated checksum */
+ );
+
+/**
+ * Like fwrite but perform byteswapping and accumulate checksum (the 2 extra arguments).
+ * @return the number of elemens written (like fwrite).
+ */
+SPHINXBASE_EXPORT
+int32 bio_fwrite(void *buf,
+ int32 el_sz,
+ int32 n_el,
+ FILE *fp, /**< In: An input file pointer */
+ int32 swap, /**< In: Byteswap iff (swap != 0) */
+ uint32 *chksum /**< In/Out: Accumulated checksum */
+ );
+
+/**
+ * Read a 1-d array (fashioned after fread):
+ *
+ * - 4-byte array size (returned in n_el)
+ * - memory allocated for the array and read (returned in buf)
+ *
+ * Byteswapping and checksum accumulation performed as necessary.
+ * Fails fatally if expected data not read.
+ * Return value: number of array elements allocated and read; -1 if error.
+ */
+SPHINXBASE_EXPORT
+int32 bio_fread_1d (void **buf, /**< Out: contains array data; allocated by this
+ function; can be freed using ckd_free */
+ size_t el_sz, /**< In: Array element size */
+ uint32 *n_el, /**< Out: Number of array elements allocated/read */
+ FILE *fp, /**< In: File to read */
+ int32 sw, /**< In: Byteswap iff (swap != 0) */
+ uint32 *ck /**< In/Out: Accumulated checksum */
+ );
+
+/**
+ * Read a 2-d matrix:
+ *
+ * - 4-byte # rows, # columns (returned in d1, d2, d3)
+ * - memory allocated for the array and read (returned in buf)
+ *
+ * Byteswapping and checksum accumulation performed as necessary.
+ * Fails fatally if expected data not read.
+ * Return value: number of array elements allocated and read; -1 if error.
+ */
+SPHINXBASE_EXPORT
+int32 bio_fread_2d(void ***arr,
+ size_t e_sz,
+ uint32 *d1,
+ uint32 *d2,
+ FILE *fp,
+ uint32 swap,
+ uint32 *chksum);
+
+/**
+ * Read a 3-d array (set of matrices)
+ *
+ * - 4-byte # matrices, # rows, # columns (returned in d1, d2, d3)
+ * - memory allocated for the array and read (returned in buf)
+ *
+ * Byteswapping and checksum accumulation performed as necessary.
+ * Fails fatally if expected data not read.
+ * Return value: number of array elements allocated and read; -1 if error.
+ */
+SPHINXBASE_EXPORT
+int32 bio_fread_3d(void ****arr,
+ size_t e_sz,
+ uint32 *d1,
+ uint32 *d2,
+ uint32 *d3,
+ FILE *fp,
+ uint32 swap,
+ uint32 *chksum);
+
+/**
+ * Read and verify checksum at the end of binary file. Fails fatally if there is
+ * a mismatch.
+ */
+SPHINXBASE_EXPORT
+void bio_verify_chksum (FILE *fp, /**< In: File to read */
+ int32 byteswap, /**< In: Byteswap iff (swap != 0) */
+ uint32 chksum /**< In: Value to compare with checksum in file */
+ );
+
+
+/**
+ * Read raw data from the wav file.
+ *
+ * @param directory the folder where the file is located
+ * @param filename the name of the file
+ * @param extension file extension
+ * @param header the size of the header to skip usually 44 bytes.
+ * @param endian Endian of the data
+ * @param nsamps number of samples read
+ * @return pointer to the data
+ */
+int16*
+bio_read_wavfile(char const *directory,
+ char const *filename,
+ char const *extension,
+ int32 header,
+ int32 endian,
+ int32 *nsamps);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef _LIBUTIL_BITVEC_H_
+#define _LIBUTIL_BITVEC_H_
+
+#include <string.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/ckd_alloc.h>
+
+/**
+ * @file bitvec.h
+ * @brief An implementation of bit vectors.
+ *
+ * Implementation of basic operations of bit vectors.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#define BITVEC_BITS 32
+typedef uint32 bitvec_t;
+
+/**
+ * Number of bitvec_t in a bit vector
+ */
+#define bitvec_size(n) (((n)+BITVEC_BITS-1)/BITVEC_BITS)
+
+/**
+ * Allocate a bit vector.
+ */
+#define bitvec_alloc(n) ckd_calloc(bitvec_size(n), sizeof(bitvec_t))
+
+/**
+ * Resize a bit vector.
+ */
+#define bitvec_realloc(v,n) ckd_realloc(v, bitvec_size(n) * sizeof(bitvec_t))
+
+/**
+ * Free a bit vector.
+ */
+#define bitvec_free(v) ckd_free(v)
+
+/**
+ * Set the b-th bit of bit vector v
+ * @param v is a vector
+ * @param b is the bit which will be set
+ */
+
+#define bitvec_set(v,b) (v[(b)/BITVEC_BITS] |= (1UL << ((b) & (BITVEC_BITS-1))))
+
+/**
+ * Set all n bits in bit vector v
+ * @param v is a vector
+ * @param n is the number of bits
+ */
+
+#define bitvec_set_all(v,n) memset(v, (bitvec_t)-1, \
+ (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \
+ sizeof(bitvec_t))
+/**
+ * Clear the b-th bit of bit vector v
+ * @param v is a vector
+ * @param b is the bit which will be set
+ */
+
+#define bitvec_clear(v,b) (v[(b)/BITVEC_BITS] &= ~(1UL << ((b) & (BITVEC_BITS-1))))
+
+/**
+ * Clear all n bits in bit vector v
+ * @param v is a vector
+ * @param n is the number of bits
+ */
+
+#define bitvec_clear_all(v,n) memset(v, 0, (((n)+BITVEC_BITS-1)/BITVEC_BITS) * \
+ sizeof(bitvec_t))
+
+/**
+ * Check whether the b-th bit is set in vector v
+ * @param v is a vector
+ * @param b is the bit which will be checked
+ */
+
+#define bitvec_is_set(v,b) (v[(b)/BITVEC_BITS] & (1UL << ((b) & (BITVEC_BITS-1))))
+
+/**
+ * Check whether the b-th bit is cleared in vector v
+ * @param v is a vector
+ * @param b is the bit which will be checked
+ */
+
+#define bitvec_is_clear(v,b) (! (bitvec_is_set(v,b)))
+
+
+/**
+ * Return the number of bits set in the given bitvector.
+ *
+ * @param vec is the bit vector
+ * @param len is the length of bit vector <code>vec</code>
+ * @return the number of bits being set in vector <code>vec</code>
+ */
+SPHINXBASE_EXPORT
+size_t bitvec_count_set(bitvec_t *vec, /* In: Bit vector to search */
+ size_t len); /* In: Lenght of above bit vector */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * byteorder.h -- Byte swapping ordering macros.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ *
+ * $Log: byteorder.h,v $
+ * Revision 1.8 2005/09/01 21:09:54 dhdfu
+ * Really, actually, truly consolidate byteswapping operations into
+ * byteorder.h. Where unconditional byteswapping is needed, SWAP_INT32()
+ * and SWAP_INT16() are to be used. The WORDS_BIGENDIAN macro from
+ * autoconf controls the functioning of the conditional swap macros
+ * (SWAP_?[LW]) whose names and semantics have been regularized.
+ * Private, adhoc macros have been removed.
+ *
+ */
+
+#ifndef __S2_BYTEORDER_H__
+#define __S2_BYTEORDER_H__ 1
+
+/* Macro to byteswap an int16 variable. x = ptr to variable */
+#define SWAP_INT16(x) *(x) = ((0x00ff & (*(x))>>8) | (0xff00 & (*(x))<<8))
+
+/* Macro to byteswap an int32 variable. x = ptr to variable */
+#define SWAP_INT32(x) *(x) = ((0x000000ff & (*(x))>>24) | \
+ (0x0000ff00 & (*(x))>>8) | \
+ (0x00ff0000 & (*(x))<<8) | \
+ (0xff000000 & (*(x))<<24))
+
+/* Macro to byteswap a float32 variable. x = ptr to variable */
+#define SWAP_FLOAT32(x) SWAP_INT32((int32 *) x)
+
+/* Macro to byteswap a float64 variable. x = ptr to variable */
+#define SWAP_FLOAT64(x) { int *low = (int *) (x), *high = (int *) (x) + 1,\
+ temp;\
+ SWAP_INT32(low); SWAP_INT32(high);\
+ temp = *low; *low = *high; *high = temp;}
+
+#ifdef WORDS_BIGENDIAN
+#define SWAP_BE_64(x)
+#define SWAP_BE_32(x)
+#define SWAP_BE_16(x)
+#define SWAP_LE_64(x) SWAP_FLOAT64(x)
+#define SWAP_LE_32(x) SWAP_INT32(x)
+#define SWAP_LE_16(x) SWAP_INT16(x)
+#else
+#define SWAP_LE_64(x)
+#define SWAP_LE_32(x)
+#define SWAP_LE_16(x)
+#define SWAP_BE_64(x) SWAP_FLOAT64(x)
+#define SWAP_BE_32(x) SWAP_INT32(x)
+#define SWAP_BE_16(x) SWAP_INT16(x)
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * case.h -- Upper/lower case conversion routines
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: case.h,v $
+ * Revision 1.7 2005/06/22 02:58:54 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 18-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added strcmp_nocase, UPPER_CASE and LOWER_CASE definitions.
+ *
+ * 16-Feb-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Created.
+ */
+
+
+/**
+ * @file case.h
+ * @brief Locale-independent implementation of case swapping operation.
+ *
+ * This function implements ASCII-only case switching and comparison
+ * related operations, which do not depend on the locale and are
+ * guaranteed to exist on all versions of Windows.
+ */
+
+#ifndef _LIBUTIL_CASE_H_
+#define _LIBUTIL_CASE_H_
+
+#include <string.h>
+
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/sphinxbase_export.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+ /**
+ * Return upper case form for c
+ */
+#define UPPER_CASE(c) ((((c) >= 'a') && ((c) <= 'z')) ? (c-32) : c)
+
+ /**
+ * Return lower case form for c
+ */
+#define LOWER_CASE(c) ((((c) >= 'A') && ((c) <= 'Z')) ? (c+32) : c)
+
+
+ /**
+ * Convert str to all upper case.
+ * @param str is a string.
+ */
+SPHINXBASE_EXPORT
+void ucase(char *str);
+
+ /**
+ * Convert str to all lower case
+ * @param str is a string.
+ */
+SPHINXBASE_EXPORT
+void lcase(char *str);
+
+ /**
+ * (FIXME! The implementation is incorrect!)
+ * Case insensitive string compare. Return the usual -1, 0, +1, depending on
+ * str1 <, =, > str2 (case insensitive, of course).
+ * @param str1 is the first string.
+ * @param str2 is the second string.
+ */
+SPHINXBASE_EXPORT
+int32 strcmp_nocase(const char *str1, const char *str2);
+
+/**
+ * Like strcmp_nocase() but with a maximum length.
+ */
+SPHINXBASE_EXPORT
+int32 strncmp_nocase(const char *str1, const char *str2, size_t len);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * ckd_alloc.h -- Memory allocation package.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: ckd_alloc.h,v $
+ * Revision 1.10 2005/06/22 02:59:25 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 19-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Removed file,line arguments from free functions.
+ *
+ * 01-Jan-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+/*********************************************************************
+ *
+ * $Header: /cvsroot/cmusphinx/sphinx3/src/libutil/ckd_alloc.h,v 1.10 2005/06/22 02:59:25 arthchan2003 Exp $
+ *
+ * Carnegie Mellon ARPA Speech Group
+ *
+ * Copyright (c) 1994 Carnegie Mellon University.
+ * All rights reserved.
+ *
+ *********************************************************************
+ *
+ * file: ckd_alloc.h
+ *
+ * traceability:
+ *
+ * description:
+ *
+ * author:
+ *
+ *********************************************************************/
+
+
+#ifndef _LIBUTIL_CKD_ALLOC_H_
+#define _LIBUTIL_CKD_ALLOC_H_
+
+#include <stdlib.h>
+#include <setjmp.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+/** \file ckd_alloc.h
+ *\brief Sphinx's memory allocation/deallocation routines.
+ *
+ *Implementation of efficient memory allocation deallocation for
+ *multiple dimensional arrays.
+ *
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Control behaviour of the program when allocation fails.
+ *
+ * Although your program is probably toast when memory allocation
+ * fails, it is also probably a good idea to be able to catch these
+ * errors and alert the user in some way. Either that, or you might
+ * want the program to call abort() so that you can debug the failed
+ * code. This function allows you to control that behaviour.
+ *
+ * @param env Pointer to a <code>jmp_buf</code> initialized with
+ * setjmp(), or NULL to remove a previously set jump target.
+ * @param abort If non-zero, the program will call abort() when
+ * allocation fails rather than exiting or calling longjmp().
+ * @return Pointer to a previously set <code>jmp_buf</code>, if any.
+ */
+jmp_buf *ckd_set_jump(jmp_buf *env, int abort);
+
+/**
+ * Fail (with a message) according to behaviour specified by ckd_set_jump().
+ */
+void ckd_fail(char *format, ...);
+
+/*
+ * The following functions are similar to the malloc family, except
+ * that they have two additional parameters, caller_file and
+ * caller_line, for error reporting. All functions print a diagnostic
+ * message if any error occurs, with any other behaviour determined by
+ * ckd_set_jump(), above.
+ */
+
+SPHINXBASE_EXPORT
+void *__ckd_calloc__(size_t n_elem, size_t elem_size,
+ const char *caller_file, int caller_line);
+
+SPHINXBASE_EXPORT
+void *__ckd_malloc__(size_t size,
+ const char *caller_file, int caller_line);
+
+SPHINXBASE_EXPORT
+void *__ckd_realloc__(void *ptr, size_t new_size,
+ const char *caller_file, int caller_line);
+
+/**
+ * Like strdup, except that if an error occurs it prints a diagnostic message
+ * and exits.
+ */
+SPHINXBASE_EXPORT
+char *__ckd_salloc__(const char *origstr,
+ const char *caller_file, int caller_line);
+
+/**
+ * Allocate a 2-D array and return ptr to it (ie, ptr to vector of ptrs).
+ * The data area is allocated in one block so it can also be treated as a 1-D array.
+ */
+SPHINXBASE_EXPORT
+void *__ckd_calloc_2d__(size_t d1, size_t d2, /* In: #elements in the 2 dimensions */
+ size_t elemsize, /* In: Size (#bytes) of each element */
+ const char *caller_file, int caller_line); /* In */
+
+/**
+ * Allocate a 3-D array and return ptr to it.
+ * The data area is allocated in one block so it can also be treated as a 1-D array.
+ */
+SPHINXBASE_EXPORT
+void *__ckd_calloc_3d__(size_t d1, size_t d2, size_t d3, /* In: #elems in the dims */
+ size_t elemsize, /* In: Size (#bytes) per element */
+ const char *caller_file, int caller_line); /* In */
+
+/**
+ * Allocate a 34D array and return ptr to it.
+ * The data area is allocated in one block so it can also be treated as a 1-D array.
+ */
+SPHINXBASE_EXPORT
+void ****__ckd_calloc_4d__(size_t d1,
+ size_t d2,
+ size_t d3,
+ size_t d4,
+ size_t elem_size,
+ char *caller_file,
+ int caller_line);
+
+/**
+ * Overlay a 3-D array over a previously allocated storage area.
+ **/
+SPHINXBASE_EXPORT
+void * __ckd_alloc_3d_ptr(size_t d1,
+ size_t d2,
+ size_t d3,
+ void *store,
+ size_t elem_size,
+ char *caller_file,
+ int caller_line);
+
+/**
+ * Overlay a s-D array over a previously allocated storage area.
+ **/
+SPHINXBASE_EXPORT
+void *__ckd_alloc_2d_ptr(size_t d1,
+ size_t d2,
+ void *store,
+ size_t elem_size,
+ char *caller_file,
+ int caller_line);
+
+/**
+ * Test and free a 1-D array
+ */
+SPHINXBASE_EXPORT
+void ckd_free(void *ptr);
+
+/**
+ * Free a 2-D array (ptr) previously allocated by ckd_calloc_2d
+ */
+SPHINXBASE_EXPORT
+void ckd_free_2d(void *ptr);
+
+/**
+ * Free a 3-D array (ptr) previously allocated by ckd_calloc_3d
+ */
+SPHINXBASE_EXPORT
+void ckd_free_3d(void *ptr);
+
+/**
+ * Free a 4-D array (ptr) previously allocated by ckd_calloc_4d
+ */
+SPHINXBASE_EXPORT
+void ckd_free_4d(void *ptr);
+
+/**
+ * Macros to simplify the use of above functions.
+ * One should use these, rather than target functions directly.
+ */
+
+/**
+ * Macro for __ckd_calloc__
+ */
+#define ckd_calloc(n,sz) __ckd_calloc__((n),(sz),__FILE__,__LINE__)
+
+/**
+ * Macro for __ckd_malloc__
+ */
+#define ckd_malloc(sz) __ckd_malloc__((sz),__FILE__,__LINE__)
+
+/**
+ * Macro for __ckd_realloc__
+ */
+#define ckd_realloc(ptr,sz) __ckd_realloc__(ptr,(sz),__FILE__,__LINE__)
+
+/**
+ * Macro for __ckd_salloc__
+ */
+
+#define ckd_salloc(ptr) __ckd_salloc__(ptr,__FILE__,__LINE__)
+
+/**
+ * Macro for __ckd_calloc_2d__
+ */
+
+#define ckd_calloc_2d(d1,d2,sz) __ckd_calloc_2d__((d1),(d2),(sz),__FILE__,__LINE__)
+
+/**
+ * Macro for __ckd_calloc_3d__
+ */
+
+#define ckd_calloc_3d(d1,d2,d3,sz) __ckd_calloc_3d__((d1),(d2),(d3),(sz),__FILE__,__LINE__)
+
+/**
+ * Macro for __ckd_calloc_4d__
+ */
+#define ckd_calloc_4d(d1, d2, d3, d4, s) __ckd_calloc_4d__((d1), (d2), (d3), (d4), (s), __FILE__, __LINE__)
+
+/**
+ * Macro for __ckd_alloc_2d_ptr__
+ */
+
+#define ckd_alloc_2d_ptr(d1, d2, bf, sz) __ckd_alloc_2d_ptr((d1), (d2), (bf), (sz), __FILE__, __LINE__)
+
+/**
+ * Free only the pointer arrays allocated with ckd_alloc_2d_ptr().
+ */
+#define ckd_free_2d_ptr(bf) ckd_free(bf)
+
+/**
+ * Macro for __ckd_alloc_3d_ptr__
+ */
+
+#define ckd_alloc_3d_ptr(d1, d2, d3, bf, sz) __ckd_alloc_3d_ptr((d1), (d2), (d3), (bf), (sz), __FILE__, __LINE__)
+
+/**
+ * Free only the pointer arrays allocated with ckd_alloc_3d_ptr().
+ */
+#define ckd_free_3d_ptr(bf) ckd_free_2d(bf)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+#ifndef __CLAPACK_LITE_H
+#define __CLAPACK_LITE_H
+
+#include "f2c.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/* Subroutine */ int sgemm_(char *transa, char *transb, integer *m, integer *
+ n, integer *k, real *alpha, real *a, integer *lda, real *b, integer *
+ ldb, real *beta, real *c__, integer *ldc);
+/* Subroutine */ int sgemv_(char *trans, integer *m, integer *n, real *alpha,
+ real *a, integer *lda, real *x, integer *incx, real *beta, real *y,
+ integer *incy);
+/* Subroutine */ int ssymm_(char *side, char *uplo, integer *m, integer *n,
+ real *alpha, real *a, integer *lda, real *b, integer *ldb, real *beta,
+ real *c__, integer *ldc);
+
+/* Subroutine */ int sposv_(char *uplo, integer *n, integer *nrhs, real *a,
+ integer *lda, real *b, integer *ldb, integer *info);
+/* Subroutine */ int spotrf_(char *uplo, integer *n, real *a, integer *lda,
+ integer *info);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __CLAPACK_LITE_H */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cmd_ln.h -- Command line argument parsing.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ *
+ * 15-Jul-1997 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added required arguments types.
+ *
+ * 07-Dec-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created, based on Eric's implementation. Basically, combined several
+ * functions into one, eliminated validation, and simplified the interface.
+ */
+
+
+#ifndef _LIBUTIL_CMD_LN_H_
+#define _LIBUTIL_CMD_LN_H_
+
+#include <stdio.h>
+#include <stdarg.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+/**
+ * @file cmd_ln.h
+ * @brief Command-line and other configurationparsing and handling.
+ *
+ * Configuration parameters, optionally parsed from the command line.
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * @struct arg_t
+ * Argument definition structure.
+ */
+typedef struct arg_s {
+ char const *name; /**< Name of the command line switch */
+ int type; /**< Type of the argument in question */
+ char const *deflt; /**< Default value (as a character string), or NULL if none */
+ char const *doc; /**< Documentation/description string */
+} arg_t;
+
+/**
+ * @name Values for arg_t::type
+ */
+/* @{ */
+/**
+ * Bit indicating a required argument.
+ */
+#define ARG_REQUIRED (1<<0)
+/**
+ * Integer argument (optional).
+ */
+#define ARG_INTEGER (1<<1)
+/**
+ * Floating point argument (optional).
+ */
+#define ARG_FLOATING (1<<2)
+/**
+ * String argument (optional).
+ */
+#define ARG_STRING (1<<3)
+/**
+ * Boolean (true/false) argument (optional).
+ */
+#define ARG_BOOLEAN (1<<4)
+/**
+ * Boolean (true/false) argument (optional).
+ */
+#define ARG_STRING_LIST (1<<5)
+
+/**
+ * Required integer argument.
+ */
+#define REQARG_INTEGER (ARG_INTEGER | ARG_REQUIRED)
+/**
+ * Required floating point argument.
+ */
+#define REQARG_FLOATING (ARG_FLOATING | ARG_REQUIRED)
+/**
+ * Required string argument.
+ */
+#define REQARG_STRING (ARG_STRING | ARG_REQUIRED)
+/**
+ * Required boolean argument.
+ */
+#define REQARG_BOOLEAN (ARG_BOOLEAN | ARG_REQUIRED)
+
+/**
+ * @deprecated Use ARG_INTEGER instead.
+ */
+#define ARG_INT32 ARG_INTEGER
+/**
+ * @deprecated Use ARG_FLOATING instead.
+ */
+#define ARG_FLOAT32 ARG_FLOATING
+/**
+ * @deprecated Use ARG_FLOATING instead.
+ */
+#define ARG_FLOAT64 ARG_FLOATING
+/**
+ * @deprecated Use REQARG_INTEGER instead.
+ */
+#define REQARG_INT32 (ARG_INT32 | ARG_REQUIRED)
+/**
+ * @deprecated Use REQARG_FLOATING instead.
+ */
+#define REQARG_FLOAT32 (ARG_FLOAT32 | ARG_REQUIRED)
+/**
+ * @deprecated Use REQARG_FLOATING instead.
+ */
+#define REQARG_FLOAT64 (ARG_FLOAT64 | ARG_REQUIRED)
+/* @} */
+
+
+/**
+ * Helper macro to stringify enums and other non-string values for
+ * default arguments.
+ **/
+#define ARG_STRINGIFY(s) ARG_STRINGIFY1(s)
+#define ARG_STRINGIFY1(s) #s
+
+/**
+ * @struct cmd_ln_t
+ * Opaque structure used to hold the results of command-line parsing.
+ */
+typedef struct cmd_ln_s cmd_ln_t;
+
+/**
+ * Create a cmd_ln_t from NULL-terminated list of arguments.
+ *
+ * This function creates a cmd_ln_t from a NULL-terminated list of
+ * argument strings. For example, to create the equivalent of passing
+ * "-hmm foodir -dsratio 2 -lm bar.lm" on the command-line:
+ *
+ * config = cmd_ln_init(NULL, defs, TRUE, "-hmm", "foodir", "-dsratio", "2",
+ * "-lm", "bar.lm", NULL);
+ *
+ * Note that for simplicity, <strong>all</strong> arguments are passed
+ * as strings, regardless of the actual underlying type.
+ *
+ * @param inout_cmdln Previous command-line to update, or NULL to create a new one.
+ * @param defn Array of argument name definitions, or NULL to allow any arguments.
+ * @param strict Whether to fail on duplicate or unknown arguments.
+ * @return A cmd_ln_t* containing the results of command line parsing, or NULL on failure.
+ */
+SPHINXBASE_EXPORT
+cmd_ln_t *cmd_ln_init(cmd_ln_t *inout_cmdln, arg_t const *defn, int32 strict, ...);
+
+/**
+ * Retain ownership of a command-line argument set.
+ *
+ * @return pointer to retained command-line argument set.
+ */
+SPHINXBASE_EXPORT
+cmd_ln_t *cmd_ln_retain(cmd_ln_t *cmdln);
+
+/**
+ * Release a command-line argument set and all associated strings.
+ *
+ * @return new reference count (0 if freed completely)
+ */
+SPHINXBASE_EXPORT
+int cmd_ln_free_r(cmd_ln_t *cmdln);
+
+/**
+ * Parse a list of strings into argumetns.
+ *
+ * Parse the given list of arguments (name-value pairs) according to
+ * the given definitions. Argument values can be retrieved in future
+ * using cmd_ln_access(). argv[0] is assumed to be the program name
+ * and skipped. Any unknown argument name causes a fatal error. The
+ * routine also prints the prevailing argument values (to stderr)
+ * after parsing.
+ *
+ * @note It is currently assumed that the strings in argv are
+ * allocated statically, or at least that they will be valid as
+ * long as the cmd_ln_t returned from this function.
+ * Unpredictable behaviour will result if they are freed or
+ * otherwise become invalidated.
+ *
+ * @return A cmd_ln_t containing the results of command line parsing,
+ * or NULL on failure.
+ **/
+SPHINXBASE_EXPORT
+cmd_ln_t *cmd_ln_parse_r(cmd_ln_t *inout_cmdln, /**< In/Out: Previous command-line to update,
+ or NULL to create a new one. */
+ arg_t const *defn, /**< In: Array of argument name definitions */
+ int32 argc, /**< In: Number of actual arguments */
+ char *argv[], /**< In: Actual arguments */
+ int32 strict /**< In: Fail on duplicate or unknown
+ arguments, or no arguments? */
+ );
+
+/**
+ * Parse an arguments file by deliminating on " \r\t\n" and putting each tokens
+ * into an argv[] for cmd_ln_parse().
+ *
+ * @return A cmd_ln_t containing the results of command line parsing, or NULL on failure.
+ */
+SPHINXBASE_EXPORT
+cmd_ln_t *cmd_ln_parse_file_r(cmd_ln_t *inout_cmdln, /**< In/Out: Previous command-line to update,
+ or NULL to create a new one. */
+ arg_t const *defn, /**< In: Array of argument name definitions*/
+ char const *filename,/**< In: A file that contains all
+ the arguments */
+ int32 strict /**< In: Fail on duplicate or unknown
+ arguments, or no arguments? */
+ );
+
+/**
+ * Access the generic type union for a command line argument.
+ */
+SPHINXBASE_EXPORT
+anytype_t *cmd_ln_access_r(cmd_ln_t *cmdln, char const *name);
+
+/**
+ * Retrieve a string from a command-line object.
+ *
+ * The command-line object retains ownership of this string, so you
+ * should not attempt to free it manually.
+ *
+ * @param cmdln Command-line object.
+ * @param name the command-line flag to retrieve.
+ * @return the string value associated with <tt>name</tt>, or NULL if
+ * <tt>name</tt> does not exist. You must use
+ * cmd_ln_exists_r() to distinguish between cases where a
+ * value is legitimately NULL and where the corresponding flag
+ * is unknown.
+ */
+SPHINXBASE_EXPORT
+char const *cmd_ln_str_r(cmd_ln_t *cmdln, char const *name);
+
+/**
+ * Retrieve an array of strings from a command-line object.
+ *
+ * The command-line object retains ownership of this array, so you
+ * should not attempt to free it manually.
+ *
+ * @param cmdln Command-line object.
+ * @param name the command-line flag to retrieve.
+ * @return the array of strings associated with <tt>name</tt>, or NULL if
+ * <tt>name</tt> does not exist. You must use
+ * cmd_ln_exists_r() to distinguish between cases where a
+ * value is legitimately NULL and where the corresponding flag
+ * is unknown.
+ */
+SPHINXBASE_EXPORT
+char const **cmd_ln_str_list_r(cmd_ln_t *cmdln, char const *name);
+
+/**
+ * Retrieve an integer from a command-line object.
+ *
+ * @param cmdln Command-line object.
+ * @param name the command-line flag to retrieve.
+ * @return the integer value associated with <tt>name</tt>, or 0 if
+ * <tt>name</tt> does not exist. You must use
+ * cmd_ln_exists_r() to distinguish between cases where a
+ * value is legitimately zero and where the corresponding flag
+ * is unknown.
+ */
+SPHINXBASE_EXPORT
+long cmd_ln_int_r(cmd_ln_t *cmdln, char const *name);
+
+/**
+ * Retrieve a floating-point number from a command-line object.
+ *
+ * @param cmdln Command-line object.
+ * @param name the command-line flag to retrieve.
+ * @return the float value associated with <tt>name</tt>, or 0.0 if
+ * <tt>name</tt> does not exist. You must use
+ * cmd_ln_exists_r() to distinguish between cases where a
+ * value is legitimately zero and where the corresponding flag
+ * is unknown.
+ */
+SPHINXBASE_EXPORT
+double cmd_ln_float_r(cmd_ln_t *cmdln, char const *name);
+
+/**
+ * Retrieve a boolean value from a command-line object.
+ */
+#define cmd_ln_boolean_r(c,n) (cmd_ln_int_r(c,n) != 0)
+
+/**
+ * Set a string in a command-line object.
+ *
+ * @param cmdln Command-line object.
+ * @param name The command-line flag to set.
+ * @param str String value to set. The command-line object does not
+ * retain ownership of this pointer.
+ */
+SPHINXBASE_EXPORT
+void cmd_ln_set_str_r(cmd_ln_t *cmdln, char const *name, char const *str);
+
+/**
+ * Set an integer in a command-line object.
+ *
+ * @param cmdln Command-line object.
+ * @param name The command-line flag to set.
+ * @param iv Integer value to set.
+ */
+SPHINXBASE_EXPORT
+void cmd_ln_set_int_r(cmd_ln_t *cmdln, char const *name, long iv);
+
+/**
+ * Set a floating-point number in a command-line object.
+ *
+ * @param cmdln Command-line object.
+ * @param name The command-line flag to set.
+ * @param fv Integer value to set.
+ */
+SPHINXBASE_EXPORT
+void cmd_ln_set_float_r(cmd_ln_t *cmdln, char const *name, double fv);
+
+/**
+ * Set a boolean value in a command-line object.
+ */
+#define cmd_ln_set_boolean_r(c,n,b) (cmd_ln_set_int_r(c,n,(b)!=0))
+
+/*
+ * Compatibility macros
+ */
+#define cmd_ln_int32_r(c,n) cmd_ln_int_r(c,n)
+#define cmd_ln_float32_r(c,n) (float32)cmd_ln_float_r(c,n)
+#define cmd_ln_float64_r(c,n) (float64)cmd_ln_float_r(c,n)
+#define cmd_ln_set_int32_r(c,n,i) cmd_ln_set_int_r(c,n,i)
+#define cmd_ln_set_float32_r(c,n,f) cmd_ln_set_float_r(c,n,(double)f)
+#define cmd_ln_set_float64_r(c,n,f) cmd_ln_set_float_r(c,n,(double)f)
+
+/**
+ * Re-entrant version of cmd_ln_exists().
+ *
+ * @return True if the command line argument exists (i.e. it
+ * was one of the arguments defined in the call to cmd_ln_parse_r().
+ */
+SPHINXBASE_EXPORT
+int cmd_ln_exists_r(cmd_ln_t *cmdln, char const *name);
+
+/**
+ * Print a help message listing the valid argument names, and the associated
+ * attributes as given in defn.
+ */
+SPHINXBASE_EXPORT
+void cmd_ln_print_help_r (cmd_ln_t *cmdln,
+ FILE *fp, /**< In: File to which to print */
+ const arg_t *defn /**< In: Array of argument name definitions */
+ );
+
+/**
+ * Non-reentrant version of cmd_ln_parse().
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_parse_r().
+ * @return 0 if successful, <0 if error.
+ */
+SPHINXBASE_EXPORT
+int32 cmd_ln_parse(const arg_t *defn, /**< In: Array of argument name definitions */
+ int32 argc, /**< In: Number of actual arguments */
+ char *argv[], /**< In: Actual arguments */
+ int32 strict /**< In: Fail on duplicate or unknown
+ arguments, or no arguments? */
+ );
+
+/**
+ * Parse an arguments file by deliminating on " \r\t\n" and putting each tokens
+ * into an argv[] for cmd_ln_parse().
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_parse_file_r().
+ *
+ * @return 0 if successful, <0 on error.
+ */
+SPHINXBASE_EXPORT
+int32 cmd_ln_parse_file(const arg_t *defn, /**< In: Array of argument name definitions*/
+ char const *filename,/**< In: A file that contains all the arguments */
+ int32 strict /**< In: Fail on duplicate or unknown
+ arguments, or no arguments? */
+ );
+
+/**
+ * Old application initialization routine for Sphinx3 code.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API.
+ */
+SPHINXBASE_EXPORT
+void cmd_ln_appl_enter(int argc, /**< In: Number of actual arguments */
+ char *argv[], /**< In: Number of actual arguments */
+ char const* default_argfn, /**< In: default argument file name*/
+ const arg_t *defn /**< Command-line argument definition */
+ );
+
+
+/**
+ * Finalization routine corresponding to cmd_ln_appl_enter().
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API.
+ */
+
+SPHINXBASE_EXPORT
+void cmd_ln_appl_exit(void);
+
+/**
+ * Retrieve the global cmd_ln_t object used by non-re-entrant functions.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API.
+ * @return global cmd_ln_t object.
+ */
+SPHINXBASE_EXPORT
+cmd_ln_t *cmd_ln_get(void);
+
+/**
+ * Test the existence of a command-line argument in the global set of
+ * definitions.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_exists_r().
+ *
+ * @return True if the command line argument exists (i.e. it
+ * was one of the arguments defined in the call to cmd_ln_parse().
+ */
+#define cmd_ln_exists(name) cmd_ln_exists_r(cmd_ln_get(), name)
+
+/**
+ * Return a pointer to the previously parsed value for the given argument name.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_access_r().
+ */
+#define cmd_ln_access(name) cmd_ln_access_r(cmd_ln_get(), name)
+
+/**
+ * Retrieve a string from the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_str_r().
+ */
+#define cmd_ln_str(name) cmd_ln_str_r(cmd_ln_get(), name)
+
+/**
+ * Retrieve an array of strings in the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_str_list_r().
+ */
+#define cmd_ln_str_list(name) cmd_ln_str_list_r(cmd_ln_get(), name)
+
+/**
+ * Retrieve a 32-bit integer from the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_int_r().
+ */
+#define cmd_ln_int32(name) (int32)cmd_ln_int_r(cmd_ln_get(), name)
+/**
+ * Retrieve a 32-bit float from the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_float_r().
+ */
+#define cmd_ln_float32(name) (float32)cmd_ln_float_r(cmd_ln_get(), name)
+/**
+ * Retrieve a 64-bit float from the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_float_r().
+ */
+#define cmd_ln_float64(name) (float64)cmd_ln_float_r(cmd_ln_get(), name)
+/**
+ * Retrieve a boolean from the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_boolean_r().
+ */
+#define cmd_ln_boolean(name) cmd_ln_boolean_r(cmd_ln_get(), name)
+
+/**
+ * Set a string in the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_set_str_r().
+ */
+#define cmd_ln_set_str(n,s) cmd_ln_set_str_r(cmd_ln_get(),n,s)
+/**
+ * Set a 32-bit integer value in the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_set_int_r().
+ */
+#define cmd_ln_set_int32(n,i) cmd_ln_set_int_r(cmd_ln_get(),n,i)
+/**
+ * Set a 32-bit float in the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_set_float_r().
+ */
+#define cmd_ln_set_float32(n,f) cmd_ln_set_float_r(cmd_ln_get(),n,f)
+/**
+ * Set a 64-bit float in the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_set_float_r().
+ */
+#define cmd_ln_set_float64(n,f) cmd_ln_set_float_r(cmd_ln_get(),n,f)
+/**
+ * Set a boolean value in the global command line.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_set_boolean_r().
+ */
+#define cmd_ln_set_boolean(n,b) cmd_ln_set_boolean_r(cmd_ln_get(),n,b)
+
+/**
+ * Print a help message listing the valid argument names, and the associated
+ * attributes as given in defn.
+ *
+ * @deprecated This is deprecated in favor of the re-entrant API
+ * function cmd_ln_print_help_r().
+ */
+#define cmd_ln_print_help(f,d) cmd_ln_print_help_r(cmd_ln_get(),f,d)
+
+/**
+ * Free the global command line, if any exists.
+ * @deprecated Use the re-entrant API instead.
+ */
+SPHINXBASE_EXPORT
+void cmd_ln_free (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cmn.h -- Various forms of cepstral mean normalization
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.1 2006/04/05 20:27:30 dhdfu
+ * A Great Reorganzation of header files and executables
+ *
+ * Revision 1.13 2006/02/23 03:48:27 arthchan2003
+ * Resolved conflict in cmn.h
+ *
+ *
+ * Revision 1.12 2006/02/22 23:43:55 arthchan2003
+ * Merged from the branch SPHINX3_5_2_RCI_IRII_BRANCH: Put data structure into the cmn_t structure.
+ *
+ * Revision 1.11.4.2 2005/10/17 04:45:57 arthchan2003
+ * Free stuffs in cmn and feat corectly.
+ *
+ * Revision 1.11.4.1 2005/07/05 06:25:08 arthchan2003
+ * Fixed dox-doc.
+ *
+ * Revision 1.11 2005/06/21 19:28:00 arthchan2003
+ * 1, Fixed doxygen documentation. 2, Added $ keyword.
+ *
+ * Revision 1.4 2005/06/13 04:02:56 archan
+ * Fixed most doxygen-style documentation under libs3decoder.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 20.Apr.2001 RAH (rhoughton@mediasite.com, ricky.houghton@cs.cmu.edu)
+ * Added cmn_free() and moved *mean and *var out global space and named them cmn_mean and cmn_var
+ *
+ * 28-Apr-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Copied from previous version.
+ */
+
+
+#ifndef _S3_CMN_H_
+#define _S3_CMN_H_
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/fe.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/** \file cmn.h
+ * \brief Apply Cepstral Mean Normalization (CMN) to the set of input mfc frames.
+ *
+ * By subtractingthe mean of the input from each frame. C0 is also included in this process.
+ * This function operates on an entire utterance at a time. Hence, the entire utterance
+ * must be available beforehand (batchmode).
+ */
+
+/**
+ * Types of cepstral mean normalization to apply to the features.
+ */
+typedef enum cmn_type_e {
+ CMN_NONE = 0,
+ CMN_CURRENT,
+ CMN_PRIOR
+} cmn_type_t;
+
+/** String representations of cmn_type_t values. */
+SPHINXBASE_EXPORT
+extern const char *cmn_type_str[];
+
+/** Convert string representation (from command-line) to cmn_type_t */
+SPHINXBASE_EXPORT
+cmn_type_t cmn_type_from_str(const char *str);
+
+/** \struct cmn_t
+ * \brief wrapper of operation of the cepstral mean normalization.
+ */
+
+typedef struct {
+ mfcc_t *cmn_mean; /**< Temporary variable: current means */
+ mfcc_t *cmn_var; /**< Temporary variables: stored the cmn variance */
+ mfcc_t *sum; /**< The sum of the cmn frames */
+ int32 nframe; /**< Number of frames */
+ int32 veclen; /**< Length of cepstral vector */
+} cmn_t;
+
+SPHINXBASE_EXPORT
+cmn_t* cmn_init(int32 veclen);
+
+/**
+ * CMN for the whole sentence
+*/
+SPHINXBASE_EXPORT
+void cmn (cmn_t *cmn, /**< In/Out: cmn normalization, which contains the cmn_mean and cmn_var) */
+ mfcc_t **mfc, /**< In/Out: mfc[f] = mfc vector in frame f */
+ int32 varnorm,/**< In: if not FALSE, variance normalize the input vectors
+ to have unit variance (along each dimension independently);
+ Irrelevant if no cmn is performed */
+ int32 n_frame /**< In: Number of frames of mfc vectors */
+ );
+
+#define CMN_WIN_HWM 800 /* #frames after which window shifted */
+#define CMN_WIN 500
+
+/**
+ * CMN for one block of data, using prior mean
+ */
+SPHINXBASE_EXPORT
+void cmn_prior(cmn_t *cmn, /**< In/Out: cmn normalization, which contains
+ the cmn_mean and cmn_var) */
+ mfcc_t **incep, /**< In/Out: mfc[f] = mfc vector in frame f*/
+ int32 varnorm, /**< This flag should always be 0 for live */
+ int32 nfr /**< Number of incoming frames */
+ );
+
+/**
+ * Update prior mean based on observed data
+ */
+SPHINXBASE_EXPORT
+void cmn_prior_update(cmn_t *cmn);
+
+/**
+ * Set the prior mean.
+ */
+SPHINXBASE_EXPORT
+void cmn_prior_set(cmn_t *cmn, mfcc_t const *vec);
+
+/**
+ * Get the prior mean.
+ */
+SPHINXBASE_EXPORT
+void cmn_prior_get(cmn_t *cmn, mfcc_t *vec);
+
+/* RAH, free previously allocated memory */
+SPHINXBASE_EXPORT
+void cmn_free (cmn_t *cmn);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cont_ad.h -- Continuous A/D listening and silence filtering module.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ *
+ * 13-Jul-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added spf and adbufsize to cont_ad_t in order to support variable
+ * frame sizes depending on audio sampling rate.
+ *
+ * 30-Jun-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added FILE* argument to cont_ad_powhist_dump().
+ *
+ * 16-Jan-98 Paul Placeway (pwp@cs.cmu.edu) at Carnegie Mellon University
+ * Changed to use dB instead of the weird power measure.
+ * Added most system parameters to cont_ad_t instead of hardwiring
+ * them in cont_ad.c.
+ * Added cont_ad_set_params() and cont_ad_get_params().
+ *
+ * 28-Jul-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added cont_ad_t.siglvl.
+ *
+ * 27-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added the option for cont_ad_read to return -1 on EOF.
+ *
+ * 21-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added cont_ad_set_thresh().
+ *
+ * 20-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Separated thresholds for speech and silence.
+ *
+ * 17-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created, based loosely on Steve Reed's original implementation.
+ */
+
+
+#ifndef _CONT_AD_H_
+#define _CONT_AD_H_
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/ad.h>
+
+/**
+ * \file cont_ad.h
+ * \brief Continuous A/D listening and silence filtering module.
+ *
+ * This module is intended to be interposed as a filter between any
+ * raw A/D source and the application to remove silence regions. Its
+ * main purpose is to remove regions of silence from the raw input
+ * speech. It is initialized with a raw A/D source function (during
+ * the cont_ad_init call). The application is responsible for setting
+ * up the A/D source, turning recording on and off as it desires.
+ * Filtered A/D data can be read by the application using the
+ * cont_ad_read function.
+ *
+ * In other words, the application calls cont_ad_read instead of the
+ * raw A/D source function (e.g., ad_read in libad) to obtain filtered
+ * A/D data with silence regions removed. This module itself does not
+ * enforce any other structural changes to the application.
+ *
+ * The cont_ad_read function also updates an "absolute" timestamp (see
+ * cont_ad_t.read_ts) at the end of each invocation. The timestamp
+ * indicates the total number of samples of A/D data read until this
+ * point, including data discarded as silence frames. The application
+ * is responsible for using this timestamp to make any policy
+ * decisions regarding utterance boundaries or whatever.
+ */
+
+
+#include <stdio.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/* States of continuous listening module */
+#define CONT_AD_STATE_SIL 0
+#define CONT_AD_STATE_SPEECH 1
+
+
+/**
+ * \struct spseg_t
+ * \brief (FOR INTERNAL USE ) Data structure for maintaining speech (non-silence) segments not yet consumed by the
+ * application.
+ */
+typedef struct spseg_s {
+ int32 startfrm; /**< Frame-id in adbuf (see below) of start of this segment */
+ int32 nfrm; /**< Number of frames in segment (may wrap around adbuf) */
+ struct spseg_s *next; /**< Next speech segment (with some intervening silence) */
+} spseg_t;
+
+
+/**
+ * \struct cont_ad_t
+ * \brief Continuous listening module or object
+ * Continuous listening module or object. An application can open and maintain several
+ * such objects, if necessary.
+ * FYI: Module always in one of two states: SILENCE or SPEECH. Transitions between the
+ * two detected by sliding a window spanning several frames and looking for some minimum
+ * number of frames of the other type.
+ */
+typedef struct {
+ /* Function to be called for obtaining A/D data (see prototype for ad_read in ad.h) */
+ int32 (*adfunc)(ad_rec_t *ad, int16 *buf, int32 max);
+ ad_rec_t *ad; /**< A/D device argument for adfunc. Also, ad->sps used to
+ determine frame size (spf, see below) */
+ int32 rawmode; /**< Pass all input data through, without filtering silence */
+
+ int16 *adbuf; /**< Circular buffer for maintaining A/D data read until consumed */
+
+ /* **************************************************************************
+ * state, read_ts, and siglvl are provided for READ-ONLY use by client
+ * applications, and are updated by calls to cont_ad_read() (see below). All
+ * other variables should be left alone.
+ */
+ int32 state; /**< State of data returned by most recent cont_ad_read call;
+ CONT_AD_STATE_SIL or CONT_AD_STATE_SPEECH. */
+ int32 read_ts; /**< Absolute timestamp (total no. of raw samples consumed
+ upto the most recent cont_ad_read call, starting from
+ the very beginning). Note that this is a 32-bit
+ integer; applications should guard against overflow. */
+ int32 seglen; /**< Total no. of raw samples consumed in the segment
+ returned by the most recent cont_ad_read call. Can be
+ used to detect silence segments that have stretched long
+ enough to terminate an utterance */
+ int32 siglvl; /**< Max signal level for the data consumed by the most recent
+ cont_ad_read call (dB range: 0-99). Can be used to
+ update a V-U meter, for example. */
+ /* ************************************************************************ */
+
+ int32 sps; /**< Samples/sec; moved from ad->sps to break dependence on
+ ad by N. Roy.*/
+
+ int32 eof; /**< Whether the source ad device has encountered EOF */
+
+ int32 spf; /**< Samples/frame; audio level is analyzed within frames */
+ int32 adbufsize; /**< Buffer size (Number of samples) */
+ int32 prev_sample; /**< For pre-emphasis filter */
+ int32 headfrm; /**< Frame number in adbuf with unconsumed A/D data */
+ int32 n_frm; /**< Number of complete frames of unconsumed A/D data in adbuf */
+ int32 n_sample; /**< Number of samples of unconsumed data in adbuf */
+ int32 tot_frm; /**< Total number of frames of A/D data read, including consumed ones */
+ int32 noise_level; /**< PWP: what we claim as the "current" noise level */
+
+ int32 *pow_hist; /**< Histogram of frame power, moving window, decayed */
+ char *frm_pow; /**< Frame power */
+
+ int32 auto_thresh; /**< Do automatic threshold adjustment or not */
+ int32 delta_sil; /**< Max silence power/frame ABOVE noise level */
+ int32 delta_speech; /**< Min speech power/frame ABOVE noise level */
+ int32 min_noise; /**< noise lower than this we ignore */
+ int32 max_noise; /**< noise higher than this signals an error */
+ int32 winsize; /**< how many frames to look at for speech det */
+ int32 speech_onset; /**< start speech on >= these many frames out of winsize, of >= delta_speech */
+ int32 sil_onset; /**< end speech on >= these many frames out of winsize, of <= delta_sil */
+ int32 leader; /**< pad beggining of speech with this many extra frms */
+ int32 trailer; /**< pad end of speech with this many extra frms */
+
+ int32 thresh_speech;/**< Frame considered to be speech if power >= thresh_speech
+ (for transitioning from SILENCE to SPEECH state) */
+ int32 thresh_sil; /**< Frame considered to be silence if power <= thresh_sil
+ (for transitioning from SPEECH to SILENCE state) */
+ int32 thresh_update;/**< Number of frames before next update to pow_hist/thresholds */
+ float32 adapt_rate; /**< Linear interpolation constant for rate at which noise level adapted
+ to each estimate;
+ range: 0-1; 0=> no adaptation, 1=> instant adaptation */
+
+ int32 tail_state; /**< State at the end of its internal buffer (internal use):
+ CONT_AD_STATE_SIL or CONT_AD_STATE_SPEECH. Note: This is
+ different from cont_ad_t.state. */
+ int32 win_startfrm; /**< Where next analysis window begins */
+ int32 win_validfrm; /**< Number of frames currently available from win_startfrm for analysis */
+ int32 n_other; /**< If in SILENCE state, number of frames in analysis window considered to
+ be speech; otherwise number of frames considered to be silence */
+ spseg_t *spseg_head;/**< First of unconsumed speech segments */
+ spseg_t *spseg_tail;/**< Last of unconsumed speech segments */
+
+ FILE *rawfp; /**< If non-NULL, raw audio input data processed by cont_ad
+ is dumped to this file. Controlled by user application
+ via cont_ad_set_rawfp(). NULL when cont_ad object is
+ initially created. */
+ FILE *logfp; /**< If non-NULL, write detailed logs of this object's
+ progress to the file. Controlled by user application
+ via cont_ad_set_logfp(). NULL when cont_ad object is
+ initially created. */
+
+ int32 n_calib_frame; /**< Number of frames of calibration data seen so far. */
+} cont_ad_t;
+
+
+/**
+ * Initialize a continuous listening/silence filtering object.
+ *
+ * One time initialization of a continuous listening/silence filtering
+ * object/module. This can work in either "stream mode", where it
+ * reads data from an audio device represented by
+ * <code>ad_rec_t</code>, or in "block mode", where it filters out
+ * silence regions from blocks of data passed into it.
+ *
+ * @param ad An audio device to read from, or NULL to operate in block mode.
+ * @param adfunc The function used to read audio from <code>ad</code>,
+ * or NULL to operate in block mode. This is usually ad_read().
+ * @return A pointer to a READ-ONLY structure used in other calls to
+ * the object. If any error occurs, the return value is NULL.
+ */
+SPHINXBASE_EXPORT
+cont_ad_t *cont_ad_init (ad_rec_t *ad, /**< In: The A/D source object to be filtered */
+ int32 (*adfunc)(ad_rec_t *ad, int16 *buf, int32 max)
+ /**< In: adfunc = source function to be invoked
+ to obtain raw A/D data. See ad.h for the
+ required prototype definition. */
+ );
+
+/**
+ * Initializes a continuous listening object which simply passes data through (!)
+ *
+ * Like cont_ad_init, but put the module in raw mode; i.e., all data is passed
+ * through, unfiltered. (By special request.)
+ */
+SPHINXBASE_EXPORT
+cont_ad_t *cont_ad_init_rawmode (ad_rec_t *ad,
+ int32 (*adfunc)(ad_rec_t *ad, int16 *buf, int32 max));
+
+
+/**
+ * Read raw audio data into the silence filter.
+ *
+ * The main read routine for reading speech/silence segmented audio data. Audio
+ * data is copied into the caller provided buffer, much like a file read routine.
+ *
+ * In "block mode", i.e. if NULL was passed as a read function to
+ * <code>cont_ad_init</code>, the data in <code>buf</code> is taken as
+ * input, and any non-silence data is written back to <code>buf</code>
+ * on exit. In this case, you must take care that <code>max</code>
+ * does not overflow the internal buffer of the silence filter. The
+ * available number of samples can be obtained by calling
+ * cont_ad_buffer_space(). Any excess data will be discarded.
+ *
+ * In normal mode, only speech segments are copied; silence segments are dropped.
+ * In rawmode (cont_ad module initialized using cont_ad_init_rawmode()), all data
+ * are passed through to the caller. But, in either case, any single call to
+ * cont_ad_read will never return data that crosses a speech/silence segment
+ * boundary.
+ *
+ * The following variables are updated for use by the caller (see cont_ad_t above):
+ * cont_ad_t.state,
+ * cont_ad_t.read_ts,
+ * cont_ad_t.seglen,
+ * cont_ad_t.siglvl.
+ *
+ * Return value: Number of samples actually read, possibly 0; <0 if EOF on A/D source.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_read (cont_ad_t *r, /**< In: Object pointer returned by cont_ad_init */
+ int16 *buf, /**< In/Out: In block mode, contains input data.
+ On return, buf contains A/D data returned
+ by this function, if any. */
+ int32 max /**< In: Maximum number of samples to be filled into buf.
+ NOTE: max must be at least 256; otherwise
+ the functions returns -1. */
+ );
+
+/**
+ * Get the maximum number of samples which can be passed into cont_ad_read().
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_buffer_space(cont_ad_t *r);
+
+/**
+ * Calibrate the silence filter.
+ *
+ * Calibration to determine an initial silence threshold. This function can be called
+ * any number of times. It should be called at least once immediately after cont_ad_init.
+ * The silence threshold is also updated internally once in a while, so this function
+ * only needs to be called in the middle if there is a definite change in the recording
+ * environment.
+ * The application is responsible for making sure that the raw audio source is turned on
+ * before the calibration.
+ * Return value: 0 if successful, <0 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_calib (cont_ad_t *cont /**< In: object pointer returned by cont_ad_init */
+ );
+
+/**
+ * Calibrate the silence filter without an audio device.
+ *
+ * If the application has not passed an audio device into the silence filter
+ * at initialisation, this routine can be used to calibrate the filter. The
+ * buf (of length max samples) should contain audio data for calibration. This
+ * data is assumed to be completely consumed. More than one call may be
+ * necessary to fully calibrate.
+ * Return value: 0 if successful, <0 on failure, >0 if calibration not
+ * complete.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_calib_loop (cont_ad_t *r, int16 *buf, int32 max);
+
+/**
+ * Get the number of samples required to calibrate the silence filter.
+ *
+ * Since, as mentioned above, the calibration data is assumed to be
+ * fully consumed, it may be desirable to "hold onto" this data in
+ * case it contains useful speech. This function returns the number
+ * of samples required to calibrate the silence filter, which is
+ * useful in allocating a buffer to store this data.
+ *
+ * @return Number of samples required for successful calibration.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_calib_size(cont_ad_t *r);
+
+/**
+ * Set silence and speech threshold parameters.
+ *
+ * The silence threshold is the max power
+ * level, RELATIVE to the peak background noise level, in any silence frame. Similarly,
+ * the speech threshold is the min power level, RELATIVE to the peak background noise
+ * level, in any speech frame. In general, silence threshold <= speech threshold.
+ * Increasing the thresholds (say, from the default value of 2 to 3 or 4) reduces the
+ * sensitivity to background noise, but may also increase the chances of clipping actual
+ * speech.
+ * @return: 0 if successful, <0 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_set_thresh (cont_ad_t *cont, /**< In: Object ptr from cont_ad_init */
+ int32 sil, /**< In: silence threshold (default 2) */
+ int32 sp /**< In: speech threshold (default 2) */
+ );
+
+
+/**
+ * Set the changable parameters.
+ *
+ * delta_sil, delta_speech, min_noise, and max_noise are in dB,
+ * winsize, speech_onset, sil_onset, leader and trailer are in frames of
+ * 16 ms length (256 samples @ 16kHz sampling).
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_set_params (cont_ad_t *r, int32 delta_sil, int32 delta_speech,
+ int32 min_noise, int32 max_noise,
+ int32 winsize, int32 speech_onset, int32 sil_onset,
+ int32 leader, int32 trailer,
+ float32 adapt_rate);
+
+/**
+ * PWP 1/14/98 -- get the changable params.
+ *
+ * delta_sil, delta_speech, min_noise, and max_noise are in dB,
+ * winsize, speech_onset, sil_onset, leader and trailer are in frames of
+ * 16 ms length (256 samples @ 16kHz sampling).
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_get_params (cont_ad_t *r, int32 *delta_sil, int32 *delta_speech,
+ int32 *min_noise, int32 *max_noise,
+ int32 *winsize, int32 *speech_onset, int32 *sil_onset,
+ int32 *leader, int32 *trailer,
+ float32 *adapt_rate);
+
+/**
+ * Reset, discarding any accumulated speech segments.
+ * @return 0 if successful, <0 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_reset (cont_ad_t *cont); /* In: Object pointer from cont_ad_init */
+
+
+/**
+ * Close the continuous listening object.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_close (cont_ad_t *cont); /* In: Object pointer from cont_ad_init */
+
+
+/**
+ * Dump the power histogram. For debugging...
+ */
+SPHINXBASE_EXPORT
+void cont_ad_powhist_dump (FILE *fp, cont_ad_t *cont);
+
+
+/**
+ * Detach the given continuous listening module from the associated audio device.
+ * @return 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_detach (cont_ad_t *c);
+
+
+/**
+ * Attach the continuous listening module to the given audio device/function.
+ * (Like cont_ad_init, but without the calibration.)
+ * @return 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_attach (cont_ad_t *c, ad_rec_t *a, int32 (*func)(ad_rec_t *, int16 *, int32));
+
+
+/**
+ * Set a file for dumping raw audio input.
+ *
+ * The application can ask cont_ad to dump the raw audio input that cont_ad
+ * processes to a file. Use this function to give the FILE* to the cont_ad
+ * object. If invoked with fp == NULL, dumping is turned off. The application
+ * is responsible for opening and closing the file. If fp is non-NULL, cont_ad
+ * assumes the file pointer is valid and opened for writing.
+ *
+ * @return 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_set_rawfp (cont_ad_t *c, /* The cont_ad object being addressed */
+ FILE *fp); /* File to which raw audio data is to
+ be dumped; NULL to stop dumping. */
+
+/**
+ * Set the file to which cont_ad logs its progress.
+ *
+ * Mainly for debugging. If <code>fp</code> is NULL, logging is turned off.
+ *
+ * @return 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int32 cont_ad_set_logfp (cont_ad_t *c, /* The cont_ad object being addressed */
+ FILE *fp); /* File to which logs are written;
+ NULL to stop logging. */
+
+/**
+ * Set the silence and speech thresholds.
+ *
+ * For this to remain permanently in effect, the auto_thresh field of
+ * the continuous listening module should be set to FALSE or 0.
+ * Otherwise the thresholds may be modified by the noise- level
+ * adaptation.
+ */
+SPHINXBASE_EXPORT
+int32 cont_set_thresh(cont_ad_t *r, int32 silence, int32 speech);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef _LIBUTIL_ERR_H_
+#define _LIBUTIL_ERR_H_
+
+#include <stdarg.h>
+#include <stdio.h>
+#ifndef _WIN32_WCE
+#include <errno.h>
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+/**
+ * @file err.h
+ * @brief Implementation of logging routines.
+ *
+ * Logging, warning, debug and error message output funtionality is provided in this file.
+ * Sphinxbase defines several level of logging messages - INFO, WARNING, ERROR, FATAL. By
+ * default output goes to standard error output.
+ *
+ * Logging is implemented through macros. They take same arguments as printf: format string and
+ * values. By default source file name and source line are prepended to the message. Log output
+ * could be redirected to any file using err_set_logfp() and err_set_logfile() functions. To disable
+ * logging in your application, call err_set_logfp(NULL).
+ *
+ * It's possible to log multiline info messages, to do that you need to start message with
+ * E_INFO and output other lines with E_INFOCONT.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+SPHINXBASE_EXPORT
+void _E__pr_header(char const *file, long line, char const *msg);
+SPHINXBASE_EXPORT
+void _E__pr_debug_header(char const *file, long line, int level);
+SPHINXBASE_EXPORT
+void _E__pr_info_header(char const *file, long line, char const *tag);
+SPHINXBASE_EXPORT
+void _E__pr_info_header_wofn(char const *msg);
+SPHINXBASE_EXPORT
+void _E__pr_warn(char const *fmt, ...);
+SPHINXBASE_EXPORT
+void _E__pr_info(char const *fmt, ...);
+SPHINXBASE_EXPORT
+void _E__die_error(char const *fmt, ...);
+SPHINXBASE_EXPORT
+void _E__abort_error(char const *fmt, ...);
+SPHINXBASE_EXPORT
+void _E__sys_error(char const *fmt, ...);
+SPHINXBASE_EXPORT
+void _E__fatal_sys_error(char const *fmt, ...);
+
+/**
+ * Direct all logging to a given filehandle.
+ *
+ * @param logfp Filehandle to send log messages to, or NULL to disable logging.
+ * @return Previous logging filehandle, if any.
+ */
+SPHINXBASE_EXPORT
+FILE *err_set_logfp(FILE *logfp);
+
+/**
+ * Get the current logging filehandle.
+ * @return Current logging filehandle, NULL if disabled.
+ */
+SPHINXBASE_EXPORT
+FILE * err_get_logfp(void);
+
+
+/**
+ * Append all log messages to a given file.
+ *
+ * Previous logging filehandle is closed (unless it was stdout or stderr).
+ *
+ * @param file File to send log messages to, or NULL to disable logging.
+ * @return 0 for success, <0 for failure (e.g. if file does not exist)
+ */
+SPHINXBASE_EXPORT
+int err_set_logfile(char const *file);
+
+/**
+ * Exit with non-zero status after error message
+ */
+#define E_FATAL _E__pr_header(__FILE__, __LINE__, "FATAL_ERROR"),_E__die_error
+
+/**
+ * Print error text; Call perror(""); exit(errno);
+ */
+#define E_FATAL_SYSTEM _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__fatal_sys_error
+
+/**
+ * Print error text; Call perror("");
+ */
+#define E_WARN_SYSTEM _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__sys_error
+
+/**
+ * Print error text; Call perror("");
+ */
+#define E_ERROR_SYSTEM _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__sys_error
+
+/**
+ * Print logging information to standard error stream
+ */
+#define E_INFO _E__pr_info_header(__FILE__, __LINE__, "INFO"),_E__pr_info
+
+/**
+ * Print logging information without header, to standard error stream
+ */
+
+#define E_INFOCONT _E__pr_info
+
+/**
+ * Print logging information without filename.
+ */
+#define E_INFO_NOFN _E__pr_info_header_wofn("INFO"),_E__pr_info
+
+
+/**
+ * Print warning information to standard error stream
+ */
+#define E_WARN _E__pr_header(__FILE__, __LINE__, "WARNING"),_E__pr_warn
+
+/**
+ * Print error message to standard error stream
+ */
+#define E_ERROR _E__pr_header(__FILE__, __LINE__, "ERROR"),_E__pr_warn
+
+/**
+ * Set debugging verbosity level.
+ *
+ * Note that debugging messages are only enabled when compiled with -DDEBUG.
+ *
+ * @param level Verbosity level to set, or 0 to disable debug messages.
+ */
+SPHINXBASE_EXPORT
+int err_set_debug_level(int level);
+
+/**
+ * Get debugging verbosity level.
+ *
+ * Note that debugging messages are only enabled when compiled with -DDEBUG.
+ */
+SPHINXBASE_EXPORT
+int err_get_debug_level(void);
+
+/**
+ * Print debugging information to standard error stream.
+ *
+ * This will only print a message if:
+ * 1. Debugging is enabled at compile time
+ * 2. The debug level is greater than or equal to \a level
+ *
+ * Note that for portability reasons the format and arguments must be
+ * enclosed in an extra set of parentheses.
+ */
+#ifdef SPHINX_DEBUG
+#define E_DEBUG(level,x) { \
+ if (err_get_debug_level() >= level) { \
+ _E__pr_header(__FILE__, __LINE__, "DEBUG"); \
+ _E__pr_info x; \
+ } \
+ }
+#define E_DEBUGCONT(level,x) { \
+ if (err_get_debug_level() >= level) { \
+ _E__pr_info x; \
+ } \
+ }
+#else
+#define E_DEBUG(level,x)
+#define E_DEBUGCONT(level,x)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* !_ERR_H */
+
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* f2c.h -- Standard Fortran to C header file */
+
+/** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed."
+
+ - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
+
+#ifndef F2C_INCLUDE
+#define F2C_INCLUDE
+
+typedef int integer;
+typedef char *address;
+typedef short int shortint;
+typedef float real;
+typedef double doublereal;
+typedef struct { real r, i; } complex;
+typedef struct { doublereal r, i; } doublecomplex;
+typedef int logical;
+typedef short int shortlogical;
+typedef char logical1;
+typedef char integer1;
+
+#define TRUE_ (1)
+#define FALSE_ (0)
+
+/* Extern is for use with -E */
+#ifndef Extern
+#define Extern extern
+#endif
+
+/* I/O stuff */
+
+#ifdef f2c_i2
+/* for -i2 */
+typedef short flag;
+typedef short ftnlen;
+typedef short ftnint;
+#else
+typedef int flag;
+typedef int ftnlen;
+typedef int ftnint;
+#endif
+
+/*external read, write*/
+typedef struct
+{ flag cierr;
+ ftnint ciunit;
+ flag ciend;
+ char *cifmt;
+ ftnint cirec;
+} cilist;
+
+/*internal read, write*/
+typedef struct
+{ flag icierr;
+ char *iciunit;
+ flag iciend;
+ char *icifmt;
+ ftnint icirlen;
+ ftnint icirnum;
+} icilist;
+
+/*open*/
+typedef struct
+{ flag oerr;
+ ftnint ounit;
+ char *ofnm;
+ ftnlen ofnmlen;
+ char *osta;
+ char *oacc;
+ char *ofm;
+ ftnint orl;
+ char *oblnk;
+} olist;
+
+/*close*/
+typedef struct
+{ flag cerr;
+ ftnint cunit;
+ char *csta;
+} cllist;
+
+/*rewind, backspace, endfile*/
+typedef struct
+{ flag aerr;
+ ftnint aunit;
+} alist;
+
+/* inquire */
+typedef struct
+{ flag inerr;
+ ftnint inunit;
+ char *infile;
+ ftnlen infilen;
+ ftnint *inex; /*parameters in standard's order*/
+ ftnint *inopen;
+ ftnint *innum;
+ ftnint *innamed;
+ char *inname;
+ ftnlen innamlen;
+ char *inacc;
+ ftnlen inacclen;
+ char *inseq;
+ ftnlen inseqlen;
+ char *indir;
+ ftnlen indirlen;
+ char *infmt;
+ ftnlen infmtlen;
+ char *inform;
+ ftnint informlen;
+ char *inunf;
+ ftnlen inunflen;
+ ftnint *inrecl;
+ ftnint *innrec;
+ char *inblank;
+ ftnlen inblanklen;
+} inlist;
+
+#define VOID void
+
+union Multitype { /* for multiple entry points */
+ shortint h;
+ integer i;
+ real r;
+ doublereal d;
+ complex c;
+ doublecomplex z;
+ };
+
+typedef union Multitype Multitype;
+
+typedef long Long; /* No longer used; formerly in Namelist */
+
+struct Vardesc { /* for Namelist */
+ char *name;
+ char *addr;
+ ftnlen *dims;
+ int type;
+ };
+typedef struct Vardesc Vardesc;
+
+struct Namelist {
+ char *name;
+ Vardesc **vars;
+ int nvars;
+ };
+typedef struct Namelist Namelist;
+
+#ifndef abs
+#define abs(x) ((x) >= 0 ? (x) : -(x))
+#endif
+#define dabs(x) (doublereal)abs(x)
+#ifndef min
+#define min(a,b) ((a) <= (b) ? (a) : (b))
+#endif
+#ifndef max
+#define max(a,b) ((a) >= (b) ? (a) : (b))
+#endif
+#define dmin(a,b) (doublereal)min(a,b)
+#define dmax(a,b) (doublereal)max(a,b)
+
+/* procedure parameter types for -A and -C++ */
+
+#define F2C_proc_par_types 1
+#ifdef __cplusplus
+typedef int /* Unknown procedure type */ (*U_fp)(...);
+typedef shortint (*J_fp)(...);
+typedef integer (*I_fp)(...);
+typedef real (*R_fp)(...);
+typedef doublereal (*D_fp)(...), (*E_fp)(...);
+typedef /* Complex */ VOID (*C_fp)(...);
+typedef /* Double Complex */ VOID (*Z_fp)(...);
+typedef logical (*L_fp)(...);
+typedef shortlogical (*K_fp)(...);
+typedef /* Character */ VOID (*H_fp)(...);
+typedef /* Subroutine */ int (*S_fp)(...);
+#else
+typedef int /* Unknown procedure type */ (*U_fp)(void);
+typedef shortint (*J_fp)(void);
+typedef integer (*I_fp)(void);
+typedef real (*R_fp)(void);
+typedef doublereal (*D_fp)(void), (*E_fp)(void);
+typedef /* Complex */ VOID (*C_fp)(void);
+typedef /* Double Complex */ VOID (*Z_fp)(void);
+typedef logical (*L_fp)(void);
+typedef shortlogical (*K_fp)(void);
+typedef /* Character */ VOID (*H_fp)(void);
+typedef /* Subroutine */ int (*S_fp)(void);
+#endif
+/* E_fp is for real functions when -R is not specified */
+typedef VOID C_f; /* complex function */
+typedef VOID H_f; /* character function */
+typedef VOID Z_f; /* double complex function */
+typedef doublereal E_f; /* real function with -R not specified */
+
+/* undef any lower-case symbols that your C compiler predefines, e.g.: */
+
+#ifndef Skip_f2c_Undefs
+#undef cray
+#undef gcos
+#undef mc68010
+#undef mc68020
+#undef mips
+#undef pdp11
+#undef sgi
+#undef sparc
+#undef sun
+#undef sun2
+#undef sun3
+#undef sun4
+#undef u370
+#undef u3b
+#undef u3b2
+#undef u3b5
+#undef unix
+#undef vax
+#endif
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1996-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * fe.h
+ *
+ * $Log: fe.h,v $
+ * Revision 1.11 2005/02/05 02:15:02 egouvea
+ * Removed fe_process(), never used
+ *
+ * Revision 1.10 2004/12/10 16:48:55 rkm
+ * Added continuous density acoustic model handling
+ *
+ *
+ */
+
+#if defined(WIN32) && !defined(GNUWINCE)
+#define srand48(x) srand(x)
+#define lrand48() rand()
+#endif
+
+#ifndef _NEW_FE_H_
+#define _NEW_FE_H_
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/fixpoint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#ifdef WORDS_BIGENDIAN
+#define NATIVE_ENDIAN "big"
+#else
+#define NATIVE_ENDIAN "little"
+#endif
+
+/** Default number of samples per second. */
+#define DEFAULT_SAMPLING_RATE 16000
+/** Default number of frames per second. */
+#define DEFAULT_FRAME_RATE 100
+/** Default spacing between frame starts (equal to
+ * DEFAULT_SAMPLING_RATE/DEFAULT_FRAME_RATE) */
+#define DEFAULT_FRAME_SHIFT 160
+/** Default size of each frame (410 samples @ 16000Hz). */
+#define DEFAULT_WINDOW_LENGTH 0.025625
+/** Default number of FFT points. */
+#define DEFAULT_FFT_SIZE 512
+/** Default number of MFCC coefficients in output. */
+#define DEFAULT_NUM_CEPSTRA 13
+/** Default number of filter bands used to generate MFCCs. */
+#define DEFAULT_NUM_FILTERS 40
+/** Default lower edge of mel filter bank. */
+#define DEFAULT_LOWER_FILT_FREQ 133.33334
+/** Default upper edge of mel filter bank. */
+#define DEFAULT_UPPER_FILT_FREQ 6855.4976
+/** Default pre-emphasis filter coefficient. */
+#define DEFAULT_PRE_EMPHASIS_ALPHA 0.97
+/** Default type of frequency warping to use for VTLN. */
+#define DEFAULT_WARP_TYPE "inverse_linear"
+/** Default random number seed to use for dithering. */
+#define SEED -1
+
+#define waveform_to_cepstral_command_line_macro() \
+ { "-logspec", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Write out logspectral files instead of cepstra" }, \
+ \
+ { "-smoothspec", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Write out cepstral-smoothed logspectral files" }, \
+ \
+ { "-transform", \
+ ARG_STRING, \
+ "legacy", \
+ "Which type of transform to use to calculate cepstra (legacy, dct, or htk)" }, \
+ \
+ { "-alpha", \
+ ARG_FLOAT32, \
+ ARG_STRINGIFY(DEFAULT_PRE_EMPHASIS_ALPHA), \
+ "Preemphasis parameter" }, \
+ \
+ { "-samprate", \
+ ARG_FLOAT32, \
+ ARG_STRINGIFY(DEFAULT_SAMPLING_RATE), \
+ "Sampling rate" }, \
+ \
+ { "-frate", \
+ ARG_INT32, \
+ ARG_STRINGIFY(DEFAULT_FRAME_RATE), \
+ "Frame rate" }, \
+ \
+ { "-wlen", \
+ ARG_FLOAT32, \
+ ARG_STRINGIFY(DEFAULT_WINDOW_LENGTH), \
+ "Hamming window length" }, \
+ \
+ { "-nfft", \
+ ARG_INT32, \
+ ARG_STRINGIFY(DEFAULT_FFT_SIZE), \
+ "Size of FFT" }, \
+ \
+ { "-nfilt", \
+ ARG_INT32, \
+ ARG_STRINGIFY(DEFAULT_NUM_FILTERS), \
+ "Number of filter banks" }, \
+ \
+ { "-lowerf", \
+ ARG_FLOAT32, \
+ ARG_STRINGIFY(DEFAULT_LOWER_FILT_FREQ), \
+ "Lower edge of filters" }, \
+ \
+ { "-upperf", \
+ ARG_FLOAT32, \
+ ARG_STRINGIFY(DEFAULT_UPPER_FILT_FREQ), \
+ "Upper edge of filters" }, \
+ \
+ { "-unit_area", \
+ ARG_BOOLEAN, \
+ "yes", \
+ "Normalize mel filters to unit area" }, \
+ \
+ { "-round_filters", \
+ ARG_BOOLEAN, \
+ "yes", \
+ "Round mel filter frequencies to DFT points" }, \
+ \
+ { "-ncep", \
+ ARG_INT32, \
+ ARG_STRINGIFY(DEFAULT_NUM_CEPSTRA), \
+ "Number of cep coefficients" }, \
+ \
+ { "-doublebw", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Use double bandwidth filters (same center freq)" }, \
+ \
+ { "-lifter", \
+ ARG_INT32, \
+ "0", \
+ "Length of sin-curve for liftering, or 0 for no liftering." }, \
+ \
+ { "-input_endian", \
+ ARG_STRING, \
+ NATIVE_ENDIAN, \
+ "Endianness of input data, big or little, ignored if NIST or MS Wav" }, \
+ \
+ { "-warp_type", \
+ ARG_STRING, \
+ DEFAULT_WARP_TYPE, \
+ "Warping function type (or shape)" }, \
+ \
+ { "-warp_params", \
+ ARG_STRING, \
+ NULL, \
+ "Parameters defining the warping function" }, \
+ \
+ { "-dither", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Add 1/2-bit noise" }, \
+ \
+ { "-seed", \
+ ARG_INT32, \
+ ARG_STRINGIFY(SEED), \
+ "Seed for random number generator; if less than zero, pick our own" }, \
+ \
+ { "-remove_dc", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Remove DC offset from each frame" }, \
+ \
+ { "-verbose", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Show input filenames" } \
+
+
+#ifdef FIXED_POINT
+/** MFCC computation type. */
+typedef fixed32 mfcc_t;
+
+/** Convert a floating-point value to mfcc_t. */
+#define FLOAT2MFCC(x) FLOAT2FIX(x)
+/** Convert a mfcc_t value to floating-point. */
+#define MFCC2FLOAT(x) FIX2FLOAT(x)
+/** Multiply two mfcc_t values. */
+#define MFCCMUL(a,b) FIXMUL(a,b)
+#define MFCCLN(x,in,out) FIXLN_ANY(x,in,out)
+#else /* !FIXED_POINT */
+
+/** MFCC computation type. */
+typedef float32 mfcc_t;
+/** Convert a floating-point value to mfcc_t. */
+#define FLOAT2MFCC(x) (x)
+/** Convert a mfcc_t value to floating-point. */
+#define MFCC2FLOAT(x) (x)
+/** Multiply two mfcc_t values. */
+#define MFCCMUL(a,b) ((a)*(b))
+#define MFCCLN(x,in,out) log(x)
+#endif /* !FIXED_POINT */
+
+/**
+ * Structure for the front-end computation.
+ */
+typedef struct fe_s fe_t;
+
+/**
+ * Error codes returned by stuff.
+ */
+enum fe_error_e {
+ FE_SUCCESS = 0,
+ FE_OUTPUT_FILE_SUCCESS = 0,
+ FE_CONTROL_FILE_ERROR = -1,
+ FE_START_ERROR = -2,
+ FE_UNKNOWN_SINGLE_OR_BATCH = -3,
+ FE_INPUT_FILE_OPEN_ERROR = -4,
+ FE_INPUT_FILE_READ_ERROR = -5,
+ FE_MEM_ALLOC_ERROR = -6,
+ FE_OUTPUT_FILE_WRITE_ERROR = -7,
+ FE_OUTPUT_FILE_OPEN_ERROR = -8,
+ FE_ZERO_ENERGY_ERROR = -9,
+ FE_INVALID_PARAM_ERROR = -10
+};
+
+/**
+ * Initialize a front-end object from global command-line.
+ *
+ * This is equivalent to calling fe_init_auto_r(cmd_ln_get()).
+ *
+ * @return Newly created front-end object.
+ */
+SPHINXBASE_EXPORT
+fe_t* fe_init_auto(void);
+
+/**
+ * Get the default set of arguments for fe_init_auto_r().
+ *
+ * @return Pointer to an argument structure which can be passed to
+ * cmd_ln_init() in friends to create argument structures for
+ * fe_init_auto_r().
+ */
+SPHINXBASE_EXPORT
+arg_t const *fe_get_args(void);
+
+/**
+ * Initialize a front-end object from a command-line parse.
+ *
+ * @param config Command-line object, as returned by cmd_ln_parse_r()
+ * or cmd_ln_parse_file(). Ownership of this object is
+ * claimed by the fe_t, so you must not attempt to free
+ * it manually. Use cmd_ln_retain() if you wish to
+ * reuse it.
+ * @return Newly created front-end object.
+ */
+SPHINXBASE_EXPORT
+fe_t *fe_init_auto_r(cmd_ln_t *config);
+
+/**
+ * Retrieve the command-line object used to initialize this front-end.
+ *
+ * @return command-line object for this front-end. This pointer is
+ * retained by the fe_t, so you should not attempt to free it
+ * manually.
+ */
+SPHINXBASE_EXPORT
+cmd_ln_t *fe_get_config(fe_t *fe);
+
+/**
+ * Start processing an utterance.
+ * @return 0 for success, <0 for error (see enum fe_error_e)
+ */
+SPHINXBASE_EXPORT
+int fe_start_utt(fe_t *fe);
+
+/**
+ * Get the dimensionality of the output of this front-end object.
+ *
+ * This is guaranteed to be the number of values in one frame of
+ * output from fe_end_utt(), fe_process_frame(), and
+ * fe_process_frames(). It is usually the number of MFCC
+ * coefficients, but it might be the number of log-spectrum bins, if
+ * the <tt>-logspec</tt> or <tt>-smoothspec</tt> options to
+ * fe_init_auto() were true.
+ *
+ * @return Dimensionality of front-end output.
+ */
+SPHINXBASE_EXPORT
+int fe_get_output_size(fe_t *fe);
+
+/**
+ * Get the dimensionality of the input to this front-end object.
+ *
+ * This function retrieves the number of input samples consumed by one
+ * frame of processing. To obtain one frame of output, you must have
+ * at least <code>*out_frame_size</code> samples. To obtain <i>N</i>
+ * frames of output, you must have at least <code>(N-1) *
+ * *out_frame_shift + *out_frame_size</code> input samples.
+ *
+ * @param out_frame_shift Output: Number of samples between each frame start.
+ * @param out_frame_size Output: Number of samples in each frame.
+ */
+SPHINXBASE_EXPORT
+void fe_get_input_size(fe_t *fe, int *out_frame_shift,
+ int *out_frame_size);
+
+/**
+ * Finish processing an utterance.
+ *
+ * This function also collects any remaining samples and calculates a
+ * final cepstral vector. If there are overflow samples remaining, it
+ * will pad with zeros to make a complete frame.
+ *
+ * @param fe Front-end object.
+ * @param out_cepvector Buffer to hold a residual cepstral vector, or NULL
+ * if you wish to ignore it. Must be large enough
+ * @param out_nframes Number of frames of residual cepstra created
+ * (either 0 or 1).
+ * @return 0 for success, <0 for error (see enum fe_error_e)
+ */
+SPHINXBASE_EXPORT
+int fe_end_utt(fe_t *fe, mfcc_t *out_cepvector, int32 *out_nframes);
+
+/**
+ * Retain ownership of a front end object.
+ *
+ * @return pointer to the retained front end.
+ */
+SPHINXBASE_EXPORT
+fe_t *fe_retain(fe_t *fe);
+
+/**
+ * Free the front end.
+ *
+ * Releases resources associated with the front-end object.
+ *
+ * @return new reference count (0 if freed completely)
+ */
+SPHINXBASE_EXPORT
+int fe_free(fe_t *fe);
+
+/**
+ * Process one frame of samples.
+ *
+ * @param spch Speech samples (signed 16-bit linear PCM)
+ * @param nsamps Number of samples in <code>spch</code>
+ * @param buf_cep Buffer which will receive one frame of features.
+ * @return 0 for success, <0 for error (see enum fe_error_e)
+ */
+SPHINXBASE_EXPORT
+int fe_process_frame(fe_t *fe, int16 const *spch,
+ int32 nsamps, mfcc_t *out_cep);
+
+/**
+ * Process a block of samples.
+ *
+ * This function generates up to <code>*inout_nframes</code> of
+ * features, or as many as can be generated from
+ * <code>*inout_nsamps</code> samples.
+ *
+ * On exit, the <code>inout_spch</code>, <code>inout_nsamps</code>,
+ * and <code>inout_nframes</code> parameters are updated to point to
+ * the remaining sample data, the number of remaining samples, and the
+ * number of frames processed, respectively. This allows you to call
+ * this repeatedly to process a large block of audio in small (say,
+ * 5-frame) chunks:
+ *
+ * int16 *bigbuf, *p;
+ * mfcc_t **cepstra;
+ * int32 nsamps;
+ * int32 nframes = 5;
+ *
+ * cepstra = (mfcc_t **)
+ * ckd_calloc_2d(nframes, fe_get_output_size(fe), sizeof(**cepstra));
+ * p = bigbuf;
+ * while (nsamps) {
+ * nframes = 5;
+ * fe_process_frames(fe, &p, &nsamps, cepstra, &nframes);
+ * // Now do something with these frames...
+ * if (nframes)
+ * do_some_stuff(cepstra, nframes);
+ * }
+ *
+ * @param inout_spch Input: Pointer to pointer to speech samples
+ * (signed 16-bit linear PCM).
+ * Output: Pointer to remaining samples.
+ * @param inout_nsamps Input: Pointer to maximum number of samples to
+ * process.
+ * Output: Number of samples remaining in input buffer.
+ * @param buf_cep Two-dimensional buffer (allocated with
+ * ckd_calloc_2d()) which will receive frames of output
+ * data. If NULL, no actual processing will be done,
+ * and the maximum number of output frames which would
+ * be generated is returned in
+ * <code>*inout_nframes</code>.
+ * @param inout_nframes Input: Pointer to maximum number of frames to
+ * generate.
+ * Output: Number of frames actually generated.
+ * @return 0 for success, <0 for failure (see enum fe_error_e)
+ */
+SPHINXBASE_EXPORT
+int fe_process_frames(fe_t *fe,
+ int16 const **inout_spch,
+ size_t *inout_nsamps,
+ mfcc_t **buf_cep,
+ int32 *inout_nframes);
+
+/**
+ * Process a block of samples, returning as many frames as possible.
+ *
+ * This function processes all the samples in a block of data and
+ * returns a newly allocated block of feature vectors. This block
+ * needs to be freed with fe_free_2d() after use.
+ *
+ * It is possible for there to be some left-over data which could not
+ * fit in a complete frame. This data can be processed with
+ * fe_end_utt().
+ *
+ * This function is deprecated in favor of fe_process_frames().
+ *
+ * @return 0 for success, <0 for failure (see enum fe_error_e)
+ */
+SPHINXBASE_EXPORT
+int fe_process_utt(fe_t *fe, /**< A front end object */
+ int16 const *spch, /**< The speech samples */
+ size_t nsamps, /**< number of samples*/
+ mfcc_t ***cep_block, /**< Output pointer to cepstra */
+ int32 *nframes /**< Number of frames processed */
+ );
+
+/**
+ * Free the output pointer returned by fe_process_utt().
+ **/
+SPHINXBASE_EXPORT
+void fe_free_2d(void *arr);
+
+/**
+ * Convert a block of mfcc_t to float32 (can be done in-place)
+ **/
+SPHINXBASE_EXPORT
+int fe_mfcc_to_float(fe_t *fe,
+ mfcc_t **input,
+ float32 **output,
+ int32 nframes);
+
+/**
+ * Convert a block of float32 to mfcc_t (can be done in-place)
+ **/
+SPHINXBASE_EXPORT
+int fe_float_to_mfcc(fe_t *fe,
+ float32 **input,
+ mfcc_t **output,
+ int32 nframes);
+
+/**
+ * Process one frame of log spectra into MFCC using discrete cosine
+ * transform.
+ *
+ * This uses a variant of the DCT-II where the first frequency bin is
+ * scaled by 0.5. Unless somebody misunderstood the DCT-III equations
+ * and thought that's what they were implementing here, this is
+ * ostensibly done to account for the symmetry properties of the
+ * DCT-II versus the DFT - the first coefficient of the input is
+ * assumed to be repeated in the negative frequencies, which is not
+ * the case for the DFT. (This begs the question, why not just use
+ * the DCT-I, since it has the appropriate symmetry properties...)
+ * Moreover, this is bogus since the mel-frequency bins on which we
+ * are doing the DCT don't extend to the edge of the DFT anyway.
+ *
+ * This also means that the matrix used in computing this DCT can not
+ * be made orthogonal, and thus inverting the transform is difficult.
+ * Therefore if you want to do cepstral smoothing or have some other
+ * reason to invert your MFCCs, use fe_logspec_dct2() and its inverse
+ * fe_logspec_dct3() instead.
+ *
+ * Also, it normalizes by 1/nfilt rather than 2/nfilt, for some reason.
+ **/
+SPHINXBASE_EXPORT
+int fe_logspec_to_mfcc(fe_t *fe, /**< A fe structure */
+ const mfcc_t *fr_spec, /**< One frame of spectrum */
+ mfcc_t *fr_cep /**< One frame of cepstrum */
+ );
+
+/**
+ * Convert log spectra to MFCC using DCT-II.
+ *
+ * This uses the "unitary" form of the DCT-II, i.e. with a scaling
+ * factor of sqrt(2/N) and a "beta" factor of sqrt(1/2) applied to the
+ * cos(0) basis vector (i.e. the one corresponding to the DC
+ * coefficient in the output).
+ **/
+SPHINXBASE_EXPORT
+int fe_logspec_dct2(fe_t *fe, /**< A fe structure */
+ const mfcc_t *fr_spec, /**< One frame of spectrum */
+ mfcc_t *fr_cep /**< One frame of cepstrum */
+ );
+
+/**
+ * Convert MFCC to log spectra using DCT-III.
+ *
+ * This uses the "unitary" form of the DCT-III, i.e. with a scaling
+ * factor of sqrt(2/N) and a "beta" factor of sqrt(1/2) applied to the
+ * cos(0) basis vector (i.e. the one corresponding to the DC
+ * coefficient in the input).
+ **/
+SPHINXBASE_EXPORT
+int fe_mfcc_dct3(fe_t *fe, /**< A fe structure */
+ const mfcc_t *fr_cep, /**< One frame of cepstrum */
+ mfcc_t *fr_spec /**< One frame of spectrum */
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * feat.h -- Cepstral features computation.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.1 2006/04/05 20:27:30 dhdfu
+ * A Great Reorganzation of header files and executables
+ *
+ * Revision 1.17 2006/02/23 03:59:40 arthchan2003
+ * Merged from branch SPHINX3_5_2_RCI_IRII_BRANCH: a, Free buffers correctly. b, Fixed dox-doc.
+ *
+ * Revision 1.16.4.1 2005/07/05 06:25:08 arthchan2003
+ * Fixed dox-doc.
+ *
+ * Revision 1.16 2005/06/22 03:29:35 arthchan2003
+ * Makefile.am s for all subdirectory of libs3decoder/
+ *
+ * Revision 1.5 2005/06/13 04:02:56 archan
+ * Fixed most doxygen-style documentation under libs3decoder.
+ *
+ * Revision 1.4 2005/04/21 23:50:26 archan
+ * Some more refactoring on the how reporting of structures inside kbcore_t is done, it is now 50% nice. Also added class-based LM test case into test-decode.sh.in. At this moment, everything in search mode 5 is already done. It is time to test the idea whether the search can really be used.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 20.Apr.2001 RAH (rhoughton@mediasite.com, ricky.houghton@cs.cmu.edu)
+ * Adding feat_free() to free allocated memory
+ *
+ * 04-Jan-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Started.
+ */
+
+
+#ifndef _S3_FEAT_H_
+#define _S3_FEAT_H_
+
+#include <stdio.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/fe.h>
+#include <sphinxbase/cmn.h>
+#include <sphinxbase/agc.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/** \file feat.h
+ * \brief compute the dynamic coefficients from the cepstral vector.
+ */
+#define LIVEBUFBLOCKSIZE 256 /** Blocks of 256 vectors allocated
+ for livemode decoder */
+#define S3_MAX_FRAMES 15000 /* RAH, I believe this is still too large, but better than before */
+
+#define cepstral_to_feature_command_line_macro() \
+{ "-feat", \
+ ARG_STRING, \
+ "1s_c_d_dd", \
+ "Feature stream type, depends on the acoustic model" }, \
+{ "-ceplen", \
+ ARG_INT32, \
+ "13", \
+ "Number of components in the input feature vector" }, \
+{ "-cmn", \
+ ARG_STRING, \
+ "current", \
+ "Cepstral mean normalization scheme ('current', 'prior', or 'none')" }, \
+{ "-cmninit", \
+ ARG_STRING, \
+ "8.0", \
+ "Initial values (comma-separated) for cepstral mean when 'prior' is used" }, \
+{ "-varnorm", \
+ ARG_BOOLEAN, \
+ "no", \
+ "Variance normalize each utterance (only if CMN == current)" }, \
+{ "-agc", \
+ ARG_STRING, \
+ "none", \
+ "Automatic gain control for c0 ('max', 'emax', 'noise', or 'none')" }, \
+{ "-agcthresh", \
+ ARG_FLOAT32, \
+ "2.0", \
+ "Initial threshold for automatic gain control" }, \
+{ "-lda", \
+ ARG_STRING, \
+ NULL, \
+ "File containing transformation matrix to be applied to features (single-stream features only)" }, \
+{ "-ldadim", \
+ ARG_INT32, \
+ "0", \
+ "Dimensionality of output of feature transformation (0 to use entire matrix)" }, \
+{"-svspec", \
+ ARG_STRING, \
+ NULL, \
+ "Subvector specification (e.g., 24,0-11/25,12-23/26-38 or 0-12/13-25/26-38)"}
+
+/**
+ * \struct feat_t
+ * \brief Structure for describing a speech feature type
+ * Structure for describing a speech feature type (no. of streams and stream widths),
+ * as well as the computation for converting the input speech (e.g., Sphinx-II format
+ * MFC cepstra) into this type of feature vectors.
+ */
+typedef struct feat_s {
+ int refcount; /**< Reference count. */
+ char *name; /**< Printable name for this feature type */
+ int32 cepsize; /**< Size of input speech vector (typically, a cepstrum vector) */
+ int32 n_stream; /**< Number of feature streams; e.g., 4 in Sphinx-II */
+ int32 *stream_len; /**< Vector length of each feature stream */
+ int32 window_size; /**< Number of extra frames around given input frame needed to compute
+ corresponding output feature (so total = window_size*2 + 1) */
+ int32 n_sv; /**< Number of subvectors */
+ int32 *sv_len; /**< Vector length of each subvector */
+ int32 **subvecs; /**< Subvector specification (or NULL for none) */
+ mfcc_t *sv_buf; /**< Temporary copy buffer for subvector projection */
+ int32 sv_dim; /**< Total dimensionality of subvector (length of sv_buf) */
+
+ cmn_type_t cmn; /**< Type of CMN to be performed on each utterance */
+ int32 varnorm; /**< Whether variance normalization is to be performed on each utt;
+ Irrelevant if no CMN is performed */
+ agc_type_t agc; /**< Type of AGC to be performed on each utterance */
+
+ /**
+ * Feature computation function.
+ * @param fcb the feat_t describing this feature type
+ * @param input pointer into the input cepstra
+ * @param feat a 2-d array of output features (n_stream x stream_len)
+ * @return 0 if successful, -ve otherwise.
+ *
+ * Function for converting window of input speech vector
+ * (input[-window_size..window_size]) to output feature vector
+ * (feat[stream][]). If NULL, no conversion available, the
+ * speech input must be feature vector itself.
+ **/
+ void (*compute_feat)(struct feat_s *fcb, mfcc_t **input, mfcc_t **feat);
+ cmn_t *cmn_struct; /**< Structure that stores the temporary variables for cepstral
+ means normalization*/
+ agc_t *agc_struct; /**< Structure that stores the temporary variables for acoustic
+ gain control*/
+
+ mfcc_t **cepbuf; /**< Circular buffer of MFCC frames for live feature computation. */
+ mfcc_t **tmpcepbuf; /**< Array of pointers into cepbuf to handle border cases. */
+ int32 bufpos; /**< Write index in cepbuf. */
+ int32 curpos; /**< Read index in cepbuf. */
+
+ mfcc_t ***lda; /**< Array of linear transformations (for LDA, MLLT, or whatever) */
+ uint32 n_lda; /**< Number of linear transformations in lda. */
+ uint32 out_dim; /**< Output dimensionality */
+} feat_t;
+
+/**
+ * Name of feature type.
+ */
+#define feat_name(f) ((f)->name)
+/**
+ * Input dimensionality of feature.
+ */
+#define feat_cepsize(f) ((f)->cepsize)
+/**
+ * Size of dynamic feature window.
+ */
+#define feat_window_size(f) ((f)->window_size)
+/**
+ * Number of feature streams.
+ *
+ * @deprecated Do not use this, use feat_dimension1() instead.
+ */
+#define feat_n_stream(f) ((f)->n_stream)
+/**
+ * Length of feature stream i.
+ *
+ * @deprecated Do not use this, use feat_dimension2() instead.
+ */
+#define feat_stream_len(f,i) ((f)->stream_len[i])
+/**
+ * Number of streams or subvectors in feature output.
+ */
+#define feat_dimension1(f) ((f)->n_sv ? (f)->n_sv : f->n_stream)
+/**
+ * Dimensionality of stream/subvector i in feature output.
+ */
+#define feat_dimension2(f,i) ((f)->sv_len ? (f)->sv_len[i] : f->stream_len[i])
+/**
+ * Total dimensionality of feature output.
+ */
+#define feat_dimension(f) ((f)->out_dim)
+/**
+ * Array with stream/subvector lengths
+ */
+//#define feat_stream_lengths(f) ((f)->sv_len ? (f)->sv_len : f->stream_len)
+#define feat_stream_lengths(f) ((f)->lda ? (&(f)->out_dim) : (f)->sv_len ? (f)->sv_len : f->stream_len)
+
+/**
+ * Parse subvector specification string.
+ *
+ * Format of specification:
+ * \li '/' separated list of subvectors
+ * \li each subvector is a ',' separated list of subranges
+ * \li each subrange is a single \verbatim <number> \endverbatim or
+ * \verbatim <number>-<number> \endverbatim (inclusive), where
+ * \verbatim <number> \endverbatim is a feature vector dimension
+ * specifier.
+ *
+ * E.g., "24,0-11/25,12-23/26,27-38" has:
+ * \li 3 subvectors
+ * \li the 1st subvector has feature dims: 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, and 11.
+ * \li etc.
+ *
+ * @param str subvector specification string.
+ * @return allocated 2-D array of subvector specs (free with
+ * subvecs_free()). If there are N subvectors specified, subvec[N] =
+ * NULL; and each subvec[0]..subvec[N-1] is -1 terminated vector of
+ * feature dims.
+ */
+SPHINXBASE_EXPORT
+int32 **parse_subvecs(char const *str);
+
+/**
+ * Free array of subvector specs.
+ */
+SPHINXBASE_EXPORT
+void subvecs_free(int32 **subvecs);
+
+
+/**
+ * Allocate an array to hold several frames worth of feature vectors. The returned value
+ * is the mfcc_t ***data array, organized as follows:
+ *
+ * - data[0][0] = frame 0 stream 0 vector, data[0][1] = frame 0 stream 1 vector, ...
+ * - data[1][0] = frame 1 stream 0 vector, data[0][1] = frame 1 stream 1 vector, ...
+ * - data[2][0] = frame 2 stream 0 vector, data[0][1] = frame 2 stream 1 vector, ...
+ * - ...
+ *
+ * NOTE: For I/O convenience, the entire data area is allocated as one contiguous block.
+ * @return pointer to the allocated space if successful, NULL if any error.
+ */
+SPHINXBASE_EXPORT
+mfcc_t ***feat_array_alloc(feat_t *fcb, /**< In: Descriptor from feat_init(), used
+ to obtain number of streams and stream sizes */
+ int32 nfr /**< In: Number of frames for which to allocate */
+ );
+
+/**
+ * Free a buffer allocated with feat_array_alloc()
+ */
+SPHINXBASE_EXPORT
+void feat_array_free(mfcc_t ***feat);
+
+
+/**
+ * Initialize feature module to use the selected type of feature stream.
+ * One-time only initialization at the beginning of the program. Input type
+ * is a string defining the kind of input->feature conversion desired:
+ *
+ * - "s2_4x": s2mfc->Sphinx-II 4-feature stream,
+ * - "1s_c_d_dd": s2mfc->Sphinx 3.x single feature stream,
+ * - "s3_1x39": s2mfc->Sphinx 3.0 single feature stream,
+ * - "n1,n2,n3,...": Explicit feature vector layout spec. with comma-separated
+ * feature stream lengths. In this case, the input data is already in the
+ * feature format and there is no conversion necessary.
+ *
+ * @return (feat_t *) descriptor if successful, NULL if error. Caller
+ * must not directly modify the contents of the returned value.
+ */
+SPHINXBASE_EXPORT
+feat_t *feat_init(char const *type,/**< In: Type of feature stream */
+ cmn_type_t cmn, /**< In: Type of cepstram mean normalization to
+ be done before feature computation; can be
+ CMN_NONE (for none) */
+ int32 varnorm, /**< In: (boolean) Whether variance
+ normalization done on each utt; only
+ applicable if CMN also done */
+ agc_type_t agc, /**< In: Type of automatic gain control to be
+ done before feature computation */
+ int32 breport, /**< In: Whether to show a report for feat_t */
+ int32 cepsize /**< Number of components in the input vector
+ (or 0 for the default for this feature type,
+ which is usually 13) */
+ );
+
+/**
+ * Add an LDA transformation to the feature module from a file.
+ * @return 0 for success or -1 if reading the LDA file failed.
+ **/
+SPHINXBASE_EXPORT
+int32 feat_read_lda(feat_t *feat, /**< In: Descriptor from feat_init() */
+ const char *ldafile, /**< In: File to read the LDA matrix from. */
+ int32 dim /**< In: Dimensionality of LDA output. */
+ );
+
+/**
+ * Transform a block of features using the feature module's LDA transform.
+ **/
+SPHINXBASE_EXPORT
+void feat_lda_transform(feat_t *fcb, /**< In: Descriptor from feat_init() */
+ mfcc_t ***inout_feat, /**< Feature block to transform. */
+ uint32 nfr /**< In: Number of frames in inout_feat. */
+ );
+
+/**
+ * Add a subvector specification to the feature module.
+ *
+ * The subvector splitting will be performed after dynamic feature
+ * computation, CMN, AGC, and any LDA transformation. The number of
+ * streams in the dynamic feature type must be one, as with LDA.
+ *
+ * After adding a subvector specification, the output of feature
+ * computation will be split into multiple subvectors, and
+ * feat_array_alloc() will allocate pointers accordingly. The number
+ * of <em>streams</em> will remain the
+ *
+ * @param fcb the feature descriptor.
+ * @param subvecs subvector specification. This pointer is retained
+ * by the feat_t and should not be freed manually.
+ * @return 0 for success or -1 if the subvector specification was
+ * invalid.
+ */
+SPHINXBASE_EXPORT
+int feat_set_subvecs(feat_t *fcb, int32 **subvecs);
+
+/**
+ * Print the given block of feature vectors to the given FILE.
+ */
+SPHINXBASE_EXPORT
+void feat_print(feat_t *fcb, /**< In: Descriptor from feat_init() */
+ mfcc_t ***feat, /**< In: Feature data to be printed */
+ int32 nfr, /**< In: Number of frames of feature data above */
+ FILE *fp /**< In: Output file pointer */
+ );
+
+
+/**
+ * Read a specified MFC file (or given segment within it), perform
+ * CMN/AGC as indicated by <code>fcb</code>, and compute feature
+ * vectors. Feature vectors are computed for the entire segment
+ * specified, by including additional surrounding or padding frames to
+ * accommodate the feature windows.
+ *
+ * @return Number of frames of feature vectors computed if successful;
+ * -1 if any error. <code>If</code> feat is NULL, then no actual
+ * computation will be done, and the number of frames which must be
+ * allocated will be returned.
+ *
+ * A note on how the file path is constructed: If the control file
+ * already specifies extension or absolute path, then these are not
+ * applied. The default extension is defined by the application.
+ */
+SPHINXBASE_EXPORT
+int32 feat_s2mfc2feat(feat_t *fcb, /**< In: Descriptor from feat_init() */
+ const char *file, /**< In: File to be read */
+ const char *dir, /**< In: Directory prefix for file,
+ if needed; can be NULL */
+ const char *cepext,/**< In: Extension of the
+ cepstrum file.It cannot be
+ NULL */
+ int32 sf, int32 ef, /* Start/End frames
+ within file to be read. Use
+ 0,-1 to process entire
+ file */
+ mfcc_t ***feat, /**< Out: Computed feature vectors;
+ caller must allocate this space */
+ int32 maxfr /**< In: Available space (number of frames) in
+ above feat array; it must be
+ sufficient to hold the result.
+ Pass -1 for no limit. */
+ );
+
+
+/**
+ * Feature computation routine for live mode decoder.
+ *
+ * This function computes features for blocks of incoming data. It
+ * retains an internal buffer for computing deltas, which means that
+ * the number of output frames will not necessarily equal the number
+ * of input frames.
+ *
+ * <strong>It is very important</strong> to realize that the number of
+ * output frames can be <strong>greater than</strong> the number of
+ * input frames, specifically when <code>endutt</code> is true. It is
+ * guaranteed to never exceed <code>*inout_ncep +
+ * feat_window_size(fcb)</code>. You <strong>MUST</strong> have
+ * allocated at least that many frames in <code>ofeat</code>, or you
+ * will experience a buffer overflow.
+ *
+ * If beginutt and endutt are both true, CMN_CURRENT and AGC_MAX will
+ * be done. Otherwise only CMN_PRIOR and AGC_EMAX will be done.
+ *
+ * If beginutt is false, endutt is true, and the number of input
+ * frames exceeds the input size, then end-of-utterance processing
+ * won't actually be done. This condition can easily be checked,
+ * because <code>*inout_ncep</code> will equal the return value on
+ * exit, and will also be smaller than the value of
+ * <code>*inout_ncep</code> on entry.
+ *
+ * @return The number of output frames actually computed.
+ **/
+SPHINXBASE_EXPORT
+int32 feat_s2mfc2feat_live(feat_t *fcb, /**< In: Descriptor from feat_init() */
+ mfcc_t **uttcep, /**< In: Incoming cepstral buffer */
+ int32 *inout_ncep,/**< In: Size of incoming buffer.
+ Out: Number of incoming frames consumed. */
+ int32 beginutt, /**< In: Begining of utterance flag */
+ int32 endutt, /**< In: End of utterance flag */
+ mfcc_t ***ofeat /**< In: Output feature buffer. See
+ <strong>VERY IMPORTANT</strong> note
+ about the size of this buffer above. */
+ );
+
+
+/**
+ * Retain ownership of feat_t.
+ *
+ * @return pointer to retained feat_t.
+ */
+SPHINXBASE_EXPORT
+feat_t *feat_retain(feat_t *f);
+
+/**
+ * Release resource associated with feat_t
+ *
+ * @return new reference count (0 if freed)
+ */
+SPHINXBASE_EXPORT
+int feat_free(feat_t *f /**< In: feat_t */
+ );
+
+/**
+ * Report the feat_t data structure
+ */
+SPHINXBASE_EXPORT
+void feat_report(feat_t *f /**< In: feat_t */
+ );
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * filename.h -- File and path name operations.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: filename.h,v $
+ * Revision 1.7 2005/06/22 03:01:07 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 30-Oct-1997 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * Started.
+ */
+
+
+#ifndef _LIBUTIL_FILENAME_H_
+#define _LIBUTIL_FILENAME_H_
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+/**\file filename.h
+ *\brief File names related operation
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Strip off leading path components from the given path and copy the base into base.
+ * Caller must have allocated base (hint: it's always shorter than path).
+ */
+SPHINXBASE_EXPORT
+void path2basename(const char *path, char *base);
+
+/**
+ * Strip off filename from the given path and copy the directory name into dir
+ * Caller must have allocated dir (hint: it's always shorter than path).
+ */
+SPHINXBASE_EXPORT
+void path2dirname(const char *path, char *dir);
+
+
+/**
+ * Strip off the smallest trailing file-extension suffix and copy
+ * the rest into the given root argument. Caller must have
+ * allocated root.
+ */
+SPHINXBASE_EXPORT
+void strip_fileext(const char *file, char *root);
+
+/**
+ * Test whether a pathname is absolute for the current OS.
+ */
+SPHINXBASE_EXPORT
+int path_is_absolute(const char *file);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2005 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ==================================================================== */
+
+/* Fixed-point arithmetic macros.
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#ifndef _FIXPOINT_H_
+#define _FIXPOINT_H_
+
+#include <limits.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#ifndef DEFAULT_RADIX
+#define DEFAULT_RADIX 12
+#endif
+
+/** Fixed-point computation type. */
+typedef int32 fixed32;
+
+/** Convert floating point to fixed point. */
+#define FLOAT2FIX_ANY(x,radix) \
+ (((x)<0.0) ? \
+ ((fixed32)((x)*(float32)(1<<(radix)) - 0.5)) \
+ : ((fixed32)((x)*(float32)(1<<(radix)) + 0.5)))
+#define FLOAT2FIX(x) FLOAT2FIX_ANY(x,DEFAULT_RADIX)
+/** Convert fixed point to floating point. */
+#define FIX2FLOAT_ANY(x,radix) ((float32)(x)/(1<<(radix)))
+#define FIX2FLOAT(x) FIX2FLOAT_ANY(x,DEFAULT_RADIX)
+
+/**
+ * Multiply two fixed point numbers with an arbitrary radix point.
+ *
+ * A veritable multiplicity of implementations exist, starting with
+ * the fastest ones...
+ */
+
+
+/*
+ * This works on most modern ARMs but *only* in ARM mode (for obvious
+ * reasons), so don't use it in Thumb mode (but why are you building
+ * signal processing code in Thumb mode?!)
+ */
+#if defined(__arm__) && !defined(__thumb__)
+#define FIXMUL(a,b) FIXMUL_ANY(a,b,DEFAULT_RADIX)
+#define FIXMUL_ANY(a,b,r) ({ \
+ int cl, ch, _a = a, _b = b; \
+ __asm__ ("smull %0, %1, %2, %3\n" \
+ "mov %0, %0, lsr %4\n" \
+ "orr %0, %0, %1, lsl %5\n" \
+ : "=&r" (cl), "=&r" (ch) \
+ : "r" (_a), "r" (_b), "i" (r), "i" (32-(r)));\
+ cl; })
+#elif defined(BFIN) && DEFAULT_RADIX == 16
+/* Blackfin magic */
+#undef FIXMUL
+/* Use the accumulators for the 16.16 case (probably not as efficient as it could be). */
+#define FIXMUL(a,b) ({ \
+ int c, _a = a, _b = b; \
+ __asm__("%0.L = %1.l * %2.l (FU);\n\t" \
+ "%0.H = %1.h * %2.h (IS);\n\t" \
+ "A1 = %0;\n\t" \
+ "A1 += %1.h * %2.l (IS, M);\n\t" \
+ "%0 = (A1 += %2.h * %1.l) (IS, M);\n\t" \
+ : "=&W" (c) \
+ : "d" (_a), "d" (_b) \
+ : "A1", "cc"); \
+ c; })
+#define FIXMUL_ANY(a,b,radix) ((fixed32)(((int64)(a)*(b))>>(radix)))
+#elif defined(_MSC_VER) || (defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG == 8)
+#define FIXMUL(a,b) FIXMUL_ANY(a,b,DEFAULT_RADIX)
+#define FIXMUL_ANY(a,b,radix) ((fixed32)(((int64)(a)*(b))>>(radix)))
+#else /* Most general case where 'long long' doesn't exist or is slow. */
+#define FIXMUL(a,b) FIXMUL_ANY(a,b,DEFAULT_RADIX)
+#define FIXMUL_ANY(a,b,radix) \
+ (fixed32)(((((uint32)(a))&((1<<(radix))-1)) \
+ * (((uint32)(b))&((1<<(radix))-1)) >> (radix)) \
+ + (((((int32)(a))>>(radix)) * (((int32)(b))>>(radix))) << (radix)) \
+ + ((((uint32)(a))&((1<<(radix))-1)) * (((int32)(b))>>(radix))) \
+ + ((((uint32)(b))&((1<<(radix))-1)) * (((int32)(a))>>(radix))))
+#endif
+
+/* Various fixed-point logarithmic functions that we need. */
+/** Minimum value representable in log format. */
+#define MIN_FIXLOG -2829416 /* log(1e-300) * (1<<DEFAULT_RADIX) */
+#define MIN_FIXLOG2 -4081985 /* log2(1e-300) * (1<<DEFAULT_RADIX) */
+/** Fixed-point representation of log(2) */
+#define FIXLN_2 ((fixed32)(0.693147180559945 * (1<<DEFAULT_RADIX)))
+/** Take natural logarithm of a fixedpoint number. */
+#define FIXLN(x) (fixlog(x) - (FIXLN_2 * DEFAULT_RADIX))
+/**
+ * Take natural logarithm of an integer, yielding a fixedpoint number
+ * with DEFAULT_RADIX as radix point.
+ */
+int32 fixlog(uint32 x);
+/**
+ * Take base-2 logarithm of an integer, yielding a fixedpoint number
+ * with DEFAULT_RADIX as radix point.
+ */
+int32 fixlog2(uint32 x);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _FIXPOINT_H_ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * fsg_model.h -- Word-level finite state graph
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 2003 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ */
+
+
+#ifndef __FSG_MODEL_H__
+#define __FSG_MODEL_H__
+
+/* System headers. */
+#include <stdio.h>
+#include <string.h>
+
+/* SphinxBase headers. */
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/glist.h>
+#include <sphinxbase/logmath.h>
+#include <sphinxbase/bitvec.h>
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/listelem_alloc.h>
+#include <sphinxbase/sphinxbase_export.h>
+
+/*
+ * A single transition in the FSG.
+ */
+typedef struct fsg_link_s {
+ int32 from_state;
+ int32 to_state;
+ int32 logs2prob; /**< log(transition probability)*lw */
+ int32 wid; /**< Word-ID; <0 if epsilon or null transition */
+} fsg_link_t;
+
+/* Access macros */
+#define fsg_link_from_state(l) ((l)->from_state)
+#define fsg_link_to_state(l) ((l)->to_state)
+#define fsg_link_wid(l) ((l)->wid)
+#define fsg_link_logs2prob(l) ((l)->logs2prob)
+
+/**
+ * Adjacency list (opaque) for a state in an FSG.
+ */
+typedef struct trans_list_s trans_list_t;
+
+/**
+ * Word level FSG definition.
+ * States are simply integers 0..n_state-1.
+ * A transition emits a word and has a given probability of being taken.
+ * There can also be null or epsilon transitions, with no associated emitted
+ * word.
+ */
+typedef struct fsg_model_s {
+ int refcount; /**< Reference count. */
+ char *name; /**< A unique string identifier for this FSG */
+ int32 n_word; /**< Number of unique words in this FSG */
+ int32 n_word_alloc; /**< Number of words allocated in vocab */
+ char **vocab; /**< Vocabulary for this FSG. */
+ bitvec_t *silwords; /**< Indicates which words are silence/fillers. */
+ bitvec_t *altwords; /**< Indicates which words are pronunciation alternates. */
+ logmath_t *lmath; /**< Pointer to log math computation object. */
+ int32 n_state; /**< number of states in FSG */
+ int32 start_state; /**< Must be in the range [0..n_state-1] */
+ int32 final_state; /**< Must be in the range [0..n_state-1] */
+ float32 lw; /**< Language weight that's been applied to transition
+ logprobs */
+ trans_list_t *trans; /**< Transitions out of each state, if any. */
+ listelem_alloc_t *link_alloc; /**< Allocator for FSG links. */
+} fsg_model_t;
+
+/* Access macros */
+#define fsg_model_name(f) ((f)->name)
+#define fsg_model_n_state(f) ((f)->n_state)
+#define fsg_model_start_state(f) ((f)->start_state)
+#define fsg_model_final_state(f) ((f)->final_state)
+#define fsg_model_log(f,p) logmath_log((f)->lmath, p)
+#define fsg_model_lw(f) ((f)->lw)
+#define fsg_model_n_word(f) ((f)->n_word)
+#define fsg_model_word_str(f,wid) (wid == -1 ? "(NULL)" : (f)->vocab[wid])
+
+/**
+ * Iterator over arcs.
+ */
+typedef struct fsg_arciter_s fsg_arciter_t;
+
+/**
+ * Have silence transitions been added?
+ */
+#define fsg_model_has_sil(f) ((f)->silwords != NULL)
+
+/**
+ * Have alternate word transitions been added?
+ */
+#define fsg_model_has_alt(f) ((f)->altwords != NULL)
+
+#define fsg_model_is_filler(f,wid) \
+ (fsg_model_has_sil(f) ? bitvec_is_set((f)->silwords, wid) : FALSE)
+#define fsg_model_is_alt(f,wid) \
+ (fsg_model_has_alt(f) ? bitvec_is_set((f)->altwords, wid) : FALSE)
+
+/**
+ * Create a new FSG.
+ */
+SPHINXBASE_EXPORT
+fsg_model_t *fsg_model_init(char const *name, logmath_t *lmath,
+ float32 lw, int32 n_state);
+
+/**
+ * Read a word FSG from the given file and return a pointer to the structure
+ * created. Return NULL if any error occurred.
+ *
+ * File format:
+ *
+ * <pre>
+ * Any number of comment lines; ignored
+ * FSG_BEGIN [<fsgname>]
+ * N <#states>
+ * S <start-state ID>
+ * F <final-state ID>
+ * T <from-state> <to-state> <prob> [<word-string>]
+ * T ...
+ * ... (any number of state transitions)
+ * FSG_END
+ * Any number of comment lines; ignored
+ * </pre>
+ *
+ * The FSG spec begins with the line containing the keyword FSG_BEGIN.
+ * It has an optional fsg name string. If not present, the FSG has the empty
+ * string as its name.
+ *
+ * Following the FSG_BEGIN declaration is the number of states, the start
+ * state, and the final state, each on a separate line. States are numbered
+ * in the range [0 .. <numberofstate>-1].
+ *
+ * These are followed by all the state transitions, each on a separate line,
+ * and terminated by the FSG_END line. A state transition has the given
+ * probability of being taken, and emits the given word. The word emission
+ * is optional; if word-string omitted, it is an epsilon or null transition.
+ *
+ * Comments can also be embedded within the FSG body proper (i.e. between
+ * FSG_BEGIN and FSG_END): any line with a # character in col 1 is treated
+ * as a comment line.
+ *
+ * Return value: a new fsg_model_t structure if the file is successfully
+ * read, NULL otherwise.
+ */
+SPHINXBASE_EXPORT
+fsg_model_t *fsg_model_readfile(const char *file, logmath_t *lmath, float32 lw);
+
+/**
+ * Like fsg_model_readfile(), but from an already open stream.
+ */
+SPHINXBASE_EXPORT
+fsg_model_t *fsg_model_read(FILE *fp, logmath_t *lmath, float32 lw);
+
+/**
+ * Retain ownership of an FSG.
+ *
+ * @return Pointer to retained FSG.
+ */
+SPHINXBASE_EXPORT
+fsg_model_t *fsg_model_retain(fsg_model_t *fsg);
+
+/**
+ * Free the given word FSG.
+ *
+ * @return new reference count (0 if freed completely)
+ */
+SPHINXBASE_EXPORT
+int fsg_model_free(fsg_model_t *fsg);
+
+/**
+ * Add a word to the FSG vocabulary.
+ *
+ * @return Word ID for this new word.
+ */
+SPHINXBASE_EXPORT
+int fsg_model_word_add(fsg_model_t *fsg, char const *word);
+
+/**
+ * Look up a word in the FSG vocabulary.
+ *
+ * @return Word ID for this word
+ */
+SPHINXBASE_EXPORT
+int fsg_model_word_id(fsg_model_t *fsg, char const *word);
+
+/**
+ * Add the given transition to the FSG transition matrix.
+ *
+ * Duplicates (i.e., two transitions between the same states, with the
+ * same word label) are flagged and only the highest prob retained.
+ */
+SPHINXBASE_EXPORT
+void fsg_model_trans_add(fsg_model_t * fsg,
+ int32 from, int32 to, int32 logp, int32 wid);
+
+/**
+ * Add a null transition between the given states.
+ *
+ * There can be at most one null transition between the given states;
+ * duplicates are flagged and only the best prob retained. Transition
+ * probs must be <= 1 (i.e., logprob <= 0).
+ *
+ * @return 1 if a new transition was added, 0 if the prob of an existing
+ * transition was upgraded; -1 if nothing was changed.
+ */
+SPHINXBASE_EXPORT
+int32 fsg_model_null_trans_add(fsg_model_t * fsg, int32 from, int32 to, int32 logp);
+
+/**
+ * Add a "tag" transition between the given states.
+ *
+ * A "tag" transition is a null transition with a non-null word ID,
+ * which corresponds to a semantic tag or other symbol to be output
+ * when this transition is taken.
+ *
+ * As above, there can be at most one null or tag transition between
+ * the given states; duplicates are flagged and only the best prob
+ * retained. Transition probs must be <= 1 (i.e., logprob <= 0).
+ *
+ * @return 1 if a new transition was added, 0 if the prob of an existing
+ * transition was upgraded; -1 if nothing was changed.
+ */
+SPHINXBASE_EXPORT
+int32 fsg_model_tag_trans_add(fsg_model_t * fsg, int32 from, int32 to,
+ int32 logp, int32 wid);
+
+/**
+ * Obtain transitive closure of null transitions in the given FSG.
+ *
+ * @param nulls List of null transitions, or NULL to find them automatically.
+ * @return Updated list of null transitions.
+ */
+SPHINXBASE_EXPORT
+glist_t fsg_model_null_trans_closure(fsg_model_t * fsg, glist_t nulls);
+
+/**
+ * Get the list of transitions (if any) from state i to j.
+ */
+SPHINXBASE_EXPORT
+glist_t fsg_model_trans(fsg_model_t *fsg, int32 i, int32 j);
+
+/**
+ * Get an iterator over the outgoing transitions from state i.
+ */
+SPHINXBASE_EXPORT
+fsg_arciter_t *fsg_model_arcs(fsg_model_t *fsg, int32 i);
+
+/**
+ * Get the current arc from the arc iterator.
+ */
+SPHINXBASE_EXPORT
+fsg_link_t *fsg_arciter_get(fsg_arciter_t *itor);
+
+/**
+ * Move the arc iterator forward.
+ */
+SPHINXBASE_EXPORT
+fsg_arciter_t *fsg_arciter_next(fsg_arciter_t *itor);
+
+/**
+ * Free the arc iterator (early termination)
+ */
+SPHINXBASE_EXPORT
+void fsg_arciter_free(fsg_arciter_t *itor);
+/**
+ * Get the null transition (if any) from state i to j.
+ */
+SPHINXBASE_EXPORT
+fsg_link_t *fsg_model_null_trans(fsg_model_t *fsg, int32 i, int32 j);
+
+/**
+ * Add silence word transitions to each state in given FSG.
+ *
+ * @param state state to add a self-loop to, or -1 for all states.
+ * @param silprob probability of silence transition.
+ */
+SPHINXBASE_EXPORT
+int fsg_model_add_silence(fsg_model_t * fsg, char const *silword,
+ int state, float32 silprob);
+
+/**
+ * Add alternate pronunciation transitions for a word in given FSG.
+ */
+SPHINXBASE_EXPORT
+int fsg_model_add_alt(fsg_model_t * fsg, char const *baseword,
+ char const *altword);
+
+/**
+ * Write FSG to a file.
+ */
+SPHINXBASE_EXPORT
+void fsg_model_write(fsg_model_t *fsg, FILE *fp);
+
+/**
+ * Write FSG to a file.
+ */
+SPHINXBASE_EXPORT
+void fsg_model_writefile(fsg_model_t *fsg, char const *file);
+
+/**
+ * Write FSG to a file in AT&T FSM format.
+ */
+SPHINXBASE_EXPORT
+void fsg_model_write_fsm(fsg_model_t *fsg, FILE *fp);
+
+/**
+ * Write FSG to a file in AT&T FSM format.
+ */
+SPHINXBASE_EXPORT
+void fsg_model_writefile_fsm(fsg_model_t *fsg, char const *file);
+
+/**
+ * Write FSG symbol table to a file (for AT&T FSM)
+ */
+SPHINXBASE_EXPORT
+void fsg_model_write_symtab(fsg_model_t *fsg, FILE *file);
+
+/**
+ * Write FSG symbol table to a file (for AT&T FSM)
+ */
+SPHINXBASE_EXPORT
+void fsg_model_writefile_symtab(fsg_model_t *fsg, char const *file);
+
+#endif /* __FSG_MODEL_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ A C-program for MT19937, with initialization improved 2002/1/26.
+ Coded by Takuji Nishimura and Makoto Matsumoto.
+
+ Before using, initialize the state by using init_genrand(seed)
+ or init_by_array(init_key, key_length).
+
+ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+` notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The names of its contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ Any feedback is very welcome.
+ http://www.math.keio.ac.jp/matumoto/emt.html
+ email: matumoto@math.keio.ac.jp
+*/
+
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * randgen.c : a portable random generator
+ *
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: genrand.h,v $
+ * Revision 1.3 2005/06/22 03:01:50 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 18-Nov-04 ARCHAN (archan@cs.cmu.edu) at Carnegie Mellon University
+ * First incorporated from the Mersenne Twister Random
+ * Number Generator package. It was chosen because it is
+ * in BSD-license and its performance is quite
+ * reasonable. Of course if you look at the inventors's
+ * page. This random generator can actually gives
+ * 19937-bits period. This is already far from we need.
+ * This will possibly good enough for the next 10 years.
+ *
+ * I also downgrade the code a little bit to avoid Sphinx's
+ * developers misused it.
+ */
+
+#ifndef _LIBUTIL_GENRAND_H_
+#define _LIBUTIL_GENRAND_H_
+
+#define S3_RAND_MAX_INT32 0x7fffffff
+#include <stdio.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+/** \file genrand.h
+ *\brief High performance prortable random generator created by Takuji
+ *Nishimura and Makoto Matsumoto.
+ *
+ * A high performance which applied Mersene twister primes to generate
+ * random number. If probably seeded, the random generator can achieve
+ * 19937-bits period. For technical detail. Please take a look at
+ * (FIXME! Need to search for the web site.) http://www.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Macros to simplify calling of random generator function.
+ *
+ */
+#define s3_rand_seed(s) genrand_seed(s);
+#define s3_rand_int31() genrand_int31()
+#define s3_rand_real() genrand_real3()
+#define s3_rand_res53() genrand_res53()
+
+/**
+ *Initialize the seed of the random generator.
+ */
+SPHINXBASE_EXPORT
+void genrand_seed(unsigned long s);
+
+/**
+ *generates a random number on [0,0x7fffffff]-interval
+ */
+SPHINXBASE_EXPORT
+long genrand_int31(void);
+
+/**
+ *generates a random number on (0,1)-real-interval
+ */
+SPHINXBASE_EXPORT
+double genrand_real3(void);
+
+/**
+ *generates a random number on [0,1) with 53-bit resolution
+ */
+SPHINXBASE_EXPORT
+double genrand_res53(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*_LIBUTIL_GENRAND_H_*/
+
+
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * glist.h -- Module for maintaining a generic, linear linked-list structure.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: glist.h,v $
+ * Revision 1.9 2005/06/22 03:02:51 arthchan2003
+ * 1, Fixed doxygen documentation, 2, add keyword.
+ *
+ * Revision 1.4 2005/05/03 04:09:11 archan
+ * Implemented the heart of word copy search. For every ci-phone, every word end, a tree will be allocated to preserve its pathscore. This is different from 3.5 or below, only the best score for a particular ci-phone, regardless of the word-ends will be preserved at every frame. The graph propagation will not collect unused word tree at this point. srch_WST_propagate_wd_lv2 is also as the most stupid in the century. But well, after all, everything needs a start. I will then really get the results from the search and see how it looks.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 09-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added glist_chkdup_*().
+ *
+ * 13-Feb-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created from earlier version.
+ */
+
+
+/**
+ * \file glist.h
+ * \brief Generic linked-lists maintenance.
+ *
+ * Only insert at the head of the list. A convenient little
+ * linked-list package, but a double-edged sword: the user must keep
+ * track of the data type within the linked list elements. When it
+ * was first written, there was no selective deletions except to
+ * destroy the entire list. This is modified in later version.
+ *
+ *
+ * (C++ would be good for this, but that's a double-edged sword as well.)
+ */
+
+
+#ifndef _LIBUTIL_GLIST_H_
+#define _LIBUTIL_GLIST_H_
+
+#include <stdlib.h>
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/** A node in a generic list
+ */
+typedef struct gnode_s {
+ anytype_t data; /** See prim_type.h */
+ struct gnode_s *next; /** Next node in list */
+} gnode_t;
+typedef gnode_t *glist_t; /** Head of a list of gnodes */
+
+
+/** Access macros, for convenience
+ */
+#define gnode_ptr(g) ((g)->data.ptr)
+#define gnode_int32(g) ((g)->data.i)
+#define gnode_uint32(g) ((g)->data.ui)
+#define gnode_float32(g) ((float32)(g)->data.fl)
+#define gnode_float64(g) ((g)->data.fl)
+#define gnode_next(g) ((g)->next)
+
+
+/**
+ * Create and prepend a new list node, with the given user-defined data, at the HEAD
+ * of the given generic list. Return the new list thus formed.
+ * g may be NULL to indicate an initially empty list.
+ */
+SPHINXBASE_EXPORT
+glist_t glist_add_ptr (glist_t g, /**< a link list */
+ void *ptr /**< a pointer */
+ );
+
+/**
+ * Create and prepend a new list node containing an integer.
+ */
+SPHINXBASE_EXPORT
+glist_t glist_add_int32 (glist_t g, /**< a link list */
+ int32 val /**< an integer value */
+ );
+/**
+ * Create and prepend a new list node containing an unsigned integer.
+ */
+SPHINXBASE_EXPORT
+glist_t glist_add_uint32 (glist_t g, /**< a link list */
+ uint32 val /**< an unsigned integer value */
+ );
+/**
+ * Create and prepend a new list node containing a single-precision float.
+ */
+SPHINXBASE_EXPORT
+glist_t glist_add_float32 (glist_t g, /**< a link list */
+ float32 val /**< a float32 vlaue */
+ );
+/**
+ * Create and prepend a new list node containing a double-precision float.
+ */
+SPHINXBASE_EXPORT
+glist_t glist_add_float64 (glist_t g, /**< a link list */
+ float64 val /**< a float64 vlaue */
+ );
+
+
+
+/**
+ * Create and insert a new list node, with the given user-defined data, after
+ * the given generic node gn. gn cannot be NULL.
+ * Return ptr to the newly created gnode_t.
+ */
+SPHINXBASE_EXPORT
+gnode_t *glist_insert_ptr (gnode_t *gn, /**< a generic node which ptr will be inserted after it*/
+ void *ptr /**< pointer inserted */
+ );
+/**
+ * Create and insert a new list node containing an integer.
+ */
+SPHINXBASE_EXPORT
+gnode_t *glist_insert_int32 (gnode_t *gn, /**< a generic node which a value will be inserted after it*/
+ int32 val /**< int32 inserted */
+ );
+/**
+ * Create and insert a new list node containing an unsigned integer.
+ */
+SPHINXBASE_EXPORT
+gnode_t *glist_insert_uint32 (gnode_t *gn, /**< a generic node which a value will be inserted after it*/
+ uint32 val /**< uint32 inserted */
+ );
+/**
+ * Create and insert a new list node containing a single-precision float.
+ */
+SPHINXBASE_EXPORT
+gnode_t *glist_insert_float32 (gnode_t *gn, /**< a generic node which a value will be inserted after it*/
+ float32 val /**< float32 inserted */
+ );
+/**
+ * Create and insert a new list node containing a double-precision float.
+ */
+SPHINXBASE_EXPORT
+gnode_t *glist_insert_float64 (gnode_t *gn, /**< a generic node which a value will be inserted after it*/
+ float64 val /**< float64 inserted */
+ );
+
+/**
+ * Reverse the order of the given glist. (glist_add() adds to the head; one might
+ * ultimately want the reverse of that.)
+ * NOTE: The list is reversed "in place"; i.e., no new memory is allocated.
+ * @return: The head of the new list.
+ */
+SPHINXBASE_EXPORT
+glist_t glist_reverse (glist_t g /**< input link list */
+ );
+
+
+/**
+ Count the number of element in a given link list
+ @return the number of elements in the given glist_t
+*/
+SPHINXBASE_EXPORT
+int32 glist_count (glist_t g /**< input link list */
+ );
+
+/**
+ * Free the given generic list; user-defined data contained within is not
+ * automatically freed. The caller must have done that already.
+ */
+SPHINXBASE_EXPORT
+void glist_free (glist_t g);
+
+
+/**
+ * Free the given node, gn, of a glist, pred being its predecessor in the list.
+ * Return ptr to the next node in the list after the freed node.
+ */
+SPHINXBASE_EXPORT
+gnode_t *gnode_free(gnode_t *gn,
+ gnode_t *pred
+ );
+
+/**
+ * Return the last node in the given list.
+ */
+SPHINXBASE_EXPORT
+gnode_t *glist_tail (glist_t g);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * hash.h -- Hash table module.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: hash.h,v $
+ * Revision 1.7 2005/06/22 03:04:01 arthchan2003
+ * 1, Implemented hash_delete and hash_display, 2, Fixed doxygen documentation, 3, Added keyword.
+ *
+ * Revision 1.8 2005/05/24 01:10:54 archan
+ * Fix a bug when the value only appear in the hash but there is no chain. Also make sure that prev was initialized to NULL. All success cases were tested, but not tested with the deletion is tested.
+ *
+ * Revision 1.7 2005/05/24 00:12:31 archan
+ * Also add function prototype for hash_display in hash.h
+ *
+ * Revision 1.4 2005/05/03 04:09:11 archan
+ * Implemented the heart of word copy search. For every ci-phone, every word end, a tree will be allocated to preserve its pathscore. This is different from 3.5 or below, only the best score for a particular ci-phone, regardless of the word-ends will be preserved at every frame. The graph propagation will not collect unused word tree at this point. srch_WST_propagate_wd_lv2 is also as the most stupid in the century. But well, after all, everything needs a start. I will then really get the results from the search and see how it looks.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 05-May-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Removed hash_key2hash(). Added hash_enter_bkey() and hash_lookup_bkey(),
+ * and len attribute to hash_entry_t.
+ *
+ * 30-Apr-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added hash_key2hash().
+ *
+ * 18-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Included case sensitive/insensitive option.
+ *
+ * 08-31-95 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Created.
+ */
+
+
+/**
+ * @file hash_table.h
+ * @brief Hash table implementation
+ *
+ * This hash tables are intended for associating a pointer/integer
+ * "value" with a char string "key", (e.g., an ID with a word string).
+ * Subsequently, one can retrieve the value by providing the string
+ * key. (The reverse functionality--obtaining the string given the
+ * value--is not provided with the hash table module.)
+ */
+
+/**
+ * A note by ARCHAN at 20050510: Technically what we use is so-called
+ * "hash table with buckets" which is very nice way to deal with
+ * external hashing. There are definitely better ways to do internal
+ * hashing (i.e. when everything is stored in the memory.) In Sphinx
+ * 3, this is a reasonable practice because hash table is only used in
+ * lookup in initialization or in lookups which is not critical for
+ * speed.
+ */
+
+/**
+ * Another note by ARCHAN at 20050703: To use this data structure
+ * properly, it is very important to realize that the users are
+ * required to handle memory allocation of the C-style keys. The hash
+ * table will not make a copy of the memory allocated for any of the
+ * C-style key. It will not allocate memory for it. It will not delete
+ * memory for it. As a result, the following code sniplet will cause
+ * memory leak.
+ *
+ * while (1){
+ * str=(char*)ckd_calloc(str_length,sizeof(char*))
+ * if(hash_enter(ht,str,id)!=id){ printf("fail to add key str %s with val id %d\n",str,id)}
+ * }
+ *
+ */
+
+/**
+ * A note by dhuggins on 20061010: Changed this to use void * instead
+ * of int32 as the value type, so that arbitrary objects can be
+ * inserted into a hash table (in a way that won't crash on 64-bit
+ * machines ;)
+ */
+
+#ifndef _LIBUTIL_HASH_H_
+#define _LIBUTIL_HASH_H_
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/glist.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * The hash table structures.
+ * Each hash table is identified by a hash_table_t structure. hash_table_t.table is
+ * pre-allocated for a user-controlled max size, and is initially empty. As new
+ * entries are created (using hash_enter()), the empty entries get filled. If multiple
+ * keys hash to the same entry, new entries are allocated and linked together in a
+ * linear list.
+ */
+
+typedef struct hash_entry_s {
+ const char *key; /** Key string, NULL if this is an empty slot.
+ NOTE that the key must not be changed once the entry
+ has been made. */
+ size_t len; /** Key-length; the key string does not have to be a C-style NULL
+ terminated string; it can have arbitrary binary bytes */
+ void *val; /** Value associated with above key */
+ struct hash_entry_s *next; /** For collision resolution */
+} hash_entry_t;
+
+typedef struct {
+ hash_entry_t *table; /**Primary hash table, excluding entries that collide */
+ int32 size; /** Primary hash table size, (is a prime#); NOTE: This is the
+ number of primary entries ALLOCATED, NOT the number of valid
+ entries in the table */
+ int32 inuse; /** Number of valid entries in the table. */
+ int32 nocase; /** Whether case insensitive for key comparisons */
+} hash_table_t;
+
+typedef struct hash_iter_s {
+ hash_table_t *ht; /**< Hash table we are iterating over. */
+ hash_entry_t *ent; /**< Current entry in that table. */
+ size_t idx; /**< Index of next bucket to search. */
+} hash_iter_t;
+
+/** Access macros */
+#define hash_entry_val(e) ((e)->val)
+#define hash_entry_key(e) ((e)->key)
+#define hash_entry_len(e) ((e)->len)
+#define hash_table_inuse(h) ((h)->inuse)
+#define hash_table_size(h) ((h)->size)
+
+
+/**
+ * Allocate a new hash table for a given expected size.
+ *
+ * @note Case sensitivity of hash keys applies to 7-bit ASCII
+ * characters only, and is not locale-dependent.
+ *
+ * @return handle to allocated hash table.
+ */
+SPHINXBASE_EXPORT
+hash_table_t * hash_table_new(int32 size, /**< In: Expected number of entries in the table */
+ int32 casearg /**< In: Whether case insensitive for key
+ comparisons. When 1, case is insentitive,
+ 0, case is sensitive. */
+ );
+
+#define HASH_CASE_YES 0
+#define HASH_CASE_NO 1
+
+/**
+ * Free the specified hash table; the caller is responsible for freeing the key strings
+ * pointed to by the table entries.
+ */
+SPHINXBASE_EXPORT
+void hash_table_free(hash_table_t *h /**< In: Handle of hash table to free */
+ );
+
+
+/**
+ * Try to add a new entry with given key and associated value to hash table h. If key doesn't
+ * already exist in hash table, the addition is successful, and the return value is val. But
+ * if key already exists, return its existing associated value. (The hash table is unchanged;
+ * it is up to the caller to resolve the conflict.)
+ */
+SPHINXBASE_EXPORT
+void *hash_table_enter(hash_table_t *h, /**< In: Handle of hash table in which to create entry */
+ const char *key, /**< In: C-style NULL-terminated key string
+ for the new entry */
+ void *val /**< In: Value to be associated with above key */
+ );
+
+/**
+ * Add a 32-bit integer value to a hash table.
+ *
+ * This macro is the clean way to do this and avoid compiler warnings
+ * on 64-bit platforms.
+ */
+#define hash_table_enter_int32(h,k,v) \
+ ((int32)(long)hash_table_enter((h),(k),(void *)(long)(v)))
+
+/**
+ * Add a new entry with given key and value to hash table h. If the
+ * key already exists, its value is replaced with the given value, and
+ * the previous value is returned, otherwise val is returned.
+ *
+ * A very important but subtle point: The key pointer in the hash
+ * table is <b>replaced</b> with the pointer passed to this function.
+ * In general you should always pass a pointer to hash_table_enter()
+ * whose lifetime matches or exceeds that of the hash table. In some
+ * rare cases it is convenient to initially enter a value with a
+ * short-lived key, then later replace that with a long-lived one.
+ * This behaviour allows this to happen.
+ */
+SPHINXBASE_EXPORT
+void *hash_table_replace(hash_table_t *h, /**< In: Handle of hash table in which to create entry */
+ const char *key, /**< In: C-style NULL-terminated key string
+ for the new entry */
+ void *val /**< In: Value to be associated with above key */
+ );
+
+/**
+ * Replace a 32-bit integer value in a hash table.
+ *
+ * This macro is the clean way to do this and avoid compiler warnings
+ * on 64-bit platforms.
+ */
+#define hash_table_replace_int32(h,k,v) \
+ ((int32)(long)hash_table_replace((h),(k),(void *)(long)(v)))
+
+/**
+ * Delete an entry with given key and associated value to hash table
+ * h. Return the value associated with the key (NULL if it did not exist)
+ */
+
+SPHINXBASE_EXPORT
+void *hash_table_delete(hash_table_t *h, /**< In: Handle of hash table in
+ which a key will be deleted */
+ const char *key /**< In: C-style NULL-terminated
+ key string for the new entry */
+ );
+
+/**
+ * Like hash_table_delete, but with an explicitly specified key length,
+ * instead of a NULL-terminated, C-style key string. So the key
+ * string is a binary key (or bkey). Hash tables containing such keys
+ * should be created with the HASH_CASE_YES option. Otherwise, the
+ * results are unpredictable.
+ */
+SPHINXBASE_EXPORT
+void *hash_table_delete_bkey(hash_table_t *h, /**< In: Handle of hash table in
+ which a key will be deleted */
+ const char *key, /**< In: C-style NULL-terminated
+ key string for the new entry */
+ size_t len
+ );
+
+/**
+ * Delete all entries from a hash_table.
+ */
+SPHINXBASE_EXPORT
+void hash_table_empty(hash_table_t *h /**< In: Handle of hash table */
+ );
+
+/**
+ * Like hash_table_enter, but with an explicitly specified key length,
+ * instead of a NULL-terminated, C-style key string. So the key
+ * string is a binary key (or bkey). Hash tables containing such keys
+ * should be created with the HASH_CASE_YES option. Otherwise, the
+ * results are unpredictable.
+ */
+SPHINXBASE_EXPORT
+void *hash_table_enter_bkey(hash_table_t *h, /**< In: Handle of hash table
+ in which to create entry */
+ const char *key, /**< In: Key buffer */
+ size_t len, /**< In: Length of above key buffer */
+ void *val /**< In: Value to be associated with above key */
+ );
+
+/**
+ * Enter a 32-bit integer value in a hash table.
+ *
+ * This macro is the clean way to do this and avoid compiler warnings
+ * on 64-bit platforms.
+ */
+#define hash_table_enter_bkey_int32(h,k,l,v) \
+ ((int32)(long)hash_table_enter_bkey((h),(k),(l),(void *)(long)(v)))
+
+/**
+ * Like hash_table_replace, but with an explicitly specified key length,
+ * instead of a NULL-terminated, C-style key string. So the key
+ * string is a binary key (or bkey). Hash tables containing such keys
+ * should be created with the HASH_CASE_YES option. Otherwise, the
+ * results are unpredictable.
+ */
+SPHINXBASE_EXPORT
+void *hash_table_replace_bkey(hash_table_t *h, /**< In: Handle of hash table in which to create entry */
+ const char *key, /**< In: Key buffer */
+ size_t len, /**< In: Length of above key buffer */
+ void *val /**< In: Value to be associated with above key */
+ );
+
+/**
+ * Replace a 32-bit integer value in a hash table.
+ *
+ * This macro is the clean way to do this and avoid compiler warnings
+ * on 64-bit platforms.
+ */
+#define hash_table_replace_bkey_int32(h,k,l,v) \
+ ((int32)(long)hash_table_replace_bkey((h),(k),(l),(void *)(long)(v)))
+
+/**
+ * Look up a key in a hash table and optionally return the associated
+ * value.
+ * @return 0 if key found in hash table, else -1.
+ */
+SPHINXBASE_EXPORT
+int32 hash_table_lookup(hash_table_t *h, /**< In: Handle of hash table being searched */
+ const char *key, /**< In: C-style NULL-terminated string whose value is sought */
+ void **val /**< Out: *val = value associated with key.
+ If this is NULL, no value will be returned. */
+ );
+
+/**
+ * Look up a 32-bit integer value in a hash table.
+ *
+ * This function is the clean way to do this and avoid compiler warnings
+ * on 64-bit platforms.
+ */
+SPHINXBASE_EXPORT
+int32 hash_table_lookup_int32(hash_table_t *h, /**< In: Handle of hash table being searched */
+ const char *key, /**< In: C-style NULL-terminated string whose value is sought */
+ int32 *val /**< Out: *val = value associated with key.
+ If this is NULL, no value will be returned. */
+ );
+
+/**
+ * Like hash_lookup, but with an explicitly specified key length, instead of a NULL-terminated,
+ * C-style key string. So the key string is a binary key (or bkey). Hash tables containing
+ * such keys should be created with the HASH_CASE_YES option. Otherwise, the results are
+ * unpredictable.
+ */
+SPHINXBASE_EXPORT
+int32 hash_table_lookup_bkey(hash_table_t *h, /**< In: Handle of hash table being searched */
+ const char *key, /**< In: Key buffer */
+ size_t len, /**< In: Length of above key buffer */
+ void **val /**< Out: *val = value associated with key.
+ If this is NULL, no value will be returned. */
+ );
+
+/**
+ * Look up a 32-bit integer value in a hash table.
+ *
+ * This function is the clean way to do this and avoid compiler warnings
+ * on 64-bit platforms.
+ */
+SPHINXBASE_EXPORT
+int32 hash_table_lookup_bkey_int32(hash_table_t *h,/**< In: Handle of hash table being searched */
+ const char *key,/**< In: Key buffer */
+ size_t len, /**< In: Length of above key buffer */
+ int32 *val /**< Out: *val = value associated with key.
+ If this is NULL, no value will be returned. */
+ );
+
+/**
+ * Start iterating over key-value pairs in a hash table.
+ */
+SPHINXBASE_EXPORT
+hash_iter_t *hash_table_iter(hash_table_t *h);
+
+/**
+ * Get the next key-value pair in iteration.
+ *
+ * This function automatically frees the iterator object upon reaching
+ * the final entry.
+ *
+ * @return the next entry in the hash table, or NULL if done.
+ */
+SPHINXBASE_EXPORT
+hash_iter_t *hash_table_iter_next(hash_iter_t *itor);
+
+/**
+ * Delete an unfinished iterator.
+ */
+SPHINXBASE_EXPORT
+void hash_table_iter_free(hash_iter_t *itor);
+
+/**
+ * Build a glist of valid hash_entry_t pointers from the given hash table. Return the list.
+ */
+SPHINXBASE_EXPORT
+glist_t hash_table_tolist(hash_table_t *h, /**< In: Hash table from which list is to be generated */
+ int32 *count /**< Out: Number of entries in the list.
+ If this is NULL, no count will be returned. */
+
+ );
+
+/**
+ * Display a hash-with-chaining representation on the screen.
+ * Currently, it will only works for situation where hash_enter was
+ * used to enter the keys.
+ */
+SPHINXBASE_EXPORT
+void hash_table_display(hash_table_t *h, /**< In: Hash table to display */
+ int32 showkey /**< In: Show the string or not,
+ Use 0 if hash_enter_bkey was
+ used. */
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * heap.h -- Generic heap structure for inserting in any and popping in sorted
+ * order.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: heap.h,v $
+ * Revision 1.7 2005/06/22 03:05:49 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Add keyword.
+ *
+ * Revision 1.4 2005/06/15 04:21:46 archan
+ * 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 23-Dec-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Started.
+ */
+
+
+#ifndef _LIBUTIL_HEAP_H_
+#define _LIBUTIL_HEAP_H_
+
+#include <stdlib.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+ /** \file heap.h
+ * \brief Heap Implementation.
+ *
+ * General Comment: Sorted heap structure with three main operations:
+ *
+ * 1. Insert a data item (with two attributes: an application supplied pointer and an
+ * integer value; the heap is maintained in ascending order of the integer value).
+ * 2. Return the currently topmost item (i.e., item with smallest associated value).
+ * 3. Return the currently topmost item and pop it off the heap.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+
+typedef struct heap_s heap_t;
+
+
+/**
+ * Allocate a new heap and return handle to it.
+ */
+SPHINXBASE_EXPORT
+heap_t *heap_new(void);
+
+
+/**
+ * Insert a new item into the given heap.
+ * Return value: 0 if successful, -1 otherwise.
+ */
+SPHINXBASE_EXPORT
+int heap_insert(heap_t *heap, /**< In: Heap into which item is to be inserted */
+ void *data, /**< In: Application-determined data pointer */
+ int32 val /**< In: According to item entered in sorted heap */
+ );
+/**
+ * Return the topmost item in the heap.
+ * Return value: 1 if heap is not empty and the topmost value is returned;
+ * 0 if heap is empty; -1 if some error occurred.
+ */
+SPHINXBASE_EXPORT
+int heap_top(heap_t *heap, /**< In: Heap whose topmost item is to be returned */
+ void **data, /**< Out: Data pointer associated with the topmost item */
+ int32 *val /**< Out: Value associated with the topmost item */
+ );
+/**
+ * Like heap_top but also pop the top item off the heap.
+ */
+SPHINXBASE_EXPORT
+int heap_pop(heap_t *heap, void **data, int32 *val);
+
+/**
+ * Remove an item from the heap.
+ */
+SPHINXBASE_EXPORT
+int heap_remove(heap_t *heap, void *data);
+
+/**
+ * Return the number of items in the heap.
+ */
+SPHINXBASE_EXPORT
+size_t heap_size(heap_t *heap);
+
+/**
+ * Destroy the given heap; free the heap nodes. NOTE: Data pointers in the nodes are NOT freed.
+ * Return value: 0 if successful, -1 otherwise.
+ */
+
+SPHINXBASE_EXPORT
+int heap_destroy(heap_t *heap);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2009 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/**
+ * @file huff_code.h
+ * @brief Huffman code and bitstream implementation
+ *
+ * This interface supports building canonical Huffman codes from
+ * string and integer values. It also provides support for encoding
+ * and decoding from strings and files, and for reading and writing
+ * codebooks from files.
+ */
+
+#ifndef __HUFF_CODE_H__
+#define __HUFF_CODE_H__
+
+#include <stdio.h>
+
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/cmd_ln.h>
+
+typedef struct huff_code_s huff_code_t;
+
+/**
+ * Create a codebook from 32-bit integer data.
+ */
+SPHINXBASE_EXPORT
+huff_code_t *huff_code_build_int(int32 const *values, int32 const *frequencies, int nvals);
+
+/**
+ * Create a codebook from string data.
+ */
+SPHINXBASE_EXPORT
+huff_code_t *huff_code_build_str(char * const *values, int32 const *frequencies, int nvals);
+
+/**
+ * Read a codebook from a file.
+ */
+SPHINXBASE_EXPORT
+huff_code_t *huff_code_read(FILE *infh);
+
+/**
+ * Write a codebook to a file.
+ */
+SPHINXBASE_EXPORT
+int huff_code_write(huff_code_t *hc, FILE *outfh);
+
+/**
+ * Print a codebook to a file as text (for debugging)
+ */
+SPHINXBASE_EXPORT
+int huff_code_dump(huff_code_t *hc, FILE *dumpfh);
+
+/**
+ * Retain a pointer to a Huffman codec object.
+ */
+SPHINXBASE_EXPORT
+huff_code_t *huff_code_retain(huff_code_t *hc);
+
+/**
+ * Release a pointer to a Huffman codec object.
+ */
+SPHINXBASE_EXPORT
+int huff_code_free(huff_code_t *hc);
+
+/**
+ * Attach a Huffman codec to a file handle for input/output.
+ */
+SPHINXBASE_EXPORT
+FILE *huff_code_attach(huff_code_t *hc, FILE *fh, char const *mode);
+
+/**
+ * Detach a Huffman codec from its file handle.
+ */
+SPHINXBASE_EXPORT
+FILE *huff_code_detach(huff_code_t *hc);
+
+/**
+ * Encode an integer, writing it to the file handle, if any.
+ */
+SPHINXBASE_EXPORT
+int huff_code_encode_int(huff_code_t *hc, int32 sym, uint32 *outcw);
+
+/**
+ * Encode a string, writing it to the file handle, if any.
+ */
+SPHINXBASE_EXPORT
+int huff_code_encode_str(huff_code_t *hc, char const *sym, uint32 *outcw);
+
+/**
+ * Decode an integer, reading it from the file if no data given.
+ */
+SPHINXBASE_EXPORT
+int huff_code_decode_int(huff_code_t *hc, int *outval,
+ char const **inout_data,
+ size_t *inout_data_len,
+ int *inout_offset);
+
+/**
+ * Decode a string, reading it from the file if no data given.
+ */
+SPHINXBASE_EXPORT
+char const *huff_code_decode_str(huff_code_t *hc,
+ char const **inout_data,
+ size_t *inout_data_len,
+ int *inout_offset);
+
+#endif /* __HUFF_CODE_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+
+#ifndef _LIBUTIL_INFO_H_
+#define _LIBUTIL_INFO_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+/* HISTORY
+ * $Log$
+ * Revision 1.1 2006/04/05 20:27:30 dhdfu
+ * A Great Reorganzation of header files and executables
+ *
+ * Revision 1.3 2005/06/22 03:06:46 arthchan2003
+ * Add keyword.
+ *
+ * Revision 1.2 2005/06/15 04:21:46 archan
+ * 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file.
+ *
+ */
+
+/** \file info.h
+ * \brief Print hostname, directory name, compile time and date.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+
+/**
+ This function prints the hostname, the directory, compile time
+ and date . */
+
+SPHINXBASE_EXPORT
+void print_appl_info(char* appl_name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBUTIL_INFO_H_ */
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef __JSGF_H__
+#define __JSGF_H__
+
+/**
+ * @file jsgf.h JSGF grammar compiler
+ *
+ * This file defines the data structures for parsing JSGF grammars
+ * into Sphinx finite-state grammars.
+ **/
+
+#include <stdio.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/fsg_model.h>
+#include <sphinxbase/logmath.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+typedef struct jsgf_s jsgf_t;
+typedef struct jsgf_rule_s jsgf_rule_t;
+
+/**
+ * Create a new JSGF grammar.
+ *
+ * @param parent optional parent grammar for this one (NULL, usually).
+ * @return new JSGF grammar object, or NULL on failure.
+ */
+SPHINXBASE_EXPORT
+jsgf_t *jsgf_grammar_new(jsgf_t *parent);
+
+/**
+ * Parse a JSGF grammar from a file.
+ *
+ * @param filename the name of the file to parse.
+ * @param parent optional parent grammar for this one (NULL, usually).
+ * @return new JSGF grammar object, or NULL on failure.
+ */
+SPHINXBASE_EXPORT
+jsgf_t *jsgf_parse_file(const char *filename, jsgf_t *parent);
+
+/**
+ * Free a JSGF grammar.
+ */
+SPHINXBASE_EXPORT
+void jsgf_grammar_free(jsgf_t *jsgf);
+
+/**
+ * Iterator over rules in a grammar.
+ */
+typedef hash_iter_t jsgf_rule_iter_t;
+
+/**
+ * Get an iterator over all rules in a grammar.
+ */
+SPHINXBASE_EXPORT
+jsgf_rule_iter_t *jsgf_rule_iter(jsgf_t *grammar);
+
+/**
+ * Advance an iterator to the next rule in the grammar.
+ */
+#define jsgf_rule_iter_next(itor) hash_table_iter_next(itor)
+
+/**
+ * Get the current rule in a rule iterator.
+ */
+#define jsgf_rule_iter_rule(itor) ((jsgf_rule_t *)(itor)->ent->val)
+
+/**
+ * Free a rule iterator (if the end hasn't been reached).
+ */
+#define jsgf_rule_iter_free(itor) hash_table_iter_free(itor)
+
+/**
+ * Get a rule by name from a grammar.
+ */
+SPHINXBASE_EXPORT
+jsgf_rule_t *jsgf_get_rule(jsgf_t *grammar, char const *name);
+
+/**
+ * Get the rule name from a rule.
+ */
+SPHINXBASE_EXPORT
+char const *jsgf_rule_name(jsgf_rule_t *rule);
+
+/**
+ * Test if a rule is public or not.
+ */
+SPHINXBASE_EXPORT
+int jsgf_rule_public(jsgf_rule_t *rule);
+
+/**
+ * Build a Sphinx FSG object from a JSGF rule.
+ */
+SPHINXBASE_EXPORT
+fsg_model_t *jsgf_build_fsg(jsgf_t *grammar, jsgf_rule_t *rule,
+ logmath_t *lmath, float32 lw);
+
+/**
+ * Build a Sphinx FSG object from a JSGF rule.
+ *
+ * This differs from jsgf_build_fsg() in that it does not do closure
+ * on epsilon transitions or any other postprocessing. For the time
+ * being this is necessary in order to write it to a file - the FSG
+ * code will be fixed soon.
+ */
+SPHINXBASE_EXPORT
+fsg_model_t *jsgf_build_fsg_raw(jsgf_t *grammar, jsgf_rule_t *rule,
+ logmath_t *lmath, float32 lw);
+
+/**
+ * Convert a JSGF rule to Sphinx FSG text form.
+ *
+ * This does a direct conversion without doing transitive closure on
+ * null transitions and so forth.
+ */
+SPHINXBASE_EXPORT
+int jsgf_write_fsg(jsgf_t *grammar, jsgf_rule_t *rule, FILE *outfh);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __JSGF_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * libutil.h -- Collection of all other .h files in this directory; for brevity
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: libutil.h,v $
+ * Revision 1.14 2005/06/22 03:07:21 arthchan2003
+ * Add keyword.
+ *
+ * Revision 1.4 2005/06/15 06:23:21 archan
+ * change headers from io.h to pio.h
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 08-Dec-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added SLEEP_SEC macro.
+ *
+ * 08-31-95 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Created.
+ */
+
+
+#ifndef _LIBUTIL_LIBUTIL_H_
+#define _LIBUTIL_LIBUTIL_H_
+
+/** \file libutil.h
+ * \brief (Considered as dangenous) master header for libutil.h
+ *
+ * Master file for all the headers in libutil/ . Though many people point out
+ * using libutil.h can easily result in nested include.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#ifndef WIN32 /* RAH */
+#include <unistd.h>
+#endif /* RAH */
+#include <math.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/bitvec.h>
+#include <sphinxbase/case.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/listelem_alloc.h>
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/filename.h>
+#include <sphinxbase/glist.h>
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/heap.h>
+#include <sphinxbase/pio.h>
+#include <sphinxbase/profile.h>
+#include <sphinxbase/strfuncs.h>
+#include <sphinxbase/unlimit.h>
+#include <sphinxbase/info.h>
+#include <sphinxbase/genrand.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+
+#if (defined(WIN32) && !defined(__CYGWIN__))
+#define SLEEP_SEC(sec) (0) /* Why doesn't Sleep((sec)*1000) work? */
+#else
+#define SLEEP_SEC(sec) sleep(sec) /* sec must be integer */
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+#ifndef M_PI
+#define M_PI 3.1415926535897932385 /* For the pain-in-the-neck Win32 */
+#endif
+#define PI M_PI
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef __LISTELEM_ALLOC_H__
+#define __LISTELEM_ALLOC_H__
+
+/** @file listelem_alloc.h
+ * @brief Fast memory allocator for uniformly sized objects
+ * @author M K Ravishankar <rkm@cs.cmu.edu>
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#include <stdlib.h>
+#ifdef S60
+#include <types.h>
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+/**
+ * List element allocator object.
+ */
+typedef struct listelem_alloc_s listelem_alloc_t;
+
+/**
+ * Initialize and return a list element allocator.
+ */
+SPHINXBASE_EXPORT
+listelem_alloc_t * listelem_alloc_init(size_t elemsize);
+
+/**
+ * Finalize and release all memory associated with a list element allocator.
+ */
+SPHINXBASE_EXPORT
+void listelem_alloc_free(listelem_alloc_t *le);
+
+
+SPHINXBASE_EXPORT
+void *__listelem_malloc__(listelem_alloc_t *le, char *file, int line);
+
+/**
+ * Allocate a list element and return pointer to it.
+ */
+#define listelem_malloc(le) __listelem_malloc__((le),__FILE__,__LINE__)
+
+SPHINXBASE_EXPORT
+void *__listelem_malloc_id__(listelem_alloc_t *le, char *file, int line,
+ int32 *out_id);
+
+/**
+ * Allocate a list element, returning a unique identifier.
+ */
+#define listelem_malloc_id(le, oid) __listelem_malloc_id__((le),__FILE__,__LINE__,(oid))
+
+/**
+ * Retrieve a list element by its identifier.
+ */
+SPHINXBASE_EXPORT
+void *listelem_get_item(listelem_alloc_t *le, int32 id);
+
+/**
+ * Free list element of given size
+ */
+SPHINXBASE_EXPORT
+void __listelem_free__(listelem_alloc_t *le, void *elem, char *file, int line);
+
+/**
+ * Macro of __listelem_free__
+ */
+#define listelem_free(le,el) __listelem_free__((le),(el),__FILE__,__LINE__)
+
+/**
+ Print number of allocation, numer of free operation stats
+*/
+SPHINXBASE_EXPORT
+void listelem_stats(listelem_alloc_t *le);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file logmath.h
+ * @brief Fast integer logarithmic addition operations.
+ *
+ * In evaluating HMM models, probability values are often kept in log
+ * domain, to avoid overflow. To enable these logprob values to be
+ * held in int32 variables without significant loss of precision, a
+ * logbase of (1+epsilon) (where epsilon < 0.01 or so) is used. This
+ * module maintains this logbase (B).
+ *
+ * However, maintaining probabilities in log domain creates a problem
+ * when adding two probability values. This problem can be solved by
+ * table lookup. Note that:
+ *
+ * - \f$ b^z = b^x + b^y \f$
+ * - \f$ b^z = b^x(1 + b^{y-x}) = b^y(1 + e^{x-y}) \f$
+ * - \f$ z = x + log_b(1 + b^{y-x}) = y + log_b(1 + b^{x-y}) \f$
+ *
+ * So:
+ *
+ * - when \f$ y > x, z = y + logadd\_table[-(x-y)] \f$
+ * - when \f$ x > y, z = x + logadd\_table[-(y-x)] \f$
+ * - where \f$ logadd\_table[n] = log_b(1 + b^{-n}) \f$
+ *
+ * The first entry in <i>logadd_table</i> is
+ * simply \f$ log_b(2.0) \f$, for
+ * the case where \f$ y = x \f$ and thus
+ * \f$ z = log_b(2x) = log_b(2) + x \f$. The last entry is zero,
+ * where \f$ log_b(x+y) = x = y \f$ due to loss of precision.
+ *
+ * Since this table can be quite large particularly for small
+ * logbases, an option is provided to compress it by dropping the
+ * least significant bits of the table.
+ */
+
+#ifndef __LOGMATH_H__
+#define __LOGMATH_H__
+
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/cmd_ln.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Integer log math computation table.
+ *
+ * This is exposed here to allow log-add computations to be inlined.
+ */
+typedef struct logadd_s logadd_t;
+struct logadd_s {
+ /** Table, in unsigned integers of (width) bytes. */
+ void *table;
+ /** Number of elements in (table). This is never smaller than 256 (important!) */
+ uint32 table_size;
+ /** Width of elements of (table). */
+ uint8 width;
+ /** Right shift applied to elements in (table). */
+ int8 shift;
+};
+
+/**
+ * Integer log math computation class.
+ */
+typedef struct logmath_s logmath_t;
+
+/**
+ * Obtain the log-add table from a logmath_t *
+ */
+#define LOGMATH_TABLE(lm) ((logadd_t *)lm)
+
+/**
+ * Initialize a log math computation table.
+ * @param base The base B in which computation is to be done.
+ * @param shift Log values are shifted right by this many bits.
+ * @param use_table Whether to use an add table or not
+ * @return The newly created log math table.
+ */
+SPHINXBASE_EXPORT
+logmath_t *logmath_init(float64 base, int shift, int use_table);
+
+/**
+ * Memory-map (or read) a log table from a file.
+ */
+SPHINXBASE_EXPORT
+logmath_t *logmath_read(const char *filename);
+
+/**
+ * Write a log table to a file.
+ */
+SPHINXBASE_EXPORT
+int32 logmath_write(logmath_t *lmath, const char *filename);
+
+/**
+ * Get the log table size and dimensions.
+ */
+SPHINXBASE_EXPORT
+int32 logmath_get_table_shape(logmath_t *lmath, uint32 *out_size,
+ uint32 *out_width, uint32 *out_shift);
+
+/**
+ * Get the log base.
+ */
+SPHINXBASE_EXPORT
+float64 logmath_get_base(logmath_t *lmath);
+
+/**
+ * Get the smallest possible value represented in this base.
+ */
+SPHINXBASE_EXPORT
+int logmath_get_zero(logmath_t *lmath);
+
+/**
+ * Get the width of the values in a log table.
+ */
+SPHINXBASE_EXPORT
+int logmath_get_width(logmath_t *lmath);
+
+/**
+ * Get the shift of the values in a log table.
+ */
+SPHINXBASE_EXPORT
+int logmath_get_shift(logmath_t *lmath);
+
+/**
+ * Retain ownership of a log table.
+ *
+ * @return pointer to retained log table.
+ */
+SPHINXBASE_EXPORT
+logmath_t *logmath_retain(logmath_t *lmath);
+
+/**
+ * Free a log table.
+ *
+ * @return new reference count (0 if freed completely)
+ */
+SPHINXBASE_EXPORT
+int logmath_free(logmath_t *lmath);
+
+/**
+ * Add two values in log space exactly and slowly (without using add table).
+ */
+SPHINXBASE_EXPORT
+int logmath_add_exact(logmath_t *lmath, int logb_p, int logb_q);
+
+/**
+ * Add two values in log space (i.e. return log(exp(p)+exp(q)))
+ */
+SPHINXBASE_EXPORT
+int logmath_add(logmath_t *lmath, int logb_p, int logb_q);
+
+/**
+ * Convert linear floating point number to integer log in base B.
+ */
+SPHINXBASE_EXPORT
+int logmath_log(logmath_t *lmath, float64 p);
+
+/**
+ * Convert integer log in base B to linear floating point.
+ */
+SPHINXBASE_EXPORT
+float64 logmath_exp(logmath_t *lmath, int logb_p);
+
+/**
+ * Convert natural log (in floating point) to integer log in base B.
+ */
+SPHINXBASE_EXPORT
+int logmath_ln_to_log(logmath_t *lmath, float64 log_p);
+
+/**
+ * Convert integer log in base B to natural log (in floating point).
+ */
+SPHINXBASE_EXPORT
+float64 logmath_log_to_ln(logmath_t *lmath, int logb_p);
+
+/**
+ * Convert base 10 log (in floating point) to integer log in base B.
+ */
+SPHINXBASE_EXPORT
+int logmath_log10_to_log(logmath_t *lmath, float64 log_p);
+
+/**
+ * Convert integer log in base B to base 10 log (in floating point).
+ */
+SPHINXBASE_EXPORT
+float64 logmath_log_to_log10(logmath_t *lmath, int logb_p);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __LOGMATH_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1997-2000 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: matrix.h
+ *
+ * Description: Matrix and linear algebra functions
+ *
+ * Author:
+ *
+ *********************************************************************/
+
+#ifndef MATRIX_H
+#define MATRIX_H
+
+/** \file matrix.h
+ * \brief Matrix and linear algebra functions.
+ *
+ * This file contains some basic matrix and linear algebra operations.
+ * In general these operate on positive definite matrices ONLY,
+ * because all matrices we're likely to encounter are either
+ * covariance matrices or are derived from them, and therefore a
+ * non-positive-definite matrix indicates some kind of pathological
+ * condition.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+
+/**
+ * Norm an array
+ * @param arr array
+ * @param d1 dimension
+ * @param d2 dimension
+ * @param d3 dimension
+ **/
+SPHINXBASE_EXPORT void norm_3d(float32 ***arr, uint32 d1, uint32 d2, uint32 d3);
+
+/**
+ * Floor 3-d array
+ * @param out output array
+ * @para in input array
+ * @param d1 dimension
+ * @param d2 dimension
+ * @param d3 dimension
+ **/
+SPHINXBASE_EXPORT void
+accum_3d(float32 ***out, float32 ***in, uint32 d1, uint32 d2, uint32 d3);
+
+/** Ensures that non-zero values x such that -band < x < band, band > 0 are set to -band if x < 0 and band if x > 0.
+ * @param v array
+ * @param d1 array size
+ * @param band band value
+ */
+SPHINXBASE_EXPORT void band_nz_1d(float32 *v, uint32 d1, float32 band);
+
+/**
+ * Floor 3-d array
+ * @param m array
+ * @param d1 dimension
+ * @param d2 dimension
+ * @param d3 dimension
+ * @param floor floor value
+ **/
+SPHINXBASE_EXPORT void floor_nz_3d(float32 ***m, uint32 d1, uint32 d2, uint32 d3, float32 floor);
+
+/**
+ * Floor 1-d array
+ * @param m array
+ * @param d1 dimension
+ * @param floor floor value
+ **/
+SPHINXBASE_EXPORT void floor_nz_1d(float32 *v, uint32 d1, float32 floor);
+
+/**
+ * Calculate the determinant of a positive definite matrix.
+ * @param a The input matrix, must be positive definite.
+ * @param len The dimension of the input matrix.
+ * @return The determinant of the input matrix, or -1.0 if the matrix is
+ * not positive definite.
+ *
+ * \note These can be vanishingly small hence the float64 return type.
+ * Also note that only the upper triangular portion of a is
+ * considered, therefore the check for positive-definiteness is not
+ * reliable.
+ **/
+SPHINXBASE_EXPORT
+float64 determinant(float32 **a, int32 len);
+
+/**
+ * Invert (if possible) a positive definite matrix.
+ * @param out_ainv The inverse of a will be stored here.
+ * @param a The input matrix, must be positive definite.
+ * @param len The dimension of the input matrix.
+ * @return 0 for success or -1 for a non-positive-definite matrix.
+ *
+ * \note Only the upper triangular portion of a is considered,
+ * therefore the check for positive-definiteness is not reliable.
+ **/
+SPHINXBASE_EXPORT
+int32 invert(float32 **out_ainv, float32 **a, int32 len);
+
+/**
+ * Solve (if possible) a positive-definite system of linear equations AX=B for X.
+ * @param a The A matrix on the left-hand side of the equation, must be positive-definite.
+ * @param b The B vector on the right-hand side of the equation.
+ * @param out_x The X vector will be stored here.
+ * @param n The dimension of the A matrix (n by n) and the B and X vectors.
+ * @return 0 for success or -1 for a non-positive-definite matrix.
+ *
+ * \note Only the upper triangular portion of a is considered,
+ * therefore the check for positive-definiteness is not reliable.
+ **/
+SPHINXBASE_EXPORT
+int32 solve(float32 **a, float32 *b,
+ float32 *out_x, int32 n);
+
+/**
+ * Calculate the outer product of two vectors.
+ * @param out_a A (pre-allocated) len x len array. The outer product
+ * will be stored here.
+ * @param x A vector of length len.
+ * @param y A vector of length len.
+ * @param len The length of the input vectors.
+ **/
+SPHINXBASE_EXPORT
+void outerproduct(float32 **out_a, float32 *x, float32 *y, int32 len);
+
+/**
+ * Multiply C=AB where A and B are symmetric matrices.
+ * @param out_c The output matrix C.
+ * @param a The input matrix A.
+ * @param b The input matrix B.
+ * @param n Dimensionality of A and B.
+ **/
+SPHINXBASE_EXPORT
+void matrixmultiply(float32 **out_c, /* = */
+ float32 **a, /* * */ float32 **b,
+ int32 n);
+
+/**
+ * Multiply a symmetric matrix by a constant in-place.
+ * @param inout_a The matrix to multiply.
+ * @param x The constant to multiply it by.
+ * @param n dimension of a.
+ **/
+SPHINXBASE_EXPORT
+void scalarmultiply(float32 **inout_a, float32 x, int32 n);
+
+/**
+ * Add A += B.
+ * @param inout_a The A matrix to add.
+ * @param b The B matrix to add to A.
+ * @param n dimension of a and b.
+ **/
+SPHINXBASE_EXPORT
+void matrixadd(float32 **inout_a, float32 **b, int32 n);
+
+#if 0
+{ /* Fool indent. */
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MATRIX_H */
+
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log$
+ * Revision 1.4 2004/07/21 17:46:09 egouvea
+ * Changed the license terms to make it the same as sphinx2 and sphinx3.
+ *
+ * Revision 1.3 2001/04/05 20:02:30 awb
+ * *** empty log message ***
+ *
+ * Revision 1.2 2000/09/29 22:35:12 awb
+ * *** empty log message ***
+ *
+ * Revision 1.1 2000/09/24 21:38:30 awb
+ * *** empty log message ***
+ *
+ * Revision 1.1 97/07/16 11:39:10 eht
+ * Initial revision
+ *
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2006-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file mmio.h
+ * @brief Memory-mapped I/O wrappers for files.
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ **/
+
+#ifndef __MMIO_H__
+#define __MMIO_H__
+
+#include <sphinxbase/sphinxbase_export.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Abstract structure representing a memory-mapped file.
+ **/
+typedef struct mmio_file_s mmio_file_t;
+
+/**
+ * Memory-map a file for reading.
+ * @return a mmio_file_t * or NULL for failure.
+ **/
+SPHINXBASE_EXPORT
+mmio_file_t *mmio_file_read(const char *filename);
+
+/**
+ * Get a pointer to the memory mapped for a file.
+ **/
+SPHINXBASE_EXPORT
+void *mmio_file_ptr(mmio_file_t *mf);
+
+/**
+ * Unmap a file, releasing memory associated with it.
+ **/
+SPHINXBASE_EXPORT
+void mmio_file_unmap(mmio_file_t *mf);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __MMIO_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * muLaw.h -- Table for converting mu-law data into 16-bit linear PCM format.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ *
+ * 21-Jul-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created from Sunil Issar's version.
+ */
+
+/**
+ * \file mulaw.h
+ * \brief Table for converting mu-law data into 16-bit linear PCM format.
+ */
+
+
+#ifndef _MULAW_H_
+#define _MULAW_H_
+
+
+static int16 muLaw[256] = {
+ -0x1f5f, -0x1e5f, -0x1d5f, -0x1c5f, -0x1b5f, -0x1a5f, -0x195f, -0x185f,
+ -0x175f, -0x165f, -0x155f, -0x145f, -0x135f, -0x125f, -0x115f, -0x105f,
+ -0x0f9f, -0x0f1f, -0x0e9f, -0x0e1f, -0x0d9f, -0x0d1f, -0x0c9f, -0x0c1f,
+ -0x0b9f, -0x0b1f, -0x0a9f, -0x0a1f, -0x099f, -0x091f, -0x089f, -0x081f,
+ -0x07bf, -0x077f, -0x073f, -0x06ff, -0x06bf, -0x067f, -0x063f, -0x05ff,
+ -0x05bf, -0x057f, -0x053f, -0x04ff, -0x04bf, -0x047f, -0x043f, -0x03ff,
+ -0x03cf, -0x03af, -0x038f, -0x036f, -0x034f, -0x032f, -0x030f, -0x02ef,
+ -0x02cf, -0x02af, -0x028f, -0x026f, -0x024f, -0x022f, -0x020f, -0x01ef,
+ -0x01d7, -0x01c7, -0x01b7, -0x01a7, -0x0197, -0x0187, -0x0177, -0x0167,
+ -0x0157, -0x0147, -0x0137, -0x0127, -0x0117, -0x0107, -0x00f7, -0x00e7,
+ -0x00db, -0x00d3, -0x00cb, -0x00c3, -0x00bb, -0x00b3, -0x00ab, -0x00a3,
+ -0x009b, -0x0093, -0x008b, -0x0083, -0x007b, -0x0073, -0x006b, -0x0063,
+ -0x005d, -0x0059, -0x0055, -0x0051, -0x004d, -0x0049, -0x0045, -0x0041,
+ -0x003d, -0x0039, -0x0035, -0x0031, -0x002d, -0x0029, -0x0025, -0x0021,
+ -0x001e, -0x001c, -0x001a, -0x0018, -0x0016, -0x0014, -0x0012, -0x0010,
+ -0x000e, -0x000c, -0x000a, -0x0008, -0x0006, -0x0004, -0x0002, 0x0000,
+ 0x1f5f, 0x1e5f, 0x1d5f, 0x1c5f, 0x1b5f, 0x1a5f, 0x195f, 0x185f,
+ 0x175f, 0x165f, 0x155f, 0x145f, 0x135f, 0x125f, 0x115f, 0x105f,
+ 0x0f9f, 0x0f1f, 0x0e9f, 0x0e1f, 0x0d9f, 0x0d1f, 0x0c9f, 0x0c1f,
+ 0x0b9f, 0x0b1f, 0x0a9f, 0x0a1f, 0x099f, 0x091f, 0x089f, 0x081f,
+ 0x07bf, 0x077f, 0x073f, 0x06ff, 0x06bf, 0x067f, 0x063f, 0x05ff,
+ 0x05bf, 0x057f, 0x053f, 0x04ff, 0x04bf, 0x047f, 0x043f, 0x03ff,
+ 0x03cf, 0x03af, 0x038f, 0x036f, 0x034f, 0x032f, 0x030f, 0x02ef,
+ 0x02cf, 0x02af, 0x028f, 0x026f, 0x024f, 0x022f, 0x020f, 0x01ef,
+ 0x01d7, 0x01c7, 0x01b7, 0x01a7, 0x0197, 0x0187, 0x0177, 0x0167,
+ 0x0157, 0x0147, 0x0137, 0x0127, 0x0117, 0x0107, 0x00f7, 0x00e7,
+ 0x00db, 0x00d3, 0x00cb, 0x00c3, 0x00bb, 0x00b3, 0x00ab, 0x00a3,
+ 0x009b, 0x0093, 0x008b, 0x0083, 0x007b, 0x0073, 0x006b, 0x0063,
+ 0x005d, 0x0059, 0x0055, 0x0051, 0x004d, 0x0049, 0x0045, 0x0041,
+ 0x003d, 0x0039, 0x0035, 0x0031, 0x002d, 0x0029, 0x0025, 0x0021,
+ 0x001e, 0x001c, 0x001a, 0x0018, 0x0016, 0x0014, 0x0012, 0x0010,
+ 0x000e, 0x000c, 0x000a, 0x0008, 0x0006, 0x0004, 0x0002, 0x0000,
+};
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file ngram_model.h
+ * @brief N-Gram language models
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#ifndef __NGRAM_MODEL_H__
+#define __NGRAM_MODEL_H__
+
+#include <stdarg.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/logmath.h>
+#include <sphinxbase/mmio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Abstract type representing an N-Gram based language model.
+ */
+typedef struct ngram_model_s ngram_model_t;
+
+/**
+ * Abstract type representing a word class in an N-Gram model.
+ */
+typedef struct ngram_class_s ngram_class_t;
+
+/**
+ * File types for N-Gram files
+ */
+typedef enum ngram_file_type_e {
+ NGRAM_INVALID = -1, /**< Not a valid file type. */
+ NGRAM_AUTO, /**< Determine file type automatically. */
+ NGRAM_ARPA, /**< ARPABO text format (the standard). */
+ NGRAM_DMP, /**< Sphinx .DMP format. */
+ NGRAM_DMP32, /**< Sphinx .DMP32 format (NOT SUPPORTED) */
+} ngram_file_type_t;
+
+#define NGRAM_INVALID_WID -1 /**< Impossible word ID */
+
+/**
+ * Read an N-Gram model from a file on disk.
+ *
+ * @param config Optional pointer to a set of command-line arguments.
+ * Recognized arguments are:
+ *
+ * - -mmap (boolean) whether to use memory-mapped I/O
+ * - -lw (float32) language weight to apply to the model
+ * - -wip (float32) word insertion penalty to apply to the model
+ * - -uw (float32) unigram weight to apply to the model
+ *
+ * @param file_name path to the file to read.
+ * @param file_type type of the file, or NGRAM_AUTO to determine automatically.
+ * @param lmath Log-math parameters to use for probability
+ * calculations. Ownership of this object is assumed by
+ * the newly created ngram_model_t, and you should not
+ * attempt to free it manually. If you wish to reuse it
+ * elsewhere, you must retain it with logmath_retain().
+ * @return newly created ngram_model_t.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_read(cmd_ln_t *config,
+ const char *file_name,
+ ngram_file_type_t file_type,
+ logmath_t *lmath);
+
+/**
+ * Write an N-Gram model to disk.
+ *
+ * @return 0 for success, <0 on error
+ */
+SPHINXBASE_EXPORT
+int ngram_model_write(ngram_model_t *model, const char *file_name,
+ ngram_file_type_t format);
+
+/**
+ * Guess the file type for an N-Gram model from the filename.
+ *
+ * @return the guessed file type, or NGRAM_INVALID if none could be guessed.
+ */
+SPHINXBASE_EXPORT
+ngram_file_type_t ngram_file_name_to_type(const char *file_name);
+
+/**
+ * Get the N-Gram file type from a string.
+ *
+ * @return file type, or NGRAM_INVALID if no such file type exists.
+ */
+SPHINXBASE_EXPORT
+ngram_file_type_t ngram_str_to_type(const char *str_name);
+
+/**
+ * Get the canonical name for an N-Gram file type.
+ *
+ * @return read-only string with the name for this file type, or NULL
+ * if no such type exists.
+ */
+SPHINXBASE_EXPORT
+char const *ngram_type_to_str(int type);
+
+/**
+ * Retain ownership of an N-Gram model.
+ *
+ * @return Pointer to retained model.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_retain(ngram_model_t *model);
+
+/**
+ * Release memory associated with an N-Gram model.
+ *
+ * @return new reference count (0 if freed completely)
+ */
+SPHINXBASE_EXPORT
+int ngram_model_free(ngram_model_t *model);
+
+/**
+ * Re-encode word strings in an N-Gram model.
+ *
+ * Character set names are the same as those passed to iconv(1). If
+ * your system does not have iconv, this function may fail. Also,
+ * because all file formats consist of 8-bit character streams,
+ * attempting to convert to or from UTF-16 (or any other encoding
+ * which contains null bytes) is a recipe for total desaster.
+ *
+ * We have no interest in supporting UTF-16, so don't ask.
+ *
+ * Note that this does not affect any pronunciation dictionary you
+ * might currently be using in conjunction with this N-Gram model, so
+ * the effect of calling this during decoding is undefined. That's a
+ * bug!
+ */
+SPHINXBASE_EXPORT
+int ngram_model_recode(ngram_model_t *model, const char *from, const char *to);
+
+/**
+ * Constants for case folding.
+ */
+typedef enum ngram_case_e {
+ NGRAM_UPPER,
+ NGRAM_LOWER
+} ngram_case_t;
+
+/**
+ * Case-fold word strings in an N-Gram model.
+ *
+ * WARNING: This is not Unicode aware, so any non-ASCII characters
+ * will not be converted.
+ */
+SPHINXBASE_EXPORT
+int ngram_model_casefold(ngram_model_t *model, int kase);
+
+/**
+ * Apply a language weight, insertion penalty, and unigram weight to a
+ * language model.
+ *
+ * This will change the values output by ngram_score() and friends.
+ * This is done for efficiency since in decoding, these are the only
+ * values we actually need. Call ngram_prob() if you want the "raw"
+ * N-Gram probability estimate.
+ *
+ * To remove all weighting, call ngram_apply_weights(model, 1.0, 1.0, 1.0).
+ */
+SPHINXBASE_EXPORT
+int ngram_model_apply_weights(ngram_model_t *model,
+ float32 lw, float32 wip, float32 uw);
+
+/**
+ * Get the current weights from a language model.
+ *
+ * @param model The model in question.
+ * @param out_log_wip Output: (optional) logarithm of word insertion penalty.
+ * @param out_log_uw Output: (optional) logarithm of unigram weight.
+ * @return language weight.
+ */
+SPHINXBASE_EXPORT
+float32 ngram_model_get_weights(ngram_model_t *model, int32 *out_log_wip,
+ int32 *out_log_uw);
+
+/**
+ * Get the score (scaled, interpolated log-probability) for a general
+ * N-Gram.
+ *
+ * The argument list consists of the history words (as null-terminated
+ * strings) of the N-Gram, <b>in reverse order</b>, followed by NULL.
+ * Therefore, if you wanted to get the N-Gram score for "a whole joy",
+ * you would call:
+ *
+ * <pre>
+ * score = ngram_score(model, "joy", "whole", "a", NULL);
+ * </pre>
+ *
+ * This is not the function to use in decoding, because it has some
+ * overhead for looking up words. Use ngram_ng_score(),
+ * ngram_tg_score(), or ngram_bg_score() instead. In the future there
+ * will probably be a version that takes a general language model
+ * state object, to support suffix-array LM and things like that.
+ *
+ * If one of the words is not in the LM's vocabulary, the result will
+ * depend on whether this is an open or closed vocabulary language
+ * model. For an open-vocabulary model, unknown words are all mapped
+ * to the unigram <UNK> which has a non-zero probability and also
+ * participates in higher-order N-Grams. Therefore, you will get a
+ * score of some sort in this case.
+ *
+ * For a closed-vocabulary model, unknown words are impossible and
+ * thus have zero probability. Therefore, if <code>word</code> is
+ * unknown, this function will return a "zero" log-probability, i.e. a
+ * large negative number. To obtain this number for comparison, call
+ * ngram_zero().
+ */
+SPHINXBASE_EXPORT
+int32 ngram_score(ngram_model_t *model, const char *word, ...);
+
+/**
+ * Quick trigram score lookup.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_tg_score(ngram_model_t *model,
+ int32 w3, int32 w2, int32 w1,
+ int32 *n_used);
+
+/**
+ * Quick bigram score lookup.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_bg_score(ngram_model_t *model,
+ int32 w2, int32 w1,
+ int32 *n_used);
+
+/**
+ * Quick general N-Gram score lookup.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_ng_score(ngram_model_t *model, int32 wid, int32 *history,
+ int32 n_hist, int32 *n_used);
+
+/**
+ * Get the "raw" log-probability for a general N-Gram.
+ *
+ * This returns the log-probability of an N-Gram, as defined in the
+ * language model file, before any language weighting, interpolation,
+ * or insertion penalty has been applied.
+ *
+ * @note When backing off to a unigram from a bigram or trigram, the
+ * unigram weight (interpolation with uniform) is not removed.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_prob(ngram_model_t *model, const char *word, ...);
+
+/**
+ * Quick "raw" probability lookup for a general N-Gram.
+ *
+ * See documentation for ngram_ng_score() and ngram_apply_weights()
+ * for an explanation of this.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_ng_prob(ngram_model_t *model, int32 wid, int32 *history,
+ int32 n_hist, int32 *n_used);
+
+/**
+ * Convert score to "raw" log-probability.
+ *
+ * @note The unigram weight (interpolation with uniform) is not
+ * removed, since there is no way to know which order of N-Gram
+ * generated <code>score</code>.
+ *
+ * @param model The N-Gram model from which score was obtained.
+ * @param score The N-Gram score to convert
+ * @return The raw log-probability value.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_score_to_prob(ngram_model_t *model, int32 score);
+
+/**
+ * Look up numerical word ID.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_wid(ngram_model_t *model, const char *word);
+
+/**
+ * Look up word string for numerical word ID.
+ */
+SPHINXBASE_EXPORT
+const char *ngram_word(ngram_model_t *model, int32 wid);
+
+/**
+ * Get the unknown word ID for a language model.
+ *
+ * Language models can be either "open vocabulary" or "closed
+ * vocabulary". The difference is that the former assigns a fixed
+ * non-zero unigram probability to unknown words, while the latter
+ * does not allow unknown words (or, equivalently, it assigns them
+ * zero probability). If this is a closed vocabulary model, this
+ * function will return NGRAM_INVALID_WID.
+ *
+ * @return The ID for the unknown word, or NGRAM_INVALID_WID if none
+ * exists.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_unknown_wid(ngram_model_t *model);
+
+/**
+ * Get the "zero" log-probability value for a language model.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_zero(ngram_model_t *model);
+
+/**
+ * Get the order of the N-gram model (i.e. the "N" in "N-gram")
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_get_size(ngram_model_t *model);
+
+/**
+ * Get the counts of the various N-grams in the model.
+ */
+SPHINXBASE_EXPORT
+int32 const *ngram_model_get_counts(ngram_model_t *model);
+
+/**
+ * M-gram iterator object.
+ */
+typedef struct ngram_iter_s ngram_iter_t;
+
+/**
+ * Iterate over all M-grams.
+ *
+ * @param model Language model to query.
+ * @param m Order of the M-Grams requested minus one (i.e. order of the history)
+ * @return An iterator over the requested M, or NULL if no N-grams of
+ * order M+1 exist.
+ */
+SPHINXBASE_EXPORT
+ngram_iter_t *ngram_model_mgrams(ngram_model_t *model, int m);
+
+/**
+ * Get an iterator over M-grams pointing to the specified M-gram.
+ */
+SPHINXBASE_EXPORT
+ngram_iter_t *ngram_iter(ngram_model_t *model, const char *word, ...);
+
+/**
+ * Get an iterator over M-grams pointing to the specified M-gram.
+ */
+SPHINXBASE_EXPORT
+ngram_iter_t *ngram_ng_iter(ngram_model_t *model, int32 wid, int32 *history, int32 n_hist);
+
+/**
+ * Get information from the current M-gram in an iterator.
+ *
+ * @param out_score Output: Score for this M-gram (including any word
+ * penalty and language weight).
+ * @param out_bowt Output: Backoff weight for this M-gram.
+ * @return read-only array of word IDs.
+ */
+SPHINXBASE_EXPORT
+int32 const *ngram_iter_get(ngram_iter_t *itor,
+ int32 *out_score,
+ int32 *out_bowt);
+
+/**
+ * Iterate over all M-gram successors of an M-1-gram.
+ *
+ * @param itor Iterator pointing to the M-1-gram to get successors of.
+ */
+SPHINXBASE_EXPORT
+ngram_iter_t *ngram_iter_successors(ngram_iter_t *itor);
+
+/**
+ * Advance an M-gram iterator.
+ */
+SPHINXBASE_EXPORT
+ngram_iter_t *ngram_iter_next(ngram_iter_t *itor);
+
+/**
+ * Terminate an M-gram iterator.
+ */
+SPHINXBASE_EXPORT
+void ngram_iter_free(ngram_iter_t *itor);
+
+/**
+ * Add a word (unigram) to the language model.
+ *
+ * @note The semantics of this are not particularly well-defined for
+ * model sets, and may be subject to change. Currently this will add
+ * the word to all of the submodels
+ *
+ * @param model The model to add a word to.
+ * @param word Text of the word to add.
+ * @param weight Weight of this word relative to the uniform distribution.
+ * @return The word ID for the new word.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_add_word(ngram_model_t *model,
+ const char *word, float32 weight);
+
+/**
+ * Read a class definition file and add classes to a language model.
+ *
+ * This function assumes that the class tags have already been defined
+ * as unigrams in the language model. All words in the class
+ * definition will be added to the lexicon as special in-class words.
+ * For this reason is is necessary that they not have the same names
+ * as any words in the general unigram distribution. The convention
+ * is to suffix them with ":class_tag", where class_tag is the class
+ * tag minus the enclosing square brackets.
+ *
+ * @return 0 for success, <0 for error
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_read_classdef(ngram_model_t *model,
+ const char *file_name);
+
+/**
+ * Add a new class to a language model.
+ *
+ * If <code>classname</code> already exists in the unigram set for
+ * <code>model</code>, then it will be converted to a class tag, and
+ * <code>classweight</code> will be ignored. Otherwise, a new unigram
+ * will be created as in ngram_model_add_word().
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_add_class(ngram_model_t *model,
+ const char *classname,
+ float32 classweight,
+ char **words,
+ const float32 *weights,
+ int32 n_words);
+
+/**
+ * Add a word to a class in a language model.
+ *
+ * @param model The model to add a word to.
+ * @param classname Name of the class to add this word to.
+ * @param word Text of the word to add.
+ * @param weight Weight of this word relative to the within-class uniform distribution.
+ * @return The word ID for the new word.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_add_class_word(ngram_model_t *model,
+ const char *classname,
+ const char *word,
+ float32 weight);
+
+/**
+ * Create a set of language models sharing a common space of word IDs.
+ *
+ * This function creates a meta-language model which groups together a
+ * set of language models, synchronizing word IDs between them. To
+ * use this language model, you can either select a submodel to use
+ * exclusively using ngram_model_set_select(), or interpolate
+ * between scores from all models. To do the latter, you can either
+ * pass a non-NULL value of the <code>weights</code> parameter, or
+ * re-activate interpolation later on by calling
+ * ngram_model_set_interp().
+ *
+ * In order to make this efficient, there are some restrictions on the
+ * models that can be grouped together. The most important (and
+ * currently the only) one is that they <strong>must</strong> all
+ * share the same log-math parameters.
+ *
+ * @param config Any configuration parameters to be shared between models.
+ * @param models Array of pointers to previously created language models.
+ * @param names Array of strings to use as unique identifiers for LMs.
+ * @param weights Array of weights to use in interpolating LMs, or NULL
+ * for no interpolation.
+ * @param n_models Number of elements in the arrays passed to this function.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_init(cmd_ln_t *config,
+ ngram_model_t **models,
+ char **names,
+ const float32 *weights,
+ int32 n_models);
+
+/**
+ * Read a set of language models from a control file.
+ *
+ * This file creates a language model set from a "control file" of
+ * the type used in Sphinx-II and Sphinx-III.
+ * File format (optional stuff is indicated by enclosing in []):
+ *
+ * <pre>
+ * [{ LMClassFileName LMClassFilename ... }]
+ * TrigramLMFileName LMName [{ LMClassName LMClassName ... }]
+ * TrigramLMFileName LMName [{ LMClassName LMClassName ... }]
+ * ...
+ * (There should be whitespace around the { and } delimiters.)
+ * </pre>
+ *
+ * This is an extension of the older format that had only TrigramLMFilenName
+ * and LMName pairs. The new format allows a set of LMClass files to be read
+ * in and referred to by the trigram LMs.
+ *
+ * No "comments" allowed in this file.
+ *
+ * @param config Configuration parameters.
+ * @param lmctlfile Path to the language model control file.
+ * @param lmath Log-math parameters to use for probability
+ * calculations. Ownership of this object is assumed by
+ * the newly created ngram_model_t, and you should not
+ * attempt to free it manually. If you wish to reuse it
+ * elsewhere, you must retain it with logmath_retain().
+ * @return newly created language model set.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_read(cmd_ln_t *config,
+ const char *lmctlfile,
+ logmath_t *lmath);
+
+/**
+ * Returns the number of language models in a set.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_set_count(ngram_model_t *set);
+
+/**
+ * Iterator over language models in a set.
+ */
+typedef struct ngram_model_set_iter_s ngram_model_set_iter_t;
+
+/**
+ * Begin iterating over language models in a set.
+ *
+ * @return iterator pointing to the first language model, or NULL if no models remain.
+ */
+SPHINXBASE_EXPORT
+ngram_model_set_iter_t *ngram_model_set_iter(ngram_model_t *set);
+
+/**
+ * Move to the next language model in a set.
+ *
+ * @return iterator pointing to the next language model, or NULL if no models remain.
+ */
+SPHINXBASE_EXPORT
+ngram_model_set_iter_t *ngram_model_set_iter_next(ngram_model_set_iter_t *itor);
+
+/**
+ * Finish iteration over a langauge model set.
+ */
+SPHINXBASE_EXPORT
+void ngram_model_set_iter_free(ngram_model_set_iter_t *itor);
+
+/**
+ * Get language model and associated name from an iterator.
+ *
+ * @param itor the iterator
+ * @param lmname Output: string name associated with this language model.
+ * @return Language model pointed to by this iterator.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_iter_model(ngram_model_set_iter_t *itor,
+ char const **lmname);
+
+/**
+ * Select a single language model from a set for scoring.
+ *
+ * @return the newly selected language model, or NULL if no language
+ * model by that name exists.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_select(ngram_model_t *set,
+ const char *name);
+
+/**
+ * Look up a language model by name from a set.
+ *
+ * @return language model corresponding to <code>name</code>, or NULL
+ * if no language model by that name exists.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_lookup(ngram_model_t *set,
+ const char *name);
+
+/**
+ * Get the current language model name, if any.
+ */
+SPHINXBASE_EXPORT
+const char *ngram_model_set_current(ngram_model_t *set);
+
+/**
+ * Set interpolation weights for a set and enables interpolation.
+ *
+ * If <code>weights</code> is NULL, any previously initialized set of
+ * weights will be used. If no weights were specified to
+ * ngram_model_set_init(), then a uniform distribution will be used.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_interp(ngram_model_t *set,
+ const char **names,
+ const float32 *weights);
+
+/**
+ * Add a language model to a set.
+ *
+ * @param set The language model set to add to.
+ * @param model The language model to add.
+ * @param name The name to associate with this model.
+ * @param weight Interpolation weight for this model, relative to the
+ * uniform distribution. 1.0 is a safe value.
+ * @param reuse_widmap Reuse the existing word-ID mapping in
+ * <code>set</code>. Any new words present in <code>model</code>
+ * will not be added to the word-ID mapping in this case.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_add(ngram_model_t *set,
+ ngram_model_t *model,
+ const char *name,
+ float32 weight,
+ int reuse_widmap);
+
+/**
+ * Remove a language model from a set.
+ *
+ * @param set The language model set to remove from.
+ * @param name The name associated with the model to remove.
+ * @param reuse_widmap Reuse the existing word-ID mapping in
+ * <code>set</code>.
+ */
+SPHINXBASE_EXPORT
+ngram_model_t *ngram_model_set_remove(ngram_model_t *set,
+ const char *name,
+ int reuse_widmap);
+
+/**
+ * Set the word-to-ID mapping for this model set.
+ */
+SPHINXBASE_EXPORT
+void ngram_model_set_map_words(ngram_model_t *set,
+ const char **words,
+ int32 n_words);
+
+/**
+ * Query the word-ID mapping for the current language model.
+ *
+ * @return the local word ID in the current language model, or
+ * NGRAM_INVALID_WID if <code>set_wid</code> is invalid or
+ * interpolation is enabled.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_set_current_wid(ngram_model_t *set,
+ int32 set_wid);
+
+/**
+ * Test whether a word ID corresponds to a known word in the current
+ * state of the language model set.
+ *
+ * @return If there is a current language model, returns non-zero if
+ * <code>set_wid</code> corresponds to a known word in that language
+ * model. Otherwise, returns non-zero if <code>set_wid</code>
+ * corresponds to a known word in any language model.
+ */
+SPHINXBASE_EXPORT
+int32 ngram_model_set_known_wid(ngram_model_t *set, int32 set_wid);
+
+/**
+ * Flush any cached N-Gram information
+ *
+ * Some types of models cache trigram or other N-Gram information to
+ * speed repeated access to N-Grams with shared histories. This
+ * function flushes the cache so as to avoid dynamic memory leaks.
+ */
+SPHINXBASE_EXPORT
+void ngram_model_flush(ngram_model_t *lm);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __NGRAM_MODEL_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * pio.h -- Packaged I/O routines.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: pio.h,v $
+ * Revision 1.3 2005/06/22 08:00:09 arthchan2003
+ * Completed all doxygen documentation on file description for libs3decoder/libutil/libs3audio and programs.
+ *
+ * Revision 1.2 2005/06/22 03:09:52 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Added keyword.
+ *
+ * Revision 1.2 2005/06/16 00:14:08 archan
+ * Added const keyword to file argument for file_open
+ *
+ * Revision 1.1 2005/06/15 06:11:03 archan
+ * sphinx3 to s3.generic: change io.[ch] to pio.[ch]
+ *
+ * Revision 1.5 2005/06/15 04:21:46 archan
+ * 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file.
+ *
+ * Revision 1.4 2005/04/20 03:49:32 archan
+ * Add const to string argument of myfopen.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 08-Dec-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added stat_mtime().
+ *
+ * 11-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added _myfopen() and myfopen macro.
+ *
+ * 05-Sep-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Started.
+ */
+
+
+#ifndef _LIBUTIL_IO_H_
+#define _LIBUTIL_IO_H_
+
+#include <stdio.h>
+#if !defined(_WIN32_WCE) && !(defined(__ADSPBLACKFIN__) && !defined(__linux__))
+#include <sys/stat.h>
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+/** \file pio.h
+ * \brief file IO related operations.
+ *
+ * Custom fopen with error checking is implemented. fopen_comp can
+ * open a file with .z, .Z, .gz or .GZ extension
+ *
+ * WARNING: Usage of stat_retry will results in 100s of waiting time
+ * if the file doesn't exist.
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Like fopen, but use popen and zcat if it is determined that "file" is compressed
+ * (i.e., has a .z, .Z, .gz, or .GZ extension).
+ */
+SPHINXBASE_EXPORT
+FILE *fopen_comp (const char *file, /**< In: File to be opened */
+ const char *mode, /**< In: "r" or "w", as with normal fopen */
+ int32 *ispipe /**< Out: On return *ispipe is TRUE iff file
+ was opened via a pipe */
+ );
+
+/**
+ * Close a file opened using fopen_comp.
+ */
+SPHINXBASE_EXPORT
+void fclose_comp (FILE *fp, /**< In: File pointer to be closed */
+ int32 ispipe /**< In: ispipe argument that was returned by the
+ corresponding fopen_comp() call */
+ );
+
+/**
+ * Open a file for reading, but if file not present try to open compressed version (if
+ * file is uncompressed, and vice versa).
+ */
+SPHINXBASE_EXPORT
+FILE *fopen_compchk (const char *file, /**< In: File to be opened */
+ int32 *ispipe /**< Out: On return *ispipe is TRUE iff file
+ was opened via a pipe */
+ );
+
+/**
+ * Wrapper around fopen to check for failure and E_FATAL if failed.
+ */
+SPHINXBASE_EXPORT
+FILE *_myfopen(const char *file, const char *mode,
+ const char *pgm, int32 line); /* In: __FILE__, __LINE__ from where called */
+#define myfopen(file,mode) _myfopen((file),(mode),__FILE__,__LINE__)
+
+
+/**
+ * NFS file reads seem to fail now and then. Use the following functions in place of
+ * the regular fread. It retries failed freads several times and quits only if all of
+ * them fail. Be aware, however, that even normal failures such as attempting to read
+ * beyond EOF will trigger such retries, wasting about a minute in retries.
+ * Arguments identical to regular fread.
+ */
+SPHINXBASE_EXPORT
+int32 fread_retry(void *pointer, int32 size, int32 num_items, FILE *stream);
+
+/**
+ * Read a line of arbitrary length from a file and return it as a
+ * newly allocated string.
+ *
+ * @deprecated Use line iterators instead.
+ *
+ * @param stream The file handle to read from.
+ * @param out_len Output: if not NULL, length of the string read.
+ * @return allocated string containing the line, or NULL on error or EOF.
+ */
+SPHINXBASE_EXPORT
+char *fread_line(FILE *stream, size_t *out_len);
+
+/**
+ * Line iterator for files.
+ */
+typedef struct lineiter_t {
+ char *buf;
+ size_t bsiz;
+ size_t len;
+ FILE *fh;
+} lineiter_t;
+
+/**
+ * Start reading lines from a file.
+ */
+SPHINXBASE_EXPORT
+lineiter_t *lineiter_start(FILE *fh);
+
+/**
+ * Move to the next line in the file.
+ */
+SPHINXBASE_EXPORT
+lineiter_t *lineiter_next(lineiter_t *li);
+
+/**
+ * Stop reading lines from a file.
+ */
+SPHINXBASE_EXPORT
+void lineiter_free(lineiter_t *li);
+
+
+#ifdef _WIN32_WCE
+/* Fake this for WinCE which has no stat() */
+#include <windows.h>
+struct stat {
+ DWORD st_mtime;
+ DWORD st_size;
+};
+#endif /* _WIN32_WCE */
+
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+struct stat {
+ int32 st_mtime;
+ int32 st_size;
+};
+
+#endif
+
+/**
+ * Bitstream encoder - for writing compressed files.
+ */
+typedef struct bit_encode_s bit_encode_t;
+
+/**
+ * Attach bitstream encoder to a file.
+ */
+bit_encode_t *bit_encode_attach(FILE *outfh);
+
+/**
+ * Retain pointer to a bit encoder.
+ */
+bit_encode_t *bit_encode_retain(bit_encode_t *be);
+
+/**
+ * Release pointer to a bit encoder.
+ *
+ * Note that this does NOT flush any leftover bits.
+ */
+int bit_encode_free(bit_encode_t *be);
+
+/**
+ * Write bits to encoder.
+ */
+int bit_encode_write(bit_encode_t *be, unsigned char const *bits, int nbits);
+
+/**
+ * Write lowest-order bits of codeword to encoder.
+ */
+int bit_encode_write_cw(bit_encode_t *be, uint32 codeword, int nbits);
+
+/**
+ * Flush any unwritten bits, zero-padding if necessary.
+ */
+int bit_encode_flush(bit_encode_t *be);
+
+/**
+ * There is no bitstream decoder, because a stream abstraction is too
+ * slow. Instead we read blocks of bits and treat them as bitvectors.
+ */
+
+/**
+ * Like fread_retry, but for stat. Arguments identical to regular stat.
+ * Return value: 0 if successful, -1 if stat failed several attempts.
+ */
+SPHINXBASE_EXPORT
+int32 stat_retry (const char *file, struct stat *statbuf);
+
+/**
+ * Return time of last modification for the given file, or -1 if stat fails.
+ */
+
+SPHINXBASE_EXPORT
+int32 stat_mtime (const char *file);
+
+/**
+ * Create a directory and all of its parent directories, as needed.
+ *
+ * @return 0 on success, <0 on failure.
+ */
+SPHINXBASE_EXPORT
+int build_directory(const char *path);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * prim_type.h -- Primitive types; more machine-independent.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: prim_type.h,v $
+ * Revision 1.12 2005/10/05 00:31:14 dhdfu
+ * Make int8 be explicitly signed (signedness of 'char' is
+ * architecture-dependent). Then make a bunch of things use uint8 where
+ * signedness is unimportant, because on the architecture where 'char' is
+ * unsigned, it is that way for a reason (signed chars are slower).
+ *
+ * Revision 1.11 2005/06/22 03:10:23 arthchan2003
+ * Added keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 12-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added arraysize_t, point_t, fpoint_t.
+ *
+ * 01-Feb-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added anytype_t.
+ *
+ * 08-31-95 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Created.
+ */
+
+
+#ifndef _LIBUTIL_PRIM_TYPE_H_
+#define _LIBUTIL_PRIM_TYPE_H_
+
+/**
+ * @file prim_type.h
+ * @brief Basic type definitions used in Sphinx.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+} /* Fool Emacs into not indenting things. */
+#endif
+
+#include <sphinx_config.h>
+
+/* Define some things for VisualDSP++ */
+#if defined(__ADSPBLACKFIN__) && !defined(__GNUC__)
+# ifndef HAVE_LONG_LONG
+# define HAVE_LONG_LONG
+# endif
+# ifndef ssize_t
+typedef signed int ssize_t;
+# endif
+# define SIZEOF_LONG_LONG 8
+# define __BIGSTACKVARIABLE__ static
+#else /* Not VisualDSP++ */
+# define __BIGSTACKVARIABLE__
+#endif
+
+/**
+ * Union of basic types.
+ */
+typedef union anytype_s {
+ void *ptr;
+ long i;
+ unsigned long ui;
+ double fl;
+} anytype_t;
+
+/*
+ * Assume P64 or LP64. If you need to port this to a DSP, let us know.
+ */
+typedef int int32;
+typedef short int16;
+typedef signed char int8;
+typedef unsigned int uint32;
+typedef unsigned short uint16;
+typedef unsigned char uint8;
+typedef float float32;
+typedef double float64;
+#if defined(_MSC_VER)
+typedef __int64 int64;
+typedef unsigned __int64 uint64;
+#elif defined(HAVE_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
+typedef long long int64;
+typedef unsigned long long uint64;
+#else /* !HAVE_LONG_LONG && SIZEOF_LONG_LONG == 8 */
+typedef double int64;
+typedef double uint64;
+#endif /* !HAVE_LONG_LONG && SIZEOF_LONG_LONG == 8 */
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef NULL
+#define NULL (void *)0
+#endif
+
+/* These really ought to come from <limits.h>, but not everybody has that. */
+/* Useful constants */
+#define MAX_INT32 ((int32) 0x7fffffff)
+#define MAX_INT16 ((int16) 0x00007fff)
+#define MAX_INT8 ((int8) 0x0000007f)
+
+#define MAX_NEG_INT32 ((int32) 0x80000000)
+#define MAX_NEG_INT16 ((int16) 0xffff8000)
+#define MAX_NEG_INT8 ((int8) 0xffffff80)
+
+#define MAX_UINT32 ((uint32) 0xffffffff)
+#define MAX_UINT16 ((uint16) 0x0000ffff)
+#define MAX_UINT8 ((uint8) 0x000000ff)
+
+/* The following are approximate; IEEE floating point standards might quibble! */
+#define MAX_POS_FLOAT32 3.4e+38f
+#define MIN_POS_FLOAT32 1.2e-38f /* But not 0 */
+#define MAX_POS_FLOAT64 1.8e+307
+#define MIN_POS_FLOAT64 2.2e-308
+
+#define MAX_IEEE_NORM_POS_FLOAT32 3.4e+38f
+#define MIN_IEEE_NORM_POS_FLOAT32 1.2e-38f
+#define MIN_IEEE_NORM_NEG_FLOAT32 -3.4e+38f
+#define MAX_IEEE_NORM_POS_FLOAT64 1.8e+307
+#define MIN_IEEE_NORM_POS_FLOAT64 2.2e-308
+#define MIN_IEEE_NORM_NEG_FLOAT64 -1.8e+307
+
+/* Will the following really work?? */
+#define MAX_NEG_FLOAT32 ((float32) (-MAX_POS_FLOAT32))
+#define MIN_NEG_FLOAT32 ((float32) (-MIN_POS_FLOAT32))
+#define MAX_NEG_FLOAT64 ((float64) (-MAX_POS_FLOAT64))
+#define MIN_NEG_FLOAT64 ((float64) (-MIN_POS_FLOAT64))
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * profile.h -- For timing and event counting.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: profile.h,v $
+ * Revision 1.10 2005/06/22 03:10:59 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Added keyword.
+ *
+ * Revision 1.5 2005/06/15 04:21:47 archan
+ * 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file.
+ *
+ * Revision 1.4 2005/04/25 19:22:48 archan
+ * Refactor out the code of rescoring from lexical tree. Potentially we want to turn off the rescoring if we need.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 11-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ptmr_init().
+ *
+ * 19-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created from earlier Sphinx-3 version.
+ */
+
+
+#ifndef _LIBUTIL_PROFILE_H_
+#define _LIBUTIL_PROFILE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+} /* Fool Emacs into not indenting things. */
+#endif
+
+/** \file profile.h
+ * \brief Implementation of profiling, include counting , timing, cpu clock checking
+ *
+ * Currently, function host_endian is also in this function. It is
+ * not documented.
+ */
+
+#include <stdio.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+
+/**
+ * \struct pctr_t
+ *
+ * Generic event counter for profiling. User is responsible for allocating an array
+ * of the desired number. There should be a sentinel with name = NULL.
+ */
+typedef struct {
+ char *name; /**< Counter print name; NULL
+ terminates array of counters
+ Used by pctr_print_all */
+ int32 count; /**< Counter value */
+} pctr_t;
+
+/**
+ * operations of pctr_t
+ */
+
+/**
+ * Initialize a counter
+ * @return an initialized counter
+ */
+SPHINXBASE_EXPORT
+pctr_t* pctr_new (
+ char *name /**< The name of the counter */
+ );
+
+/**
+ * Reset a counter
+ */
+
+SPHINXBASE_EXPORT
+void pctr_reset (pctr_t *ctr /**< A pointer of a counter */
+ );
+
+/**
+ * Print a counter
+ */
+SPHINXBASE_EXPORT
+void pctr_print(FILE *fp, /**< A file pointer */
+ pctr_t *ctr /**< A pointer of a counter */
+ );
+
+/**
+ * Increment a counter
+ */
+SPHINXBASE_EXPORT
+void pctr_increment (pctr_t *ctr, /**< A pointer of a counter */
+ int32 inc /**< The increment of the counter */
+ );
+
+/**
+ Free the counter
+*/
+SPHINXBASE_EXPORT
+void pctr_free(pctr_t* ctr /**< A pointer of a counter */
+ );
+
+
+/**
+ * \struct ptmr_t
+ * Generic timer structures and functions for coarse-grained performance measurements
+ * using standard system calls.
+ */
+typedef struct {
+ const char *name; /**< Timer print name; NULL terminates an array of timers.
+ Used by ptmr_print_all */
+ float64 t_cpu; /**< CPU time accumulated since most recent reset op */
+ float64 t_elapsed; /**< Elapsed time accumulated since most recent reset */
+ float64 t_tot_cpu; /**< Total CPU time since creation */
+ float64 t_tot_elapsed; /**< Total elapsed time since creation */
+ float64 start_cpu; /**< ---- FOR INTERNAL USE ONLY ---- */
+ float64 start_elapsed; /**< ---- FOR INTERNAL USE ONLY ---- */
+} ptmr_t;
+
+
+
+/** Start timing using tmr */
+SPHINXBASE_EXPORT
+void ptmr_start (ptmr_t *tmr /**< The timer*/
+ );
+
+/** Stop timing and accumulate tmr->{t_cpu, t_elapsed, t_tot_cpu, t_tot_elapsed} */
+SPHINXBASE_EXPORT
+void ptmr_stop (ptmr_t *tmr /**< The timer*/
+ );
+
+/** Reset tmr->{t_cpu, t_elapsed} to 0.0 */
+SPHINXBASE_EXPORT
+void ptmr_reset (ptmr_t *tmr /**< The timer*/
+ );
+
+/** Reset tmr->{t_cpu, t_elapsed, t_tot_cpu, t_tot_elapsed} to 0.0
+ */
+SPHINXBASE_EXPORT
+void ptmr_init (ptmr_t *tmr /**< The timer*/
+ );
+
+
+/**
+ * Reset t_cpu, t_elapsed of all timer modules in array tmr[] to 0.0.
+ * The array should be terminated with a sentinel with .name = NULL.
+ */
+SPHINXBASE_EXPORT
+void ptmr_reset_all (ptmr_t *tmr /**< The timer*/
+ );
+
+/**
+ * Print t_cpu for all timer modules in tmr[], normalized by norm (i.e., t_cpu/norm).
+ * The array should be terminated with a sentinel with .name = NULL.
+ */
+SPHINXBASE_EXPORT
+void ptmr_print_all (FILE *fp, /**< The file pointer */
+ ptmr_t *tmr, /**< The timer*/
+ float64 norm
+ );
+
+
+/**
+ * Return the processor clock speed (in MHz); only available on some machines (Alphas).
+ * The dummy argument can be any integer value.
+ */
+SPHINXBASE_EXPORT
+int32 host_pclk (int32 dummy);
+
+
+/*
+ * Check the native byte-ordering of the machine by writing a magic
+ * number to a temporary file and reading it back. * Return value:
+ * 0 if BIG-ENDIAN, 1 if LITTLE-ENDIAN, -1 if error.
+ */
+SPHINXBASE_EXPORT
+int32 host_endian ( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2008 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file sbthread.h
+ * @brief Simple portable thread functions.
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ **/
+
+#ifndef __SBTHREAD_H__
+#define __SBTHREAD_H__
+
+#include <sphinx_config.h>
+
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/cmd_ln.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Thread object.
+ */
+typedef struct sbthread_s sbthread_t;
+
+/**
+ * Asynchronous message queue object.
+ */
+typedef struct sbmsgq_s sbmsgq_t;
+
+/**
+ * Mutex (critical section) object.
+ */
+typedef struct sbmtx_s sbmtx_t;
+
+/**
+ * Event object.
+ */
+typedef struct sbevent_s sbevent_t;
+
+/**
+ * Entry point for a thread.
+ */
+typedef int (*sbthread_main)(sbthread_t *th);
+
+/**
+ * Start a new thread.
+ */
+SPHINXBASE_EXPORT
+sbthread_t *sbthread_start(cmd_ln_t *config, sbthread_main func, void *arg);
+
+/**
+ * Wait for a thread to complete.
+ */
+SPHINXBASE_EXPORT
+int sbthread_wait(sbthread_t *th);
+
+/**
+ * Free a thread object.
+ */
+SPHINXBASE_EXPORT
+void sbthread_free(sbthread_t *th);
+
+/**
+ * Get configuration object from a thread.
+ */
+SPHINXBASE_EXPORT
+cmd_ln_t *sbthread_config(sbthread_t *th);
+
+/**
+ * Get argument pointer from a thread.
+ */
+SPHINXBASE_EXPORT
+void *sbthread_arg(sbthread_t *th);
+
+/**
+ * Get message queue from a thread.
+ */
+SPHINXBASE_EXPORT
+sbmsgq_t *sbthread_msgq(sbthread_t *th);
+
+/**
+ * Wait for a thread to complete.
+ */
+SPHINXBASE_EXPORT
+int sbthread_wait(sbthread_t *th);
+
+/**
+ * Send an asynchronous message to a thread.
+ *
+ * Each thread gets a message queue by default, so this is just a
+ * wrapper around sbmsgq_send().
+ */
+SPHINXBASE_EXPORT
+int sbthread_send(sbthread_t *th, size_t len, void const *data);
+
+/**
+ * Create a message queue.
+ *
+ * @param depth Depth of the queue.
+ */
+SPHINXBASE_EXPORT
+sbmsgq_t *sbmsgq_init(size_t depth);
+
+/**
+ * Free a message queue.
+ */
+SPHINXBASE_EXPORT
+void sbmsgq_free(sbmsgq_t *q);
+
+/**
+ * Post a message to a queue.
+ */
+SPHINXBASE_EXPORT
+int sbmsgq_send(sbmsgq_t *q, size_t len, void const *data);
+
+/**
+ * Wait for a message from a queue.
+ */
+SPHINXBASE_EXPORT
+void *sbmsgq_wait(sbmsgq_t *q, size_t *out_len, int sec, int nsec);
+
+/**
+ * Create a mutex.
+ */
+SPHINXBASE_EXPORT
+sbmtx_t *sbmtx_init(void);
+
+/**
+ * Try to acquire a mutex.
+ */
+SPHINXBASE_EXPORT
+int sbmtx_trylock(sbmtx_t *mtx);
+
+/**
+ * Acquire a mutex.
+ */
+SPHINXBASE_EXPORT
+int sbmtx_lock(sbmtx_t *mtx);
+
+/**
+ * Release a mutex.
+ */
+SPHINXBASE_EXPORT
+int sbmtx_unlock(sbmtx_t *mtx);
+
+/**
+ * Dispose of a mutex.
+ */
+SPHINXBASE_EXPORT
+void sbmtx_free(sbmtx_t *mtx);
+
+/**
+ * Initialize an event.
+ */
+SPHINXBASE_EXPORT
+sbevent_t *sbevent_init(void);
+
+/**
+ * Free an event.
+ */
+SPHINXBASE_EXPORT
+void sbevent_free(sbevent_t *evt);
+
+/**
+ * Signal an event.
+ */
+SPHINXBASE_EXPORT
+int sbevent_signal(sbevent_t *evt);
+
+/**
+ * Wait for an event to be signalled.
+ */
+SPHINXBASE_EXPORT
+int sbevent_wait(sbevent_t *evt, int sec, int nsec);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __SBTHREAD_H__ */
--- /dev/null
+#ifndef __SPHINXBASE_EXPORT_H__
+#define __SPHINXBASE_EXPORT_H__
+
+/* Win32/WinCE DLL gunk */
+#if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(__SYMBIAN32__)
+#if defined(SPHINXBASE_EXPORTS) /* Visual Studio */
+#define SPHINXBASE_EXPORT __declspec(dllexport)
+#elif defined(__CYGWIN__) /* Disable this on Cygwin, it doesn't work */
+#define SPHINXBASE_EXPORT
+#else
+#define SPHINXBASE_EXPORT __declspec(dllimport)
+#endif
+#else /* !_WIN32 */
+#define SPHINXBASE_EXPORT
+#endif
+
+#endif /* __SPHINXBASE_EXPORT_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1995-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file strfuncs.h
+ * @brief Miscellaneous useful string functions
+ */
+
+#ifndef __SB_STRFUNCS_H__
+#define __SB_STRFUNCS_H__
+
+#include <stdarg.h>
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+/**
+ * Concatenate a NULL-terminated argument list of strings, returning a
+ * newly allocated string.
+ **/
+SPHINXBASE_EXPORT
+char *string_join(const char *base, ...);
+
+/**
+ * Which end of a string to operate on for string_trim().
+ */
+enum string_edge_e {
+ STRING_START, /**< Beginning of string. */
+ STRING_END, /**< End of string. */
+ STRING_BOTH /**< Both ends of string. */
+};
+
+/**
+ * Remove whitespace from a string, modifying it in-place.
+ *
+ * @param string string to trim, contents will be modified.
+ * @param which one of STRING_START, STRING_END, or STRING_BOTH.
+ */
+SPHINXBASE_EXPORT
+char *string_trim(char *string, enum string_edge_e which);
+
+/**
+ * Locale independent version of atof().
+ *
+ * This function behaves like atof() in the "C" locale. Switching
+ * locale in a threaded program is extremely uncool, therefore we need
+ * this since we pass floats as strings in 1000 different places.
+ */
+SPHINXBASE_EXPORT
+double atof_c(char const *str);
+
+SPHINXBASE_EXPORT
+uint32 utf8_decode(uint32 *state, uint32 *codep, uint32 *byte);
+
+/* FIXME: Both of these string splitting functions basically suck. I
+ have attempted to fix them as best I can. (dhuggins@cs, 20070808) */
+
+/**
+ * Convert a line to an array of "words", based on whitespace separators. A word
+ * is a string with no whitespace chars in it.
+ * Note that the string line is modified as a result: NULL chars are placed after
+ * every word in the line.
+ * Return value: No. of words found; -1 if no. of words in line exceeds n_wptr.
+ */
+SPHINXBASE_EXPORT
+int32 str2words (char *line, /**< In/Out: line to be parsed. This
+ string will be modified! (NUL
+ characters inserted at word
+ boundaries) */
+ char **wptr, /**< In/Out: Array of pointers to
+ words found in line. The array
+ must be allocated by the caller.
+ It may be NULL in which case the
+ number of words will be counted.
+ This allows you to allcate it to
+ the proper size, e.g.:
+
+ n = str2words(line, NULL, 0);
+ wptr = ckd_calloc(n, sizeof(*wptr));
+ str2words(line, wptr, n);
+ */
+ int32 n_wptr /**< In: Size of wptr array, ignored
+ if wptr == NULL */
+ );
+
+/**
+ * Yet another attempt at a clean "next-word-in-string" function. See arguments below.
+ * @return Length of word returned, or -1 if nothing found.
+ * This allows you to scan through a line:
+ *
+ * <pre>
+ * while ((n = nextword(line, delim, &word, &delimfound)) >= 0) {
+ * ... do something with word ..
+ * word[n] = delimfound;
+ * line = word + n;
+ * }
+ * </pre>
+ */
+SPHINXBASE_EXPORT
+int32 nextword (char *line, /**< Input: String being searched for next word.
+ Will be modified by this function (NUL characters inserted) */
+ const char *delim, /**< Input: A word, if found, must be delimited at either
+ end by a character from this string (or at the end
+ by the NULL char) */
+ char **word,/**< Output: *word = ptr within line to beginning of first
+ word, if found. Delimiter at the end of word replaced
+ with the NULL char. */
+ char *delimfound /**< Output: *delimfound = original delimiter found at the end
+ of the word. (This way, the caller can restore the
+ delimiter, preserving the original string.) */
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __SB_STRFUNCS_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * unlimit.h -- "unlimit" the memory usage of program.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.1 2006/04/05 20:27:30 dhdfu
+ * A Great Reorganzation of header files and executables
+ *
+ * Revision 1.6 2005/06/22 03:12:31 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Added keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 03-Oct-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * Copied from Sphinx-II sources.
+ */
+
+
+#ifndef _LIBUTIL_UNLIMIT_H_
+#define _LIBUTIL_UNLIMIT_H_
+
+/** \file unlimit.h
+ \brief (Obsolete, keep it for compilation purposes)
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+} /* Fool Emacs into not indenting things. */
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+
+/* To remove resource (memory) usage restrictions */
+SPHINXBASE_EXPORT
+void unlimit ( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ * Copyright (c) 2008 Beyond Access, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BEYOND ACCESS, INC. ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BEYOND ACCESS, INC. NOR
+ * ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file yin.h
+ * @brief Implementation of pitch estimation
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ *
+ * This implements part of the YIN algorithm:
+ *
+ * "YIN, a fundamental frequency estimator for speech and music".
+ * Alain de Cheveigné and Hideki Kawahara. Journal of the Acoustical
+ * Society of America, 111 (4), April 2002.
+ */
+
+#ifndef __YIN_H__
+#define __YIN_H__
+
+#ifdef __cplusplus
+extern "C"
+#endif
+#if 0
+} /* Fool Emacs. */
+#endif
+
+/* Win32/WinCE DLL gunk */
+#include <sphinxbase/sphinxbase_export.h>
+#include <sphinxbase/prim_type.h>
+
+/**
+ * Frame-based moving-window pitch estimator.
+ */
+typedef struct yin_s yin_t;
+
+/**
+ * Initialize moving-window pitch estimation.
+ */
+SPHINXBASE_EXPORT
+yin_t *yin_init(int frame_size, float search_threshold,
+ float search_range, int smooth_window);
+
+/**
+ * Free a moving-window pitch estimator.
+ */
+SPHINXBASE_EXPORT
+void yin_free(yin_t *pe);
+
+/**
+ * Start processing an utterance.
+ */
+SPHINXBASE_EXPORT
+void yin_start(yin_t *pe);
+
+/**
+ * Mark the end of an utterance.
+ */
+SPHINXBASE_EXPORT
+void yin_end(yin_t *pe);
+
+/**
+ * Feed a frame of data to the pitch estimator.
+ *
+ * @param pe Pitch estimator.
+ * @param frame Frame of <code>frame_size</code> (see
+ * yin_init()) samples of audio data.
+ */
+SPHINXBASE_EXPORT
+void yin_write(yin_t *pe, int16 const *frame);
+
+/**
+ * Read a raw estimated pitch value from the pitch estimator.
+ *
+ * @param pe Pitch estimator.
+ * @param out_period Output: an estimate of the period (*not* the pitch)
+ * of the signal in samples.
+ * @param out_bestdiff Output: the minimum normalized difference value
+ * associated with <code>*out_pitch</code>, in Q15
+ * format (i.e. scaled by 32768). This can be
+ * interpreted as one minus the probability of voicing.
+ * @return Non-zero if enough data was avaliable to return a pitch
+ * estimate, zero otherwise.
+ */
+SPHINXBASE_EXPORT
+int yin_read(yin_t *pe, uint16 *out_period, uint16 *out_bestdiff);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __YIN_H__ */
+
--- /dev/null
+/* include/sphinx_config.h, defaults for Win32 */
+/* sphinx_config.h: Externally visible configuration parameters for
+ * SphinxBase.
+ */
+
+/* Use ALSA library for sound I/O */
+/* #undef AD_BACKEND_ALSA */
+
+/* Use IRIX interface for sound I/O */
+/* #undef AD_BACKEND_IRIX */
+
+/* No interface for sound I/O */
+/* #undef AD_BACKEND_NONE */
+
+/* Use OSF interface for sound I/O */
+/* #undef AD_BACKEND_OSF */
+
+/* Use OSS interface for sound I/O */
+/* #define AD_BACKEND_OSS */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS_BSD */
+
+/* Use SunOS interface for sound I/O */
+/* #undef AD_BACKEND_SUNOS */
+
+/* Use WinMM interface for sound I/O */
+#undef AD_BACKEND_WIN32
+
+/* Default radix point for fixed-point */
+/* #undef DEFAULT_RADIX */
+
+/* Enable thread safety */
+#define ENABLE_THREADS
+
+/* The Thread Local Storage class */
+#define SPHINXBASE_TLS __declspec(thread)
+
+/* Use Q15 fixed-point computation */
+/* #undef FIXED16 */
+
+/* Use fixed-point computation */
+/* #undef FIXED_POINT */
+
+/* Enable matrix algebra with LAPACK */
+#define WITH_LAPACK
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Yes, we have errno.h */
+#define HAVE_ERRNO_H 1
+
+/* We don't have popen, but we do have _popen */
+/* #define HAVE_POPEN 1 */
+
+/* We do have perror */
+#define HAVE_PERROR 1
+
+/* We have sys/stat.h */
+#define HAVE_SYS_STAT_H 1
+
+/* We do not have unistd.h. */
+#define YY_NO_UNISTD_H 1
+
+/* Extension for executables */
+#define EXEEXT ".exe"
--- /dev/null
+/* include/sphinx_config.h, defaults for Win32 */
+/* sphinx_config.h: Externally visible configuration parameters for
+ * SphinxBase.
+ */
+
+/* Use ALSA library for sound I/O */
+/* #undef AD_BACKEND_ALSA */
+
+/* Use IRIX interface for sound I/O */
+/* #undef AD_BACKEND_IRIX */
+
+/* No interface for sound I/O */
+/* #undef AD_BACKEND_NONE */
+
+/* Use OSF interface for sound I/O */
+/* #undef AD_BACKEND_OSF */
+
+/* Use OSS interface for sound I/O */
+/* #define AD_BACKEND_OSS */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS_BSD */
+
+/* Use SunOS interface for sound I/O */
+/* #undef AD_BACKEND_SUNOS */
+
+/* Use WinMM interface for sound I/O */
+#undef AD_BACKEND_WIN32
+
+/* Default radix point for fixed-point */
+/* #undef DEFAULT_RADIX */
+
+/* Use Q15 fixed-point computation */
+/* #undef FIXED16 */
+
+/* Use fixed-point computation */
+/* #undef FIXED_POINT */
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
--- /dev/null
+/* Silvio Moioli: keep only one configuration file */
+
+#include "sphinx_config.h"
--- /dev/null
+/* include/sphinx_config.h, defaults for Windows CE. */
+/* sphinx_config.h: Externally visible configuration parameters for
+ * SphinxBase.
+ */
+
+/* Use ALSA library for sound I/O */
+/* #undef AD_BACKEND_ALSA */
+
+/* Use IRIX interface for sound I/O */
+/* #undef AD_BACKEND_IRIX */
+
+/* No interface for sound I/O */
+/* #undef AD_BACKEND_NONE */
+
+/* Use OSF interface for sound I/O */
+/* #undef AD_BACKEND_OSF */
+
+/* Use OSS interface for sound I/O */
+/* #define AD_BACKEND_OSS */
+
+/* Use OSS interface for sound I/O */
+/* #undef AD_BACKEND_OSS_BSD */
+
+/* Use SunOS interface for sound I/O */
+/* #undef AD_BACKEND_SUNOS */
+
+/* Use WinMM interface for sound I/O */
+#undef AD_BACKEND_WIN32
+
+/* Default radix point for fixed-point */
+/* #undef DEFAULT_RADIX */
+
+/* Use Q15 fixed-point computation */
+/* #undef FIXED16 */
+
+/* Use fixed-point computation */
+/* #define FIXED_POINT 1 */
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Extension for executables */
+#define EXEEXT ".exe"
--- /dev/null
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# 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.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; 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
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# 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:
--- /dev/null
+# Generated from ltmain.m4sh.
+
+# ltmain.sh (GNU libtool) 2.2.6b
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 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.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+# --config show all configuration variables
+# --debug enable verbose shell tracing
+# -n, --dry-run display commands without modifying any files
+# --features display basic configuration information and exit
+# --mode=MODE use operation mode MODE
+# --preserve-dup-deps don't remove duplicate dependency libraries
+# --quiet, --silent don't print informational messages
+# --tag=TAG use configuration variables from tag TAG
+# -v, --verbose print informational messages (default)
+# --version print version information
+# -h, --help print short or long help message
+#
+# MODE must be one of the following:
+#
+# clean remove files from the build directory
+# compile compile a source file into a libtool object
+# execute automatically set library path, then run a program
+# finish complete the installation of libtool libraries
+# install install libraries or executables
+# link create a library or an executable
+# uninstall remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+# host-triplet: $host
+# shell: $SHELL
+# compiler: $LTCC
+# compiler flags: $LTCFLAGS
+# linker: $LD (gnu? $with_gnu_ld)
+# $progname: (GNU libtool) 2.2.6b
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=2.2.6b
+TIMESTAMP=""
+package_revision=1.3017
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# NLS nuisances: We save the old values to restore during execute mode.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+done
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="echo"}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/bin/sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+# Generated shell functions inserted here.
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+# In the unlikely event $progname began with a '-', it would play havoc with
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+case $progname in
+ -*) progname=./$progname ;;
+esac
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=$func_dirname_result
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=:
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname${mode+: }$mode: $*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ case $my_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+ done
+ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$opt_dry_run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+ case $1 in
+ *[\\\`\"\$]*)
+ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+ *)
+ func_quote_for_eval_unquoted_result="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "X$1" | $Xsed \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$lt_user_locale
+ $my_cmd"
+ my_status=$?
+ eval "$lt_safe_locale"
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $SED -n '/^# Usage:/,/# -h/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ $ECHO
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ func_error "missing argument for $1"
+ exit_cmd=exit
+}
+
+exit_cmd=:
+
+
+
+
+
+# Check that we have a working $ECHO.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell, and then maybe $ECHO will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+# $mode is unset
+nonopt=
+execute_dlfiles=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+ $ECHO "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $ECHO "enable shared libraries"
+ else
+ $ECHO "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $ECHO "enable static libraries"
+ else
+ $ECHO "disable static libraries"
+ fi
+
+ exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+# Parse options once, thoroughly. This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
+
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
+
+ # Parse non-mode specific arguments:
+ while test "$#" -gt 0; do
+ opt="$1"
+ shift
+
+ case $opt in
+ --config) func_config ;;
+
+ --debug) preserve_args="$preserve_args $opt"
+ func_echo "enabling shell trace mode"
+ opt_debug='set -x'
+ $opt_debug
+ ;;
+
+ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ execute_dlfiles="$execute_dlfiles $1"
+ shift
+ ;;
+
+ --dry-run | -n) opt_dry_run=: ;;
+ --features) func_features ;;
+ --finish) mode="finish" ;;
+
+ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ case $1 in
+ # Valid mode arguments:
+ clean) ;;
+ compile) ;;
+ execute) ;;
+ finish) ;;
+ install) ;;
+ link) ;;
+ relink) ;;
+ uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+
+ mode="$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_duplicate_deps=: ;;
+
+ --quiet|--silent) preserve_args="$preserve_args $opt"
+ opt_silent=:
+ ;;
+
+ --verbose| -v) preserve_args="$preserve_args $opt"
+ opt_silent=false
+ ;;
+
+ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ preserve_args="$preserve_args $opt $1"
+ func_enable_tag "$1" # tagname is set here
+ shift
+ ;;
+
+ # Separate optargs to long options:
+ -dlopen=*|--mode=*|--tag=*)
+ func_opt_split "$opt"
+ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) opt_help=: ;;
+ --version) func_version ;;
+
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+
+ *) nonopt="$opt"
+ break
+ ;;
+ esac
+ done
+
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+ ;;
+ esac
+
+ # Having warned about all mis-specified options, bail out if
+ # anything was wrong.
+ $exit_cmd $EXIT_FAILURE
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+$opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_ltwrapper_scriptname_result=""
+ if func_ltwrapper_executable_p "$1"; then
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ fi
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ pie_flag="$pie_flag $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$arg"
+ lastarg="$lastarg $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ *)
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ func_quote_for_eval "$lastarg"
+ base_compile="$base_compile $func_quote_for_eval_result"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname="$func_basename_result"
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ removelist="$removelist $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ removelist="$removelist $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ compile)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+ execute)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+ finish)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+ install)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+ uninstall)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode \`$mode'"
+ ;;
+ esac
+
+ $ECHO
+ $ECHO "Try \`$progname --help' for more information about other modes."
+
+ exit $?
+}
+
+ # Now that we've collected a possible --mode arg, show help if necessary
+ $opt_help && func_mode_help
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
+ *)
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_quote_for_eval "$file"
+ args="$args $func_quote_for_eval_result"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ $ECHO "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ $ECHO "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ $ECHO
+ $ECHO "If you ever happen to want to link against installed libraries"
+ $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $ECHO "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $ECHO " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
+ $ECHO " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $ECHO " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $ECHO " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $ECHO
+
+ $ECHO "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ $ECHO "pages."
+ ;;
+ *)
+ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+}
+
+test "$mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog$func_quote_for_eval_result"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir="$func_dirname_result"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+ fi
+
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "\`$lib' has not been installed in \`$libdir'"
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_verbose "generating symbol list for \`$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_verbose "extracting global C symbols from \`$progfile'"
+ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ done
+
+ $opt_dry_run || {
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $MV "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if $GREP -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ $GREP -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+ else
+ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+/* DATA imports from DLLs on WIN32 con't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs. */"
+ lt_dlsym_const= ;;
+ *osf5*)
+ echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+ lt_dlsym_const= ;;
+ *)
+ lt_dlsym_const=const ;;
+ esac
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+$lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) symtab_cflags="$symtab_cflags $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+ $opt_debug
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
+
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $opt_debug
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename "$darwin_archive"`
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_emit_wrapper_part1 [arg=no]
+#
+# Emit the first part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part1 ()
+{
+ func_emit_wrapper_part1_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_part1_arg1=$1
+ fi
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$ECHO are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ ECHO=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$ECHO works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$ECHO will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $ECHO "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+"
+}
+# end: func_emit_wrapper_part1
+
+# func_emit_wrapper_part2 [arg=no]
+#
+# Emit the second part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part2 ()
+{
+ func_emit_wrapper_part2_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_part2_arg1=$1
+ fi
+
+ $ECHO "\
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $ECHO "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" ||
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $MKDIR \"\$progdir\"
+ else
+ $RM \"\$progdir/\$file\"
+ fi"
+
+ $ECHO "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+ exit 1
+ fi
+ fi
+
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+ fi
+ else
+ # The program doesn't exist.
+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit 1
+ fi
+fi\
+"
+}
+# end: func_emit_wrapper_part2
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_arg1=$1
+ fi
+
+ # split this up so that func_emit_cwrapperexe_src
+ # can call each part independently.
+ func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
+ func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
+}
+
+
+# func_to_host_path arg
+#
+# Convert paths to host format when used with build tools.
+# Intended for use with "native" mingw (where libtool itself
+# is running under the msys shell), or in the following cross-
+# build environments:
+# $build $host
+# mingw (msys) mingw [e.g. native]
+# cygwin mingw
+# *nix + wine mingw
+# where wine is equipped with the `winepath' executable.
+# In the native mingw case, the (msys) shell automatically
+# converts paths for any non-msys applications it launches,
+# but that facility isn't available from inside the cwrapper.
+# Similar accommodations are necessary for $host mingw and
+# $build cygwin. Calling this function does no harm for other
+# $host/$build combinations not listed above.
+#
+# ARG is the path (on $build) that should be converted to
+# the proper representation for $host. The result is stored
+# in $func_to_host_path_result.
+func_to_host_path ()
+{
+ func_to_host_path_result="$1"
+ if test -n "$1" ; then
+ case $host in
+ *mingw* )
+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+ case $build in
+ *mingw* ) # actually, msys
+ # awkward: cmd appends spaces to result
+ lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+ func_to_host_path_tmp1=`( cmd //c echo "$1" |\
+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ *cygwin* )
+ func_to_host_path_tmp1=`cygpath -w "$1"`
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ * )
+ # Unfortunately, winepath does not exit with a non-zero
+ # error code, so we are forced to check the contents of
+ # stdout. On the other hand, if the command is not
+ # found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both
+ # error code of zero AND non-empty stdout, which explains
+ # the odd construction:
+ func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ else
+ # Allow warning below.
+ func_to_host_path_result=""
+ fi
+ ;;
+ esac
+ if test -z "$func_to_host_path_result" ; then
+ func_error "Could not determine host path corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_path_result="$1"
+ fi
+ ;;
+ esac
+ fi
+}
+# end: func_to_host_path
+
+# func_to_host_pathlist arg
+#
+# Convert pathlists to host format when used with build tools.
+# See func_to_host_path(), above. This function supports the
+# following $build/$host combinations (but does no harm for
+# combinations not listed here):
+# $build $host
+# mingw (msys) mingw [e.g. native]
+# cygwin mingw
+# *nix + wine mingw
+#
+# Path separators are also converted from $build format to
+# $host format. If ARG begins or ends with a path separator
+# character, it is preserved (but converted to $host format)
+# on output.
+#
+# ARG is a pathlist (on $build) that should be converted to
+# the proper representation on $host. The result is stored
+# in $func_to_host_pathlist_result.
+func_to_host_pathlist ()
+{
+ func_to_host_pathlist_result="$1"
+ if test -n "$1" ; then
+ case $host in
+ *mingw* )
+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_to_host_pathlist_tmp2="$1"
+ # Once set for this call, this variable should not be
+ # reassigned. It is used in tha fallback case.
+ func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e 's|^:*||' -e 's|:*$||'`
+ case $build in
+ *mingw* ) # Actually, msys.
+ # Awkward: cmd appends spaces to result.
+ lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+ func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ *cygwin* )
+ func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ * )
+ # unfortunately, winepath doesn't convert pathlists
+ func_to_host_pathlist_result=""
+ func_to_host_pathlist_oldIFS=$IFS
+ IFS=:
+ for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+ IFS=$func_to_host_pathlist_oldIFS
+ if test -n "$func_to_host_pathlist_f" ; then
+ func_to_host_path "$func_to_host_pathlist_f"
+ if test -n "$func_to_host_path_result" ; then
+ if test -z "$func_to_host_pathlist_result" ; then
+ func_to_host_pathlist_result="$func_to_host_path_result"
+ else
+ func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
+ fi
+ fi
+ fi
+ IFS=:
+ done
+ IFS=$func_to_host_pathlist_oldIFS
+ ;;
+ esac
+ if test -z "$func_to_host_pathlist_result" ; then
+ func_error "Could not determine the host path(s) corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This may break if $1 contains DOS-style drive
+ # specifications. The fix is not to complicate the expression
+ # below, but for the user to provide a working wine installation
+ # with winepath so that path translation in the cross-to-mingw
+ # case works properly.
+ lt_replace_pathsep_nix_to_dos="s|:|;|g"
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+ $SED -e "$lt_replace_pathsep_nix_to_dos"`
+ fi
+ # Now, add the leading and trailing path separators back
+ case "$1" in
+ :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+ ;;
+ esac
+ case "$1" in
+ *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+}
+# end: func_to_host_pathlist
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "$SHELL $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat <<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+# define setmode _setmode
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# define HAVE_SETENV
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+#ifdef _MSC_VER
+# define S_IXUSR _S_IEXEC
+# define stat _stat
+# ifndef _INTPTR_T_DEFINED
+# define intptr_t int
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifdef __CYGWIN__
+# define FOPEN_WB "wb"
+#endif
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#undef LTWRAPPER_DEBUGPRINTF
+#if defined DEBUGWRAPPER
+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+static void
+ltwrapper_debugprintf (const char *fmt, ...)
+{
+ va_list args;
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+}
+#else
+# define LTWRAPPER_DEBUGPRINTF(args)
+#endif
+
+const char *program_name = NULL;
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_opt_process_env_set (const char *arg);
+void lt_opt_process_env_prepend (const char *arg);
+void lt_opt_process_env_append (const char *arg);
+int lt_split_name_value (const char *arg, char** name, char** value);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+
+static const char *script_text_part1 =
+EOF
+
+ func_emit_wrapper_part1 yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ "/' -e 's/$/\\n"/'
+ echo ";"
+ cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+ func_emit_wrapper_part2 yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ "/' -e 's/$/\\n"/'
+ echo ";"
+
+ cat <<EOF
+const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_pathlist "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_pathlist "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test "$fast_install" = yes; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
+
+static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set";
+ /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend";
+ /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append";
+ /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ intptr_t rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
+ LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+
+ /* very simple arg parsing; don't want to rely on getopt */
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+ {
+EOF
+ case "$host" in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ printf ("%s", script_text_part1);
+ printf ("%s", script_text_part2);
+ return 0;
+ }
+ }
+
+ newargz = XMALLOC (char *, argc + 1);
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal ("Couldn't find %s", argv[0]);
+ LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+ tmp_pathspec));
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+ actual_cwrapper_path));
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+ target_name));
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+ {
+ if (argv[i][env_set_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_set_opt_len + 1;
+ lt_opt_process_env_set (p);
+ }
+ else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_set (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_set_opt);
+ continue;
+ }
+ if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+ {
+ if (argv[i][env_prepend_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_prepend_opt_len + 1;
+ lt_opt_process_env_prepend (p);
+ }
+ else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_prepend_opt);
+ continue;
+ }
+ if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+ {
+ if (argv[i][env_append_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_append_opt_len + 1;
+ lt_opt_process_env_append (p);
+ }
+ else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_append (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_append_opt);
+ continue;
+ }
+ if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal ("Unrecognized option in %s namespace: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+ LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+ for (i = 0; i < newargc; i++)
+ {
+ LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+ string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable (const char *path)
+{
+ struct stat st;
+
+ LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
+ path ? (*path ? path : "EMPTY!") : "NULL!"));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
+ path ? (*path ? path : "EMPTY!") : "NULL!"));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+ int has_slash = 0;
+ const char *p;
+ const char *p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char *concat_name;
+
+ LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
+ wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char *path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char *q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR (*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name =
+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+ tmp_pathspec));
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ char *errstr = strerror (errno);
+ lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal ("Could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert (str != NULL);
+ assert (pat != NULL);
+
+ len = strlen (str);
+ patlen = strlen (pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp (str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ int len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ int orig_value_len = strlen (orig_value);
+ int add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+int
+lt_split_name_value (const char *arg, char** name, char** value)
+{
+ const char *p;
+ int len;
+ if (!arg || !*arg)
+ return 1;
+
+ p = strchr (arg, (int)'=');
+
+ if (!p)
+ return 1;
+
+ *value = xstrdup (++p);
+
+ len = strlen (arg) - strlen (*value);
+ *name = XMALLOC (char, len);
+ strncpy (*name, arg, len-1);
+ (*name)[len - 1] = '\0';
+
+ return 0;
+}
+
+void
+lt_opt_process_env_set (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
+ }
+
+ lt_setenv (name, value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_opt_process_env_prepend (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+ char *new_value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+ }
+
+ new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_opt_process_env_append (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+ char *new_value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+ }
+
+ new_value = lt_extend_str (getenv (name), value, 1);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ int len = strlen (new_value);
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[len-1] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append finalize_command " @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ weak_libs="$weak_libs $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname '-L' '' "$arg"
+ dir=$func_stripname_result
+ if test -z "$dir"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+ linker_flags="$linker_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if $opt_duplicate_deps ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+
+ case $linkmode in
+ lib)
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+
+ for pass in $passes; do
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ case $lib in
+ *.la) func_source "$lib" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) deplibs="$deplibs $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ dir=$func_stripname_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $ECHO
+ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because the file extensions .$libext of this argument makes me believe"
+ $ECHO "*** that it is just a static archive that I should not use here."
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+ *) temp_rpath="$temp_rpath$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ $ECHO
+ if test "$linkmode" = prog; then
+ $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $ECHO "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw* | *cegcc*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ if test "X$dlopenmodule" != "X$lib"; then
+ $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $ECHO
+ $ECHO "*** And there doesn't seem to be a static archive available"
+ $ECHO "*** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ elif test -n "$old_library"; then
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes &&
+ test "$hardcode_minus_L" != yes &&
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $ECHO
+ $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $ECHO "*** But as you try to build a module library, libtool will still create "
+ $ECHO "*** a static module, that should work as long as the dlopening application"
+ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $ECHO
+ $ECHO "*** However, this would only work if libtool was able to extract symbol"
+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $ECHO "*** not find such a program. So, this module is probably useless."
+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_dirname "$deplib" "" "."
+ dir="$func_dirname_result"
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test "$pass" = link; then
+ if test "$linkmode" = "prog"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
+ IFS="$save_ifs"
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_minor"
+ lt_irix_increment=no
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ irix | nonstopux)
+ if test "X$lt_irix_increment" = "Xno"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ libobjs="$libobjs $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext | *.gcno)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
+ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+ #done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which I believe you do not have"
+ $ECHO "*** because a test_compile did reveal that the linker did not use it for"
+ $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ ;;
+ *)
+ newdeplibs="$newdeplibs $i"
+ ;;
+ esac
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because a test_compile did reveal that the linker did not use this one"
+ $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
+ $ECHO "*** make it link in! You will probably need to install it or some"
+ $ECHO "*** library that it depends on before this library will be fully"
+ $ECHO "*** functional. Installing it before continuing would be even better."
+ fi
+ ;;
+ *)
+ newdeplibs="$newdeplibs $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
+ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+ done
+ fi
+ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
+ $GREP . >/dev/null; then
+ $ECHO
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $ECHO "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library with the System framework
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $ECHO
+ $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
+ $ECHO "*** a static module, that should work as long as the dlopening"
+ $ECHO "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $ECHO
+ $ECHO "*** However, this would only work if libtool was able to extract symbol"
+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $ECHO "*** not find such a program. So, this module is probably useless."
+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $ECHO "*** The inter-library dependencies that have been dropped here will be"
+ $ECHO "*** automatically added whenever a program is linked with this library"
+ $ECHO "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $ECHO
+ $ECHO "*** Since this library must not contain undefined symbols,"
+ $ECHO "*** because either the platform does not support them or"
+ $ECHO "*** it was explicitly requested with -no-undefined,"
+ $ECHO "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ delfiles="$delfiles $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ func_len " $cmd"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ $ECHO 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ $ECHO "$obj" >> $output
+ done
+ $ECHO ')' >> $output
+ delfiles="$delfiles $output"
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ $ECHO "$obj" >> $output
+ done
+ delfiles="$delfiles $output"
+ output=$firstobj\"$file_list_spec$output\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test "X$objlist" = X ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append objlist " $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+ delfiles="$delfiles $output"
+
+ else
+ output=
+ fi
+
+ if ${skipped_export-false}; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+ test -n "$save_libobjs" &&
+ func_verbose "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ if ${skipped_export-false}; then
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
+
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=yes
+ case $host in
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *cegcc)
+ # Disable wrappers for cegcc, we are cross compiling anyway.
+ wrappers_required=no
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $ECHO for shipping.
+ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host" ; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ oldobjs="$oldobjs $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $ECHO "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ oldobjs=
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_verbose "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ newdlfiles="$newdlfiles $libdir/$name"
+ ;;
+ *) newdlfiles="$newdlfiles $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $ECHO >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+{ test "$mode" = link || test "$mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ RM="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) RM="$RM $arg"; rmforce=yes ;;
+ -*) RM="$RM $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if { test -L "$file"; } >/dev/null 2>&1 ||
+ { test -h "$file"; } >/dev/null 2>&1 ||
+ test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+test -z "$mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
--- /dev/null
+# iconv.m4 serial AM4 (gettext-0.11.3)
+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ am_cv_func_iconv=yes)
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes)
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST(LIBICONV)
+ AC_SUBST(LTLIBICONV)
+])
+
+AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL(am_cv_proto_iconv, [
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([$]{ac_t:-
+ }[$]am_cv_proto_iconv)
+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+ [Define as const if the declaration of iconv() needs const.])
+ fi
+])
--- /dev/null
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by GCC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ [re_direlt='/[^/][^/]*/\.\./']
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
--- /dev/null
+# lib-link.m4 serial 9 (gettext-0.16)
+dnl Copyright (C) 2001-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ(2.50)
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB[]NAME"
+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
+dnl hardcode_direct, hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE(rpath,
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib$1-prefix],
+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" \
+ && { test -f "$additional_libdir/lib$name.$shlibext" \
+ || { test "$shlibext" = dll \
+ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then
+ found_dir="$additional_libdir"
+ if test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_so="$additional_libdir/lib$name.$shlibext"
+ else
+ found_so="$additional_libdir/lib$name.dll.a"
+ fi
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" \
+ && { test -f "$dir/lib$name.$shlibext" \
+ || { test "$shlibext" = dll \
+ && test -f "$dir/lib$name.dll.a"; }; }; then
+ found_dir="$dir"
+ if test -f "$dir/lib$name.$shlibext"; then
+ found_so="$dir/lib$name.$shlibext"
+ else
+ found_so="$dir/lib$name.dll.a"
+ fi
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+ AC_REQUIRE([AC_LIB_RPATH])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ $1=
+ if test "$enable_rpath" != no; then
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode directories into the resulting
+ dnl binary.
+ rpathdirs=
+ next=
+ for opt in $2; do
+ if test -n "$next"; then
+ dir="$next"
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next=
+ else
+ case $opt in
+ -L) next=yes ;;
+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next= ;;
+ *) next= ;;
+ esac
+ fi
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n ""$3""; then
+ dnl libtool is used for linking. Use -R options.
+ for dir in $rpathdirs; do
+ $1="${$1}${$1:+ }-R$dir"
+ done
+ else
+ dnl The linker is used for linking directly.
+ if test -n "$hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user
+ dnl must pass all path elements in one option.
+ alldirs=
+ for dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="${$1}${$1:+ }$flag"
+ done
+ fi
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST([$1])
+])
--- /dev/null
+# lib-prefix.m4 serial 5 (gettext-0.15)
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
+dnl the basename of the libdir, either "lib" or "lib64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib and lib64. The current
+ dnl practice is that on a system supporting 32-bit and 64-bit instruction
+ dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
+ dnl libraries go under $prefix/lib. We determine the compiler's default
+ dnl mode by looking at the compiler's library search path. If at least
+ dnl of its elements ends in /lib64 or points to a directory whose absolute
+ dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
+ dnl default, namely "lib".
+ acl_libdirstem=lib
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+])
--- /dev/null
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+ lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+ ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+ lt_cl_success=:
+ test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+ exec AS_MESSAGE_LOG_FD>/dev/null
+ $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+ exec AS_MESSAGE_LOG_FD>>config.log
+ $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ _LT_PROG_XSI_SHELLFNS
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<_LT_EOF
+[$]*
+_LT_EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+ then
+ break
+ fi
+ done
+ fi
+
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+ else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$ECHO" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ ECHO='print -r'
+ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ ECHO='printf %s\n'
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ ECHO=echo
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+ [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Add ABI-specific directories to the system library path.
+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[List of archive names. First name is the real one, the rest are links.
+ The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC*)
+ # IBM XL 8.0 on PPC
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(int foo(void) {},
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ )
+ LDFLAGS="$save_LDFLAGS"
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+ [[If ld is used when linking, flag to hardcode $libdir into a binary
+ during linking. This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+ [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report which library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 will use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ xl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=echo
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" ||
+ test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${FC-"f95"}
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$[1]+=\$[2]"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+ ;;
+ esac
+])
--- /dev/null
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
--- /dev/null
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
--- /dev/null
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3017 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6b'
+macro_revision='1.3017'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
--- /dev/null
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
--- /dev/null
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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 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.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
--- /dev/null
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Originally by Fran,cois 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., 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.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- /dev/null
+* Fri Aug 31 21:47:09 UTC 2012 - jimmy.huang@intel.com
+- Intial import from upstream.
--- /dev/null
+Name: sphinxbase
+Version: 0.7
+Release: 1
+Group: System/Libraries
+License: BSD
+URL: http://www.pocketsphinx.org/
+Summary: Speech Recognition Engine
+Source: http://sourceforge.net/projects/cmusphinx/files/%{name}/%{version}/%{name}-%{version}.tar.gz
+BuildRequires: bison
+BuildRequires: pkgconfig(python)
+BuildRequires: python-setuptools
+
+%description
+Sphinxbase is a common library for CMU Sphinx voice recognition products.
+This package does not provide voice recognition by itself.
+
+%package devel
+Summary: Header and other development files for sphinxbase
+Group: Development/Libraries
+Requires: %{name}-libs = %{version}-%{release}
+
+%description devel
+Header files and other development files for sphinxbase.
+
+%package libs
+Summary: Libraries for sphinxbase
+Group: Development/Libraries
+
+%description libs
+The libraries for sphinxbase.
+
+%package python
+Summary: Python interface to sphinxbase
+Group: Development/Libraries
+Requires: %{name}-libs = %{version}-%{release}
+
+%description python
+Python interface to sphinxbase.
+
+%prep
+%setup -q
+
+%build
+%configure --disable-static --disable-rpath
+
+make %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT%{python_sitearch}
+make install DESTDIR=$RPM_BUILD_ROOT
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+
+# Install the man pages
+mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
+cp -p doc/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post libs -p /sbin/ldconfig
+
+%postun libs -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%{_bindir}/*
+%{_mandir}/man1/*
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/sphinxbase
+%{_libdir}/libsphinxad.so
+%{_libdir}/libsphinxbase.so
+%{_libdir}/pkgconfig/sphinxbase.pc
+
+%files libs
+%defattr(-,root,root,-)
+%doc AUTHORS ChangeLog COPYING NEWS README
+%{_libdir}/libsphinxad.so.*
+%{_libdir}/libsphinxbase.so.*
+
+%files python
+%defattr(-,root,root,-)
+%{python_sitearch}/*
+%changelog
--- /dev/null
+EXTRA_DIST = sphinxbase.c \
+ sphinxbase.pyx \
+ setup_win32.py \
+ sb_test.py \
+ hufftest2.py
+
+pkginclude_HEADERS = sphinxbase.pxd
+
+if BUILD_PYTHON
+# Setuptools isn't really compatible with distutils, unfortunately
+SETUPTOOLS_CRAP = `python -c 'import setuptools' 2>/dev/null \
+ && echo --single-version-externally-managed --record filelist.txt`
+
+all-local: pymod-build-stamp
+
+install-exec-local: pymod-build-stamp
+ $(PYTHON) setup.py install --prefix $(DESTDIR)$(prefix) $(SETUPTOOLS_CRAP)
+
+uninstall-local:
+ $(PYTHON) setup.py bogus_uninstall --prefix $(DESTDIR)$(prefix)
+
+clean-local:
+ $(PYTHON) setup.py clean --all
+# This is dumb, but distutils is completely incapable of VPATH building
+ test -z "$(VPATH)" || $(RM) sphinxbase.c
+ $(RM) -r *.egg-info
+ $(RM) pymod-build-stamp filelist.txt
+
+pymod-build-stamp: $(srcdir)/sphinxbase.c
+# This is dumb, but distutils is completely incapable of VPATH building
+ test -z "$(VPATH)" || cp "$(srcdir)/sphinxbase.c" sphinxbase.c
+ $(PYTHON) setup.py build
+ touch $@
+endif
+
+if BUILD_CYTHON
+$(srcdir)/sphinxbase.c: $(srcdir)/sphinxbase.pyx $(srcdir)/sphinxbase.pxd
+ cython -o $@ $<
+endif
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = python
+DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/setup.py.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES = setup.py
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pkgincludedir)"
+pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(pkginclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = sphinxbase.c \
+ sphinxbase.pyx \
+ setup_win32.py \
+ sb_test.py \
+ hufftest2.py
+
+pkginclude_HEADERS = sphinxbase.pxd
+
+# Setuptools isn't really compatible with distutils, unfortunately
+@BUILD_PYTHON_TRUE@SETUPTOOLS_CRAP = `python -c 'import setuptools' 2>/dev/null \
+@BUILD_PYTHON_TRUE@ && echo --single-version-externally-managed --record filelist.txt`
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu python/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu python/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+@BUILD_PYTHON_FALSE@all-local:
+all-am: Makefile $(HEADERS) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+@BUILD_PYTHON_FALSE@uninstall-local:
+@BUILD_PYTHON_FALSE@install-exec-local:
+@BUILD_PYTHON_FALSE@clean-local:
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-exec-local
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+ clean-generic clean-libtool clean-local ctags distclean \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-exec-local install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-pkgincludeHEADERS \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-local uninstall-pkgincludeHEADERS
+
+
+@BUILD_PYTHON_TRUE@all-local: pymod-build-stamp
+
+@BUILD_PYTHON_TRUE@install-exec-local: pymod-build-stamp
+@BUILD_PYTHON_TRUE@ $(PYTHON) setup.py install --prefix $(DESTDIR)$(prefix) $(SETUPTOOLS_CRAP)
+
+@BUILD_PYTHON_TRUE@uninstall-local:
+@BUILD_PYTHON_TRUE@ $(PYTHON) setup.py bogus_uninstall --prefix $(DESTDIR)$(prefix)
+
+@BUILD_PYTHON_TRUE@clean-local:
+@BUILD_PYTHON_TRUE@ $(PYTHON) setup.py clean --all
+# This is dumb, but distutils is completely incapable of VPATH building
+@BUILD_PYTHON_TRUE@ test -z "$(VPATH)" || $(RM) sphinxbase.c
+@BUILD_PYTHON_TRUE@ $(RM) -r *.egg-info
+@BUILD_PYTHON_TRUE@ $(RM) pymod-build-stamp filelist.txt
+
+@BUILD_PYTHON_TRUE@pymod-build-stamp: $(srcdir)/sphinxbase.c
+# This is dumb, but distutils is completely incapable of VPATH building
+@BUILD_PYTHON_TRUE@ test -z "$(VPATH)" || cp "$(srcdir)/sphinxbase.c" sphinxbase.c
+@BUILD_PYTHON_TRUE@ $(PYTHON) setup.py build
+@BUILD_PYTHON_TRUE@ touch $@
+
+@BUILD_CYTHON_TRUE@$(srcdir)/sphinxbase.c: $(srcdir)/sphinxbase.pyx $(srcdir)/sphinxbase.pxd
+@BUILD_CYTHON_TRUE@ cython -o $@ $<
+# 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:
--- /dev/null
+#!/usr/bin/env python
+
+import sphinxbase
+import sys
+
+hc = sphinxbase.HuffCode(((1, 42), (2, 4), (3, 5), (4, 6), (5, 225), (6, 15001), (7, 3), (8, 2), (9, 87), (10, 1003)))
+hc.dump(sys.stdout)
+data, bits = hc.encode((1,2,3,4,5))
+dstr = "".join([("%02x" % ord(b)) for b in data])
+print "encoding", (1,2,3,4,5), "=>", (dstr, bits)
+print "decoded to", hc.decode(data)
--- /dev/null
+#!/usr/bin/env python
+
+import sphinxbase
+import sys
+
+lm = sphinxbase.NGramModel("../test/unit/test_ngram/100.arpa.DMP")
+for ng in lm.mgrams(0):
+ print ng.log_prob, ng.log_bowt
+lm.write("100.arpa.DMP")
+lm.casefold(sphinxbase.UPPER)
+lm.write("100.arpa")
+
+hc = sphinxbase.HuffCode((("foo", 42), ("bar", 4), ("baz", 5), ("quux", 6), ("argh", 225), ("hurf", 15001), ("burf", 3), ("blatz", 2), ("unf", 87), ("woof", 1003)))
+hc.dump(sys.stdout)
+data, bits = hc.encode(("hurf", "burf", "blatz", "unf", "woof"))
+dstr = "".join([("%02x" % ord(b)) for b in data])
+print "encoding", ("hurf", "burf", "blatz", "unf", "woof"), "=>", (dstr, bits)
+print "decoded to", hc.decode(data)
+
+hc.write("foo.huff")
+hc = sphinxbase.HuffCode(infile="foo.huff")
+data, bits = hc.encode(("hurf", "burf", "blatz", "unf", "woof"))
+dstr = "".join([("%02x" % ord(b)) for b in data])
+print "encoding", ("hurf", "burf", "blatz", "unf", "woof"), "=>", (dstr, bits)
+print "decoded to", hc.decode(data)
+
+hc.attach("foo.bin", "wb")
+hc.encode_to_file(("hurf", "burf", "blatz", "unf", "woof"))
+hc.encode_to_file(("burf", "blatz", "woof", "unf", "woof"))
+hc.detach()
+
+hc.attach("foo.bin", "rb")
+syms = []
+while True:
+ sym = hc.decode_from_file()
+ if sym == None:
+ break
+ syms.append(sym)
+print "decoded", syms
+hc.detach()
--- /dev/null
+try:
+ from setuptools import setup, Extension
+except:
+ from distutils.core import setup, Extension
+
+import distutils.command.install
+import os
+import sys
+
+class bogus_uninstall(distutils.command.install.install):
+ """
+ Slightly bogus uninstall, just here to satisfy automake's make
+ distcheck. Do NOT actually use this to uninstall the module!
+ """
+ def run(self):
+ # I believe the word 'bogus' is operative here. When we run
+ # get_outputs() it will create subcommands, which will try to
+ # create the original 'install' object, which does not exist
+ # at this point. We need to make sure that the --prefix
+ # argument gets propagated to said object. This is not the
+ # right way to do that, but it works, for now.
+ install = self.distribution.get_command_obj('install')
+ install.prefix = self.prefix
+ install.ensure_finalized()
+ dirs = {}
+ for f in self.get_outputs():
+ dirs[os.path.dirname(f)] = 1
+ if os.path.isdir(f):
+ dirs[f] = 1
+ continue
+ print "Trying to remove file", f
+ try:
+ os.unlink(f)
+ except:
+ pass
+ # Gently try to remove any empty directories.
+ # This is really not guaranteed to work!!!
+ for d in dirs:
+ while d != self.prefix:
+ print "Trying to remove dir", d
+ try:
+ if d.endswith(".egg-info"):
+ files=[os.path.join(d,f) for f in os.listdir(d)]
+ print "Trying to remove:", " ".join(files)
+ for f in files: os.unlink(f)
+ os.rmdir(d)
+ except:
+ pass
+ d = os.path.dirname(d)
+
+libraries = ['sphinxbase']
+if sys.platform == "cygwin":
+ libraries.append("iconv")
+
+setup(name = 'SphinxBase',
+ version = '@VERSION@',
+ author = 'David Huggins-Daines',
+ author_email = 'dhuggins@cs.cmu.edu',
+ description = 'Python interface to CMU Sphinx base libraries',
+ license = 'BSD',
+ url = 'http://cmusphinx.org',
+ ext_modules = [
+ Extension('sphinxbase',
+ sources=['sphinxbase.c'],
+ libraries=libraries,
+ include_dirs=['@top_builddir@/include',
+ '@top_srcdir@/include'],
+ library_dirs=['@top_builddir@/src/libsphinxbase/.libs'])
+ ],
+ cmdclass = {'bogus_uninstall' : bogus_uninstall}
+ )
--- /dev/null
+try:
+ from setuptools import setup, Extension
+except:
+ from distutils.core import setup, Extension
+
+import os
+
+setup(name = 'SphinxBase',
+ version = '0.6',
+ author = 'David Huggins-Daines',
+ author_email = 'dhuggins@cs.cmu.edu',
+ description = 'Python interface to CMU Sphinx base libraries',
+ license = 'BSD',
+ url = 'http://cmusphinx.org',
+ ext_modules = [
+ Extension('sphinxbase',
+ sources=['sphinxbase.c'],
+ libraries=['sphinxbase'],
+ define_macros = [('WIN32', '1')],
+ include_dirs=['../include',
+ '../include/win32'],
+ library_dirs=['../lib/debug'])
+ ],
+ )
--- /dev/null
+/* Generated by Cython 0.12.1 on Mon May 16 07:44:10 2011 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#include "structmember.h"
+#ifndef Py_PYTHON_H
+ #error Python headers needed to compile C extensions, please install development version of Python.
+#else
+
+#ifndef PY_LONG_LONG
+ #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef DL_EXPORT
+ #define DL_EXPORT(t) t
+#endif
+#if PY_VERSION_HEX < 0x02040000
+ #define METH_COEXIST 0
+ #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
+ #define PyDict_Contains(d,o) PySequence_Contains(d,o)
+#endif
+
+#if PY_VERSION_HEX < 0x02050000
+ typedef int Py_ssize_t;
+ #define PY_SSIZE_T_MAX INT_MAX
+ #define PY_SSIZE_T_MIN INT_MIN
+ #define PY_FORMAT_SIZE_T ""
+ #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+ #define PyInt_AsSsize_t(o) PyInt_AsLong(o)
+ #define PyNumber_Index(o) PyNumber_Int(o)
+ #define PyIndex_Check(o) PyNumber_Check(o)
+ #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+#endif
+
+#if PY_VERSION_HEX < 0x02060000
+ #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+ #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
+ #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size)
+ #define PyVarObject_HEAD_INIT(type, size) \
+ PyObject_HEAD_INIT(type) size,
+ #define PyType_Modified(t)
+
+ typedef struct {
+ void *buf;
+ PyObject *obj;
+ Py_ssize_t len;
+ Py_ssize_t itemsize;
+ int readonly;
+ int ndim;
+ char *format;
+ Py_ssize_t *shape;
+ Py_ssize_t *strides;
+ Py_ssize_t *suboffsets;
+ void *internal;
+ } Py_buffer;
+
+ #define PyBUF_SIMPLE 0
+ #define PyBUF_WRITABLE 0x0001
+ #define PyBUF_FORMAT 0x0004
+ #define PyBUF_ND 0x0008
+ #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+ #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+ #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+ #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+ #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+
+#endif
+
+#if PY_MAJOR_VERSION < 3
+ #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+#else
+ #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+ #define Py_TPFLAGS_CHECKTYPES 0
+ #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+ #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+ #define PyBaseString_Type PyUnicode_Type
+ #define PyString_Type PyUnicode_Type
+ #define PyString_CheckExact PyUnicode_CheckExact
+#else
+ #define PyBytes_Type PyString_Type
+ #define PyBytes_CheckExact PyString_CheckExact
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+ #define PyInt_Type PyLong_Type
+ #define PyInt_Check(op) PyLong_Check(op)
+ #define PyInt_CheckExact(op) PyLong_CheckExact(op)
+ #define PyInt_FromString PyLong_FromString
+ #define PyInt_FromUnicode PyLong_FromUnicode
+ #define PyInt_FromLong PyLong_FromLong
+ #define PyInt_FromSize_t PyLong_FromSize_t
+ #define PyInt_FromSsize_t PyLong_FromSsize_t
+ #define PyInt_AsLong PyLong_AsLong
+ #define PyInt_AS_LONG PyLong_AS_LONG
+ #define PyInt_AsSsize_t PyLong_AsSsize_t
+ #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
+ #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+ #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
+ #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
+#else
+ #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
+ #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
+
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+ #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
+#endif
+
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+ #ifndef __stdcall
+ #define __stdcall
+ #endif
+ #ifndef __cdecl
+ #define __cdecl
+ #endif
+ #ifndef __fastcall
+ #define __fastcall
+ #endif
+#else
+ #define _USE_MATH_DEFINES
+#endif
+
+#if PY_VERSION_HEX < 0x02050000
+ #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n)))
+ #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+ #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n)))
+#else
+ #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n))
+ #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+ #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n))
+#endif
+
+#if PY_VERSION_HEX < 0x02050000
+ #define __Pyx_NAMESTR(n) ((char *)(n))
+ #define __Pyx_DOCSTR(n) ((char *)(n))
+#else
+ #define __Pyx_NAMESTR(n) (n)
+ #define __Pyx_DOCSTR(n) (n)
+#endif
+#ifdef __cplusplus
+#define __PYX_EXTERN_C extern "C"
+#else
+#define __PYX_EXTERN_C extern
+#endif
+#include <math.h>
+#define __PYX_HAVE_API__sphinxbase
+#include "sphinxbase/logmath.h"
+#include "sphinxbase/cmd_ln.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/fsg_model.h"
+#include "sphinxbase/ngram_model.h"
+#include "sphinxbase/huff_code.h"
+
+#ifndef CYTHON_INLINE
+ #if defined(__GNUC__)
+ #define CYTHON_INLINE __inline__
+ #elif defined(_MSC_VER)
+ #define CYTHON_INLINE __inline
+ #else
+ #define CYTHON_INLINE
+ #endif
+#endif
+
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+
+/* Type Conversion Predeclarations */
+
+#if PY_MAJOR_VERSION < 3
+#define __Pyx_PyBytes_FromString PyString_FromString
+#define __Pyx_PyBytes_FromStringAndSize PyString_FromStringAndSize
+#define __Pyx_PyBytes_AsString PyString_AsString
+#else
+#define __Pyx_PyBytes_FromString PyBytes_FromString
+#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
+#define __Pyx_PyBytes_AsString PyBytes_AsString
+#endif
+
+#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s) ((unsigned char*) __Pyx_PyBytes_AsString(s))
+
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+
+#if !defined(T_PYSSIZET)
+#if PY_VERSION_HEX < 0x02050000
+#define T_PYSSIZET T_INT
+#elif !defined(T_LONGLONG)
+#define T_PYSSIZET \
+ ((sizeof(Py_ssize_t) == sizeof(int)) ? T_INT : \
+ ((sizeof(Py_ssize_t) == sizeof(long)) ? T_LONG : -1))
+#else
+#define T_PYSSIZET \
+ ((sizeof(Py_ssize_t) == sizeof(int)) ? T_INT : \
+ ((sizeof(Py_ssize_t) == sizeof(long)) ? T_LONG : \
+ ((sizeof(Py_ssize_t) == sizeof(PY_LONG_LONG)) ? T_LONGLONG : -1)))
+#endif
+#endif
+
+
+#if !defined(T_ULONGLONG)
+#define __Pyx_T_UNSIGNED_INT(x) \
+ ((sizeof(x) == sizeof(unsigned char)) ? T_UBYTE : \
+ ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
+ ((sizeof(x) == sizeof(unsigned int)) ? T_UINT : \
+ ((sizeof(x) == sizeof(unsigned long)) ? T_ULONG : -1))))
+#else
+#define __Pyx_T_UNSIGNED_INT(x) \
+ ((sizeof(x) == sizeof(unsigned char)) ? T_UBYTE : \
+ ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
+ ((sizeof(x) == sizeof(unsigned int)) ? T_UINT : \
+ ((sizeof(x) == sizeof(unsigned long)) ? T_ULONG : \
+ ((sizeof(x) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))))
+#endif
+#if !defined(T_LONGLONG)
+#define __Pyx_T_SIGNED_INT(x) \
+ ((sizeof(x) == sizeof(char)) ? T_BYTE : \
+ ((sizeof(x) == sizeof(short)) ? T_SHORT : \
+ ((sizeof(x) == sizeof(int)) ? T_INT : \
+ ((sizeof(x) == sizeof(long)) ? T_LONG : -1))))
+#else
+#define __Pyx_T_SIGNED_INT(x) \
+ ((sizeof(x) == sizeof(char)) ? T_BYTE : \
+ ((sizeof(x) == sizeof(short)) ? T_SHORT : \
+ ((sizeof(x) == sizeof(int)) ? T_INT : \
+ ((sizeof(x) == sizeof(long)) ? T_LONG : \
+ ((sizeof(x) == sizeof(PY_LONG_LONG)) ? T_LONGLONG : -1)))))
+#endif
+
+#define __Pyx_T_FLOATING(x) \
+ ((sizeof(x) == sizeof(float)) ? T_FLOAT : \
+ ((sizeof(x) == sizeof(double)) ? T_DOUBLE : -1))
+
+#if !defined(T_SIZET)
+#if !defined(T_ULONGLONG)
+#define T_SIZET \
+ ((sizeof(size_t) == sizeof(unsigned int)) ? T_UINT : \
+ ((sizeof(size_t) == sizeof(unsigned long)) ? T_ULONG : -1))
+#else
+#define T_SIZET \
+ ((sizeof(size_t) == sizeof(unsigned int)) ? T_UINT : \
+ ((sizeof(size_t) == sizeof(unsigned long)) ? T_ULONG : \
+ ((sizeof(size_t) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))
+#endif
+#endif
+
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+/* Test for GCC > 2.95 */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#else /* __GNUC__ > 2 ... */
+#define likely(x) (x)
+#define unlikely(x) (x)
+#endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+#define likely(x) (x)
+#define unlikely(x) (x)
+#endif /* __GNUC__ */
+
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+static const char **__pyx_f;
+
+
+typedef float __pyx_t_10sphinxbase_float32;
+
+typedef int __pyx_t_10sphinxbase_int32;
+
+typedef double __pyx_t_10sphinxbase_float64;
+
+/* Type declarations */
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pxd":149
+ * cdef logmath_t *lmath
+ *
+ * cdef class NGramIter: # <<<<<<<<<<<<<<
+ * cdef NGramModel lm
+ * cdef ngram_iter_t *itor
+ */
+
+struct __pyx_obj_10sphinxbase_NGramIter {
+ PyObject_HEAD
+ struct __pyx_vtabstruct_10sphinxbase_NGramIter *__pyx_vtab;
+ struct __pyx_obj_10sphinxbase_NGramModel *lm;
+ ngram_iter_t *itor;
+ int first_item;
+ int m;
+ float log_prob;
+ float log_bowt;
+ PyObject *words;
+};
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pxd":159
+ * cdef set_iter(NGramIter self, ngram_iter_t *itor)
+ *
+ * cdef class HuffCode: # <<<<<<<<<<<<<<
+ * cdef huff_code_t *hc
+ * cdef object fh
+ */
+
+struct __pyx_obj_10sphinxbase_HuffCode {
+ PyObject_HEAD
+ huff_code_t *hc;
+ PyObject *fh;
+};
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pxd":138
+ *
+ * # Extension classes
+ * cdef class NGramModel: # <<<<<<<<<<<<<<
+ * cdef ngram_model_t *lm
+ * cdef logmath_t *lmath
+ */
+
+struct __pyx_obj_10sphinxbase_NGramModel {
+ PyObject_HEAD
+ struct __pyx_vtabstruct_10sphinxbase_NGramModel *__pyx_vtab;
+ ngram_model_t *lm;
+ logmath_t *lmath;
+ float lw;
+ float wip;
+ float uw;
+};
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pxd":146
+ * cdef set_lmath(NGramModel self, logmath_t *lmath)
+ *
+ * cdef class LogMath: # <<<<<<<<<<<<<<
+ * cdef logmath_t *lmath
+ *
+ */
+
+struct __pyx_obj_10sphinxbase_LogMath {
+ PyObject_HEAD
+ logmath_t *lmath;
+};
+
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":390
+ * raise ValueError, "Write %s to file failed" % file_name
+ *
+ * cdef class NGramIter: # <<<<<<<<<<<<<<
+ * """
+ * N-Gram language model iterator class.
+ */
+
+struct __pyx_vtabstruct_10sphinxbase_NGramIter {
+ PyObject *(*set_iter)(struct __pyx_obj_10sphinxbase_NGramIter *, ngram_iter_t *);
+};
+static struct __pyx_vtabstruct_10sphinxbase_NGramIter *__pyx_vtabptr_10sphinxbase_NGramIter;
+
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":128
+ * LOWER = NGRAM_LOWER
+ *
+ * cdef class NGramModel: # <<<<<<<<<<<<<<
+ * """
+ * N-Gram language model class.
+ */
+
+struct __pyx_vtabstruct_10sphinxbase_NGramModel {
+ PyObject *(*set_lm)(struct __pyx_obj_10sphinxbase_NGramModel *, ngram_model_t *);
+ PyObject *(*set_lmath)(struct __pyx_obj_10sphinxbase_NGramModel *, logmath_t *);
+};
+static struct __pyx_vtabstruct_10sphinxbase_NGramModel *__pyx_vtabptr_10sphinxbase_NGramModel;
+
+#ifndef CYTHON_REFNANNY
+ #define CYTHON_REFNANNY 0
+#endif
+
+#if CYTHON_REFNANNY
+ typedef struct {
+ void (*INCREF)(void*, PyObject*, int);
+ void (*DECREF)(void*, PyObject*, int);
+ void (*GOTREF)(void*, PyObject*, int);
+ void (*GIVEREF)(void*, PyObject*, int);
+ void* (*SetupContext)(const char*, int, const char*);
+ void (*FinishContext)(void**);
+ } __Pyx_RefNannyAPIStruct;
+ static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+ static __Pyx_RefNannyAPIStruct * __Pyx_RefNannyImportAPI(const char *modname) {
+ PyObject *m = NULL, *p = NULL;
+ void *r = NULL;
+ m = PyImport_ImportModule((char *)modname);
+ if (!m) goto end;
+ p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ if (!p) goto end;
+ r = PyLong_AsVoidPtr(p);
+ end:
+ Py_XDECREF(p);
+ Py_XDECREF(m);
+ return (__Pyx_RefNannyAPIStruct *)r;
+ }
+ #define __Pyx_RefNannySetupContext(name) void *__pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+ #define __Pyx_RefNannyFinishContext() __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+ #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+ #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+ #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+ #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+ #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r);} } while(0)
+#else
+ #define __Pyx_RefNannySetupContext(name)
+ #define __Pyx_RefNannyFinishContext()
+ #define __Pyx_INCREF(r) Py_INCREF(r)
+ #define __Pyx_DECREF(r) Py_DECREF(r)
+ #define __Pyx_GOTREF(r)
+ #define __Pyx_GIVEREF(r)
+ #define __Pyx_XDECREF(r) Py_XDECREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);} } while(0)
+#define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r);} } while(0)
+
+static void __Pyx_RaiseDoubleKeywordsError(
+ const char* func_name, PyObject* kw_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+ Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /*proto*/
+
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
+ if (likely(PyList_CheckExact(L))) {
+ if (PyList_Append(L, x) < 0) return NULL;
+ Py_INCREF(Py_None);
+ return Py_None; /* this is just to have an accurate signature */
+ }
+ else {
+ PyObject *r, *m;
+ m = __Pyx_GetAttrString(L, "append");
+ if (!m) return NULL;
+ r = PyObject_CallFunctionObjArgs(m, x, NULL);
+ Py_DECREF(m);
+ return r;
+ }
+}
+
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void);
+
+static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
+static int __Pyx_EndUnpack(PyObject *); /*proto*/
+
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+ PyObject *r;
+ if (!j) return NULL;
+ r = PyObject_GetItem(o, j);
+ Py_DECREF(j);
+ return r;
+}
+
+
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+ __Pyx_GetItemInt_List_Fast(o, i, size <= sizeof(long)) : \
+ __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
+ if (likely(o != Py_None)) {
+ if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+ PyObject *r = PyList_GET_ITEM(o, i);
+ Py_INCREF(r);
+ return r;
+ }
+ else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+ PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+ Py_INCREF(r);
+ return r;
+ }
+ }
+ return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
+}
+
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+ __Pyx_GetItemInt_Tuple_Fast(o, i, size <= sizeof(long)) : \
+ __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
+ if (likely(o != Py_None)) {
+ if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+ PyObject *r = PyTuple_GET_ITEM(o, i);
+ Py_INCREF(r);
+ return r;
+ }
+ else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+ PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+ Py_INCREF(r);
+ return r;
+ }
+ }
+ return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
+}
+
+
+#define __Pyx_GetItemInt(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+ __Pyx_GetItemInt_Fast(o, i, size <= sizeof(long)) : \
+ __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
+ PyObject *r;
+ if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+ r = PyList_GET_ITEM(o, i);
+ Py_INCREF(r);
+ }
+ else if (PyTuple_CheckExact(o) && ((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+ r = PyTuple_GET_ITEM(o, i);
+ Py_INCREF(r);
+ }
+ else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0))) {
+ r = PySequence_GetItem(o, i);
+ }
+ else {
+ r = __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
+ }
+ return r;
+}
+
+static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+ const char *name, int exact); /*proto*/
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
+
+static void __Pyx_AddTraceback(const char *funcname); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+/* Module declarations from sphinxbase */
+
+static PyTypeObject *__pyx_ptype_10sphinxbase_NGramModel = 0;
+static PyTypeObject *__pyx_ptype_10sphinxbase_LogMath = 0;
+static PyTypeObject *__pyx_ptype_10sphinxbase_NGramIter = 0;
+static PyTypeObject *__pyx_ptype_10sphinxbase_HuffCode = 0;
+#define __Pyx_MODULE_NAME "sphinxbase"
+int __pyx_module_is_main_sphinxbase = 0;
+
+/* Implementation of sphinxbase */
+static PyObject *__pyx_builtin_range;
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_StopIteration;
+static PyObject *__pyx_builtin_ord;
+static PyObject *__pyx_builtin_min;
+static PyObject *__pyx_builtin_enumerate;
+static PyObject *__pyx_builtin_RuntimeError;
+static char __pyx_k_9[] = "Recode from %s to %s failed";
+static char __pyx_k_10[] = "Casefolding failed";
+static char __pyx_k_12[] = "Write %s to file failed";
+static char __pyx_k_13[] = "";
+static char __pyx_k_14[] = "%d";
+static char __pyx_k_15[] = "%s";
+static char __pyx_k_16[] = "One of alphabet or infile must be passed to constructor";
+static char __pyx_k_17[] = "Only one of alphabet or infile must be passed to constructor";
+static char __pyx_k_18[] = "Invalid data at position %d";
+static char __pyx_k_19[] = "No file is attached";
+static char __pyx_k__a[] = "a";
+static char __pyx_k__b[] = "b";
+static char __pyx_k__m[] = "m";
+static char __pyx_k__w[] = "w";
+static char __pyx_k__cw[] = "cw";
+static char __pyx_k__fh[] = "fh";
+static char __pyx_k__hc[] = "hc";
+static char __pyx_k__lm[] = "lm";
+static char __pyx_k__lw[] = "lw";
+static char __pyx_k__rb[] = "rb";
+static char __pyx_k__uw[] = "uw";
+static char __pyx_k__wb[] = "wb";
+static char __pyx_k__DMP[] = "DMP";
+static char __pyx_k__min[] = "min";
+static char __pyx_k__ord[] = "ord";
+static char __pyx_k__too[] = "too";
+static char __pyx_k__val[] = "val";
+static char __pyx_k__wip[] = "wip";
+static char __pyx_k__ARPA[] = "ARPA";
+static char __pyx_k__AUTO[] = "AUTO";
+static char __pyx_k__base[] = "base";
+static char __pyx_k__file[] = "file";
+static char __pyx_k__frum[] = "frum";
+static char __pyx_k__itor[] = "itor";
+static char __pyx_k__mode[] = "mode";
+static char __pyx_k__read[] = "read";
+static char __pyx_k__word[] = "word";
+static char __pyx_k__LOWER[] = "LOWER";
+static char __pyx_k__UPPER[] = "UPPER";
+static char __pyx_k__lmath[] = "lmath";
+static char __pyx_k__lmctl[] = "lmctl";
+static char __pyx_k__nbits[] = "nbits";
+static char __pyx_k__range[] = "range";
+static char __pyx_k__shift[] = "shift";
+static char __pyx_k__words[] = "words";
+static char __pyx_k__detach[] = "detach";
+static char __pyx_k__format[] = "format";
+static char __pyx_k__infile[] = "infile";
+static char __pyx_k__weight[] = "weight";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k__alphabet[] = "alphabet";
+static char __pyx_k__log_bowt[] = "log_bowt";
+static char __pyx_k__log_prob[] = "log_prob";
+static char __pyx_k__set_iter[] = "set_iter";
+static char __pyx_k__enumerate[] = "enumerate";
+static char __pyx_k__file_name[] = "file_name";
+static char __pyx_k__use_table[] = "use_table";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__first_item[] = "first_item";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static char __pyx_k__StopIteration[] = "StopIteration";
+static PyObject *__pyx_kp_s_10;
+static PyObject *__pyx_kp_s_12;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_kp_s_14;
+static PyObject *__pyx_kp_s_15;
+static PyObject *__pyx_kp_s_16;
+static PyObject *__pyx_kp_s_17;
+static PyObject *__pyx_kp_s_18;
+static PyObject *__pyx_kp_s_19;
+static PyObject *__pyx_kp_s_9;
+static PyObject *__pyx_n_s__ARPA;
+static PyObject *__pyx_n_s__AUTO;
+static PyObject *__pyx_n_s__DMP;
+static PyObject *__pyx_n_s__LOWER;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__StopIteration;
+static PyObject *__pyx_n_s__UPPER;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s__a;
+static PyObject *__pyx_n_s__alphabet;
+static PyObject *__pyx_n_s__b;
+static PyObject *__pyx_n_s__base;
+static PyObject *__pyx_n_s__cw;
+static PyObject *__pyx_n_s__detach;
+static PyObject *__pyx_n_s__enumerate;
+static PyObject *__pyx_n_s__fh;
+static PyObject *__pyx_n_s__file;
+static PyObject *__pyx_n_s__file_name;
+static PyObject *__pyx_n_s__first_item;
+static PyObject *__pyx_n_s__format;
+static PyObject *__pyx_n_s__frum;
+static PyObject *__pyx_n_s__hc;
+static PyObject *__pyx_n_s__infile;
+static PyObject *__pyx_n_s__itor;
+static PyObject *__pyx_n_s__lm;
+static PyObject *__pyx_n_s__lmath;
+static PyObject *__pyx_n_s__lmctl;
+static PyObject *__pyx_n_s__log_bowt;
+static PyObject *__pyx_n_s__log_prob;
+static PyObject *__pyx_n_s__lw;
+static PyObject *__pyx_n_s__m;
+static PyObject *__pyx_n_s__min;
+static PyObject *__pyx_n_s__mode;
+static PyObject *__pyx_n_s__nbits;
+static PyObject *__pyx_n_s__ord;
+static PyObject *__pyx_n_s__range;
+static PyObject *__pyx_n_s__rb;
+static PyObject *__pyx_n_s__read;
+static PyObject *__pyx_n_s__set_iter;
+static PyObject *__pyx_n_s__shift;
+static PyObject *__pyx_n_s__too;
+static PyObject *__pyx_n_s__use_table;
+static PyObject *__pyx_n_s__uw;
+static PyObject *__pyx_n_s__val;
+static PyObject *__pyx_n_s__w;
+static PyObject *__pyx_n_s__wb;
+static PyObject *__pyx_n_s__weight;
+static PyObject *__pyx_n_s__wip;
+static PyObject *__pyx_n_s__word;
+static PyObject *__pyx_n_s__words;
+static PyObject *__pyx_int_0;
+static PyObject *__pyx_int_1;
+static PyObject *__pyx_int_8;
+static PyObject *__pyx_k_1;
+static PyObject *__pyx_k_2;
+static PyObject *__pyx_k_3;
+static PyObject *__pyx_k_4;
+static PyObject *__pyx_k_5;
+static PyObject *__pyx_k_6;
+static PyObject *__pyx_k_7;
+static PyObject *__pyx_k_8;
+static PyObject *__pyx_k_11;
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":24
+ * @type use_table: bool
+ * """
+ * def __init__(self, base=1.0001, shift=0, use_table=1): # <<<<<<<<<<<<<<
+ * self.lmath = logmath_init(base, shift, use_table)
+ *
+ */
+
+static int __pyx_pf_10sphinxbase_7LogMath___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pf_10sphinxbase_7LogMath___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_base = 0;
+ PyObject *__pyx_v_shift = 0;
+ PyObject *__pyx_v_use_table = 0;
+ int __pyx_r;
+ __pyx_t_10sphinxbase_float64 __pyx_t_1;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__base,&__pyx_n_s__shift,&__pyx_n_s__use_table,0};
+ __Pyx_RefNannySetupContext("__init__");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[3] = {0,0,0};
+ values[0] = __pyx_k_1;
+ values[1] = ((PyObject *)__pyx_int_0);
+ values[2] = ((PyObject *)__pyx_int_1);
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base);
+ if (unlikely(value)) { values[0] = value; kw_args--; }
+ }
+ case 1:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__shift);
+ if (unlikely(value)) { values[1] = value; kw_args--; }
+ }
+ case 2:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__use_table);
+ if (unlikely(value)) { values[2] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_base = values[0];
+ __pyx_v_shift = values[1];
+ __pyx_v_use_table = values[2];
+ } else {
+ __pyx_v_base = __pyx_k_1;
+ __pyx_v_shift = ((PyObject *)__pyx_int_0);
+ __pyx_v_use_table = ((PyObject *)__pyx_int_1);
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 3: __pyx_v_use_table = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: __pyx_v_shift = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: __pyx_v_base = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.LogMath.__init__");
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":25
+ * """
+ * def __init__(self, base=1.0001, shift=0, use_table=1):
+ * self.lmath = logmath_init(base, shift, use_table) # <<<<<<<<<<<<<<
+ *
+ * def __dealloc__(self):
+ */
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_base); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_shift); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_use_table); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath = logmath_init(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("sphinxbase.LogMath.__init__");
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":27
+ * self.lmath = logmath_init(base, shift, use_table)
+ *
+ * def __dealloc__(self): # <<<<<<<<<<<<<<
+ * """
+ * Destructor for LogMath class.
+ */
+
+static void __pyx_pf_10sphinxbase_7LogMath___dealloc__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath___dealloc__[] = "\n Destructor for LogMath class.\n ";
+static void __pyx_pf_10sphinxbase_7LogMath___dealloc__(PyObject *__pyx_v_self) {
+ __Pyx_RefNannySetupContext("__dealloc__");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":31
+ * Destructor for LogMath class.
+ * """
+ * logmath_free(self.lmath) # <<<<<<<<<<<<<<
+ *
+ * def get_zero(self):
+ */
+ logmath_free(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath);
+
+ __Pyx_RefNannyFinishContext();
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":33
+ * logmath_free(self.lmath)
+ *
+ * def get_zero(self): # <<<<<<<<<<<<<<
+ * """
+ * Get the log-zero value.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_get_zero(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_get_zero[] = "\n Get the log-zero value.\n\n @return: Smallest number representable by this object.\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_get_zero(PyObject *__pyx_v_self, PyObject *unused) {
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ __Pyx_RefNannySetupContext("get_zero");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":40
+ * @rtype: int
+ * """
+ * return logmath_get_zero(self.lmath) # <<<<<<<<<<<<<<
+ *
+ * def add(self, a, b):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyInt_FromLong(logmath_get_zero(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("sphinxbase.LogMath.get_zero");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":42
+ * return logmath_get_zero(self.lmath)
+ *
+ * def add(self, a, b): # <<<<<<<<<<<<<<
+ * """
+ * Add two numbers in log-space.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_add(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_add[] = "\n Add two numbers in log-space.\n\n @param a: Logarithm A.\n @type a: int\n @param b: Logarithm B.\n @type b: int\n @return: log(exp(a)+exp(b))\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_add(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_a = 0;
+ PyObject *__pyx_v_b = 0;
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__a,&__pyx_n_s__b,0};
+ __Pyx_RefNannySetupContext("add");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__b);
+ if (likely(values[1])) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("add", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "add") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_a = values[0];
+ __pyx_v_b = values[1];
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_a = PyTuple_GET_ITEM(__pyx_args, 0);
+ __pyx_v_b = PyTuple_GET_ITEM(__pyx_args, 1);
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("add", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.LogMath.add");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":53
+ * @rtype: int
+ * """
+ * return logmath_add(self.lmath, a, b) # <<<<<<<<<<<<<<
+ *
+ * def log(self, x):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_a); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_b); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(logmath_add(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1, __pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("sphinxbase.LogMath.add");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":55
+ * return logmath_add(self.lmath, a, b)
+ *
+ * def log(self, x): # <<<<<<<<<<<<<<
+ * """
+ * Return log-value of a number.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_log[] = "\n Return log-value of a number.\n\n @param x: Number (in linear space)\n @type x: float\n @return: Log-value of x.\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
+ PyObject *__pyx_r = NULL;
+ __pyx_t_10sphinxbase_float64 __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("log");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":64
+ * @rtype: int
+ * """
+ * return logmath_log(self.lmath, x) # <<<<<<<<<<<<<<
+ *
+ * def exp(self, x):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(logmath_log(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.LogMath.log");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":66
+ * return logmath_log(self.lmath, x)
+ *
+ * def exp(self, x): # <<<<<<<<<<<<<<
+ * """
+ * Return linear of a log-value
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_exp(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_exp[] = "\n Return linear of a log-value\n\n @param x: Logarithm X (in this object's base)\n @type x: int\n @return: Exponent (linear value) of X.\n @rtype: float\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_exp(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("exp");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":75
+ * @rtype: float
+ * """
+ * return logmath_exp(self.lmath, x) # <<<<<<<<<<<<<<
+ *
+ * def log_to_ln(self, x):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_x); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyFloat_FromDouble(logmath_exp(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.LogMath.exp");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":77
+ * return logmath_exp(self.lmath, x)
+ *
+ * def log_to_ln(self, x): # <<<<<<<<<<<<<<
+ * """
+ * Return natural logarithm of a log-value.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log_to_ln(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_log_to_ln[] = "\n Return natural logarithm of a log-value.\n\n @param x: Logarithm X (in this object's base)\n @type x: int\n @return: Natural log equivalent of x.\n @rtype: float\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log_to_ln(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("log_to_ln");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":86
+ * @rtype: float
+ * """
+ * return logmath_log_to_ln(self.lmath, x) # <<<<<<<<<<<<<<
+ *
+ * def log_to_log10(self, x):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_x); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyFloat_FromDouble(logmath_log_to_ln(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.LogMath.log_to_ln");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":88
+ * return logmath_log_to_ln(self.lmath, x)
+ *
+ * def log_to_log10(self, x): # <<<<<<<<<<<<<<
+ * """
+ * Return logarithm in base 10 of a log-value.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log_to_log10(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_log_to_log10[] = "\n Return logarithm in base 10 of a log-value.\n\n @param x: Logarithm X (in this object's base)\n @type x: int\n @return: log10 equivalent of x.\n @rtype: float\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log_to_log10(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("log_to_log10");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":97
+ * @rtype: float
+ * """
+ * return logmath_log_to_log10(self.lmath, x) # <<<<<<<<<<<<<<
+ *
+ * def ln_to_log(self, x):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_x); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyFloat_FromDouble(logmath_log_to_log10(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.LogMath.log_to_log10");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":99
+ * return logmath_log_to_log10(self.lmath, x)
+ *
+ * def ln_to_log(self, x): # <<<<<<<<<<<<<<
+ * """
+ * Return log-value of a natural logarithm.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_ln_to_log(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_ln_to_log[] = "\n Return log-value of a natural logarithm.\n\n @param x: Logarithm X (in base e)\n @type x: float\n @return: Log-value equivalent of x.\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_ln_to_log(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
+ PyObject *__pyx_r = NULL;
+ __pyx_t_10sphinxbase_float64 __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("ln_to_log");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":108
+ * @rtype: int
+ * """
+ * return logmath_ln_to_log(self.lmath, x) # <<<<<<<<<<<<<<
+ *
+ * def log10_to_log(self, x):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(logmath_ln_to_log(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.LogMath.ln_to_log");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":110
+ * return logmath_ln_to_log(self.lmath, x)
+ *
+ * def log10_to_log(self, x): # <<<<<<<<<<<<<<
+ * """
+ * Return log-value of a base 10 logarithm.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log10_to_log(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_10sphinxbase_7LogMath_log10_to_log[] = "\n Return log-value of a base 10 logarithm.\n\n @param x: Logarithm X (in base 10)\n @type x: float\n @return: Log-value equivalent of x.\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_7LogMath_log10_to_log(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
+ PyObject *__pyx_r = NULL;
+ __pyx_t_10sphinxbase_float64 __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("log10_to_log");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":119
+ * @rtype: int
+ * """
+ * return logmath_log10_to_log(self.lmath, x) # <<<<<<<<<<<<<<
+ *
+ * # Unfortunately, Cython doesn't actually export enums to Python...
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(logmath_log10_to_log(((struct __pyx_obj_10sphinxbase_LogMath *)__pyx_v_self)->lmath, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.LogMath.log10_to_log");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":146
+ * @type uw: float
+ * """
+ * def __init__(self, file=None, lw=1.0, wip=1.0, uw=1.0, lmctl=None): # <<<<<<<<<<<<<<
+ * self.lmath = logmath_init(1.0001, 0, 0)
+ * if file:
+ */
+
+static int __pyx_pf_10sphinxbase_10NGramModel___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pf_10sphinxbase_10NGramModel___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_file = 0;
+ PyObject *__pyx_v_lw = 0;
+ PyObject *__pyx_v_wip = 0;
+ PyObject *__pyx_v_uw = 0;
+ PyObject *__pyx_v_lmctl = 0;
+ int __pyx_r;
+ int __pyx_t_1;
+ char *__pyx_t_2;
+ __pyx_t_10sphinxbase_float32 __pyx_t_3;
+ __pyx_t_10sphinxbase_float32 __pyx_t_4;
+ __pyx_t_10sphinxbase_float32 __pyx_t_5;
+ float __pyx_t_6;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__file,&__pyx_n_s__lw,&__pyx_n_s__wip,&__pyx_n_s__uw,&__pyx_n_s__lmctl,0};
+ __Pyx_RefNannySetupContext("__init__");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[5] = {0,0,0,0,0};
+ values[0] = ((PyObject *)Py_None);
+ values[1] = __pyx_k_2;
+ values[2] = __pyx_k_3;
+ values[3] = __pyx_k_4;
+ values[4] = ((PyObject *)Py_None);
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
+ if (unlikely(value)) { values[0] = value; kw_args--; }
+ }
+ case 1:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lw);
+ if (unlikely(value)) { values[1] = value; kw_args--; }
+ }
+ case 2:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wip);
+ if (unlikely(value)) { values[2] = value; kw_args--; }
+ }
+ case 3:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__uw);
+ if (unlikely(value)) { values[3] = value; kw_args--; }
+ }
+ case 4:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lmctl);
+ if (unlikely(value)) { values[4] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_file = values[0];
+ __pyx_v_lw = values[1];
+ __pyx_v_wip = values[2];
+ __pyx_v_uw = values[3];
+ __pyx_v_lmctl = values[4];
+ } else {
+ __pyx_v_file = ((PyObject *)Py_None);
+ __pyx_v_lw = __pyx_k_2;
+ __pyx_v_wip = __pyx_k_3;
+ __pyx_v_uw = __pyx_k_4;
+ __pyx_v_lmctl = ((PyObject *)Py_None);
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: __pyx_v_lmctl = PyTuple_GET_ITEM(__pyx_args, 4);
+ case 4: __pyx_v_uw = PyTuple_GET_ITEM(__pyx_args, 3);
+ case 3: __pyx_v_wip = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: __pyx_v_lw = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: __pyx_v_file = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.__init__");
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_file);
+ __Pyx_INCREF(__pyx_v_lw);
+ __Pyx_INCREF(__pyx_v_wip);
+ __Pyx_INCREF(__pyx_v_uw);
+ __Pyx_INCREF(__pyx_v_lmctl);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":147
+ * """
+ * def __init__(self, file=None, lw=1.0, wip=1.0, uw=1.0, lmctl=None):
+ * self.lmath = logmath_init(1.0001, 0, 0) # <<<<<<<<<<<<<<
+ * if file:
+ * self.lm = ngram_model_read(NULL, file, NGRAM_AUTO, self.lmath)
+ */
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath = logmath_init(1.0001, 0, 0);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":148
+ * def __init__(self, file=None, lw=1.0, wip=1.0, uw=1.0, lmctl=None):
+ * self.lmath = logmath_init(1.0001, 0, 0)
+ * if file: # <<<<<<<<<<<<<<
+ * self.lm = ngram_model_read(NULL, file, NGRAM_AUTO, self.lmath)
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ */
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_file); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__pyx_t_1) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":149
+ * self.lmath = logmath_init(1.0001, 0, 0)
+ * if file:
+ * self.lm = ngram_model_read(NULL, file, NGRAM_AUTO, self.lmath) # <<<<<<<<<<<<<<
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ * elif lmctl:
+ */
+ __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_file); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm = ngram_model_read(NULL, __pyx_t_2, NGRAM_AUTO, ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":150
+ * if file:
+ * self.lm = ngram_model_read(NULL, file, NGRAM_AUTO, self.lmath)
+ * ngram_model_apply_weights(self.lm, lw, wip, uw) # <<<<<<<<<<<<<<
+ * elif lmctl:
+ * self.lm = ngram_model_set_read(NULL, lmctl, self.lmath)
+ */
+ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_lw); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_wip); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_uw); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ngram_model_apply_weights(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_3, __pyx_t_4, __pyx_t_5);
+ goto __pyx_L6;
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":151
+ * self.lm = ngram_model_read(NULL, file, NGRAM_AUTO, self.lmath)
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ * elif lmctl: # <<<<<<<<<<<<<<
+ * self.lm = ngram_model_set_read(NULL, lmctl, self.lmath)
+ * else:
+ */
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_lmctl); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__pyx_t_1) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":152
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ * elif lmctl:
+ * self.lm = ngram_model_set_read(NULL, lmctl, self.lmath) # <<<<<<<<<<<<<<
+ * else:
+ * self.lm = NULL
+ */
+ __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_lmctl); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm = ngram_model_set_read(NULL, __pyx_t_2, ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath);
+ goto __pyx_L6;
+ }
+ /*else*/ {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":154
+ * self.lm = ngram_model_set_read(NULL, lmctl, self.lmath)
+ * else:
+ * self.lm = NULL # <<<<<<<<<<<<<<
+ * self.lw = lw
+ * self.wip = wip
+ */
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm = NULL;
+ }
+ __pyx_L6:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":155
+ * else:
+ * self.lm = NULL
+ * self.lw = lw # <<<<<<<<<<<<<<
+ * self.wip = wip
+ * self.uw = uw
+ */
+ __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_lw); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lw = __pyx_t_6;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":156
+ * self.lm = NULL
+ * self.lw = lw
+ * self.wip = wip # <<<<<<<<<<<<<<
+ * self.uw = uw
+ *
+ */
+ __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_wip); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->wip = __pyx_t_6;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":157
+ * self.lw = lw
+ * self.wip = wip
+ * self.uw = uw # <<<<<<<<<<<<<<
+ *
+ * cdef set_lm(NGramModel self, ngram_model_t *lm):
+ */
+ __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_uw); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->uw = __pyx_t_6;
+
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.__init__");
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_file);
+ __Pyx_DECREF(__pyx_v_lw);
+ __Pyx_DECREF(__pyx_v_wip);
+ __Pyx_DECREF(__pyx_v_uw);
+ __Pyx_DECREF(__pyx_v_lmctl);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":159
+ * self.uw = uw
+ *
+ * cdef set_lm(NGramModel self, ngram_model_t *lm): # <<<<<<<<<<<<<<
+ * ngram_model_retain(lm)
+ * ngram_model_free(self.lm)
+ */
+
+static PyObject *__pyx_f_10sphinxbase_10NGramModel_set_lm(struct __pyx_obj_10sphinxbase_NGramModel *__pyx_v_self, ngram_model_t *__pyx_v_lm) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannySetupContext("set_lm");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":160
+ *
+ * cdef set_lm(NGramModel self, ngram_model_t *lm):
+ * ngram_model_retain(lm) # <<<<<<<<<<<<<<
+ * ngram_model_free(self.lm)
+ * self.lm = lm
+ */
+ ngram_model_retain(__pyx_v_lm);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":161
+ * cdef set_lm(NGramModel self, ngram_model_t *lm):
+ * ngram_model_retain(lm)
+ * ngram_model_free(self.lm) # <<<<<<<<<<<<<<
+ * self.lm = lm
+ *
+ */
+ ngram_model_free(__pyx_v_self->lm);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":162
+ * ngram_model_retain(lm)
+ * ngram_model_free(self.lm)
+ * self.lm = lm # <<<<<<<<<<<<<<
+ *
+ * cdef set_lmath(NGramModel self, logmath_t *lmath):
+ */
+ __pyx_v_self->lm = __pyx_v_lm;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":164
+ * self.lm = lm
+ *
+ * cdef set_lmath(NGramModel self, logmath_t *lmath): # <<<<<<<<<<<<<<
+ * logmath_retain(lmath)
+ * logmath_free(self.lmath)
+ */
+
+static PyObject *__pyx_f_10sphinxbase_10NGramModel_set_lmath(struct __pyx_obj_10sphinxbase_NGramModel *__pyx_v_self, logmath_t *__pyx_v_lmath) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannySetupContext("set_lmath");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":165
+ *
+ * cdef set_lmath(NGramModel self, logmath_t *lmath):
+ * logmath_retain(lmath) # <<<<<<<<<<<<<<
+ * logmath_free(self.lmath)
+ * self.lmath = lmath
+ */
+ logmath_retain(__pyx_v_lmath);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":166
+ * cdef set_lmath(NGramModel self, logmath_t *lmath):
+ * logmath_retain(lmath)
+ * logmath_free(self.lmath) # <<<<<<<<<<<<<<
+ * self.lmath = lmath
+ *
+ */
+ logmath_free(__pyx_v_self->lmath);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":167
+ * logmath_retain(lmath)
+ * logmath_free(self.lmath)
+ * self.lmath = lmath # <<<<<<<<<<<<<<
+ *
+ * def __dealloc__(self):
+ */
+ __pyx_v_self->lmath = __pyx_v_lmath;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":169
+ * self.lmath = lmath
+ *
+ * def __dealloc__(self): # <<<<<<<<<<<<<<
+ * """
+ * Destructor for N-Gram model class.
+ */
+
+static void __pyx_pf_10sphinxbase_10NGramModel___dealloc__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel___dealloc__[] = "\n Destructor for N-Gram model class.\n ";
+static void __pyx_pf_10sphinxbase_10NGramModel___dealloc__(PyObject *__pyx_v_self) {
+ __Pyx_RefNannySetupContext("__dealloc__");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":173
+ * Destructor for N-Gram model class.
+ * """
+ * logmath_free(self.lmath) # <<<<<<<<<<<<<<
+ * ngram_model_free(self.lm)
+ *
+ */
+ logmath_free(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":174
+ * """
+ * logmath_free(self.lmath)
+ * ngram_model_free(self.lm) # <<<<<<<<<<<<<<
+ *
+ * def apply_weights(self, lw=1.0, wip=1.0, uw=1.0):
+ */
+ ngram_model_free(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm);
+
+ __Pyx_RefNannyFinishContext();
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":176
+ * ngram_model_free(self.lm)
+ *
+ * def apply_weights(self, lw=1.0, wip=1.0, uw=1.0): # <<<<<<<<<<<<<<
+ * """
+ * Change the language model weights applied in L{score}.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_apply_weights(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_apply_weights[] = "\n Change the language model weights applied in L{score}.\n \n @param lw: Language weight to apply to model probabilities.\n @type lw: float\n @param wip: Word insertion penalty to add to model probabilities\n @type wip: float\n @param uw: Weight to give unigrams when interpolating with uniform distribution.\n @type uw: float\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_apply_weights(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_lw = 0;
+ PyObject *__pyx_v_wip = 0;
+ PyObject *__pyx_v_uw = 0;
+ PyObject *__pyx_r = NULL;
+ float __pyx_t_1;
+ __pyx_t_10sphinxbase_float32 __pyx_t_2;
+ __pyx_t_10sphinxbase_float32 __pyx_t_3;
+ __pyx_t_10sphinxbase_float32 __pyx_t_4;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lw,&__pyx_n_s__wip,&__pyx_n_s__uw,0};
+ __Pyx_RefNannySetupContext("apply_weights");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[3] = {0,0,0};
+ values[0] = __pyx_k_5;
+ values[1] = __pyx_k_6;
+ values[2] = __pyx_k_7;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lw);
+ if (unlikely(value)) { values[0] = value; kw_args--; }
+ }
+ case 1:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wip);
+ if (unlikely(value)) { values[1] = value; kw_args--; }
+ }
+ case 2:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__uw);
+ if (unlikely(value)) { values[2] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "apply_weights") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_lw = values[0];
+ __pyx_v_wip = values[1];
+ __pyx_v_uw = values[2];
+ } else {
+ __pyx_v_lw = __pyx_k_5;
+ __pyx_v_wip = __pyx_k_6;
+ __pyx_v_uw = __pyx_k_7;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 3: __pyx_v_uw = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: __pyx_v_wip = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: __pyx_v_lw = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("apply_weights", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.apply_weights");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":187
+ * @type uw: float
+ * """
+ * self.lw = lw # <<<<<<<<<<<<<<
+ * self.wip = wip
+ * self.uw = uw
+ */
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_lw); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lw = __pyx_t_1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":188
+ * """
+ * self.lw = lw
+ * self.wip = wip # <<<<<<<<<<<<<<
+ * self.uw = uw
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ */
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_wip); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->wip = __pyx_t_1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":189
+ * self.lw = lw
+ * self.wip = wip
+ * self.uw = uw # <<<<<<<<<<<<<<
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ *
+ */
+ __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_uw); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->uw = __pyx_t_1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":190
+ * self.wip = wip
+ * self.uw = uw
+ * ngram_model_apply_weights(self.lm, lw, wip, uw) # <<<<<<<<<<<<<<
+ *
+ * def get_size(self):
+ */
+ __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_lw); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_wip); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_uw); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ngram_model_apply_weights(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_2, __pyx_t_3, __pyx_t_4);
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.apply_weights");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":192
+ * ngram_model_apply_weights(self.lm, lw, wip, uw)
+ *
+ * def get_size(self): # <<<<<<<<<<<<<<
+ * """
+ * Get the order of this model (i.e. the 'N' in 'N-gram')
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_get_size(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_get_size[] = "\n Get the order of this model (i.e. the 'N' in 'N-gram')\n\n @return: Order of this model\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_get_size(PyObject *__pyx_v_self, PyObject *unused) {
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ __Pyx_RefNannySetupContext("get_size");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":199
+ * @rtype: int
+ * """
+ * return ngram_model_get_size(self.lm) # <<<<<<<<<<<<<<
+ *
+ * def get_counts(self):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyInt_FromLong(ngram_model_get_size(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.get_size");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":201
+ * return ngram_model_get_size(self.lm)
+ *
+ * def get_counts(self): # <<<<<<<<<<<<<<
+ * """
+ * Get the counts of each size of N-gram.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_get_counts(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_get_counts[] = "\n Get the counts of each size of N-gram.\n\n @return: Counts of 1, 2, ..., N grams\n @rtype: tuple(int)\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_get_counts(PyObject *__pyx_v_self, PyObject *unused) {
+ int *__pyx_v_counts;
+ PyObject *__pyx_v_i;
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ Py_ssize_t __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ Py_ssize_t __pyx_t_5;
+ int __pyx_t_6;
+ __Pyx_RefNannySetupContext("get_counts");
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":209
+ * """
+ * cdef int *counts
+ * counts = ngram_model_get_counts(self.lm) # <<<<<<<<<<<<<<
+ * return tuple([counts[i] for i in range(ngram_model_get_size(self.lm))])
+ *
+ */
+ __pyx_v_counts = ngram_model_get_counts(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":210
+ * cdef int *counts
+ * counts = ngram_model_get_counts(self.lm)
+ * return tuple([counts[i] for i in range(ngram_model_get_size(self.lm))]) # <<<<<<<<<<<<<<
+ *
+ * def unknown_wid(self):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+ __pyx_t_3 = PyInt_FromLong(ngram_model_get_size(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
+ __pyx_t_2 = 0; __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4);
+ } else {
+ __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_4))) {
+ if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
+ if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
+ } else {
+ __pyx_t_3 = PyIter_Next(__pyx_t_4);
+ if (!__pyx_t_3) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_3;
+ __pyx_t_3 = 0;
+ __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong((__pyx_v_counts[__pyx_t_5])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = ((PyObject *)PyList_AsTuple(__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = ((PyObject *)__pyx_t_4);
+ __pyx_t_4 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.get_counts");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":212
+ * return tuple([counts[i] for i in range(ngram_model_get_size(self.lm))])
+ *
+ * def unknown_wid(self): # <<<<<<<<<<<<<<
+ * """
+ * Get the ID for an unknown word.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_unknown_wid(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_unknown_wid[] = "\n Get the ID for an unknown word.\n\n In the case of a closed-vocabulary language model this will be -1.\n\n @return: Word ID for the unknown word.\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_unknown_wid(PyObject *__pyx_v_self, PyObject *unused) {
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ __Pyx_RefNannySetupContext("unknown_wid");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":221
+ * @rtype: int
+ * """
+ * return ngram_unknown_wid(self.lm) # <<<<<<<<<<<<<<
+ *
+ * def zero(self):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyInt_FromLong(ngram_unknown_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.unknown_wid");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":223
+ * return ngram_unknown_wid(self.lm)
+ *
+ * def zero(self): # <<<<<<<<<<<<<<
+ * """
+ * Get the log-zero value for this language model.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_zero(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_zero[] = "\n Get the log-zero value for this language model.\n\n @return: Log value used to represent zero.\n @rtype: float\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_zero(PyObject *__pyx_v_self, PyObject *unused) {
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ __Pyx_RefNannySetupContext("zero");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":230
+ * @rtype: float
+ * """
+ * return logmath_log_to_ln(self.lmath, ngram_zero(self.lm)) # <<<<<<<<<<<<<<
+ *
+ * def wid(self, word):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyFloat_FromDouble(logmath_log_to_ln(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath, ngram_zero(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.zero");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":232
+ * return logmath_log_to_ln(self.lmath, ngram_zero(self.lm))
+ *
+ * def wid(self, word): # <<<<<<<<<<<<<<
+ * """
+ * Get the internal ID for a word.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_wid(PyObject *__pyx_v_self, PyObject *__pyx_v_word); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_wid[] = "\n Get the internal ID for a word.\n \n @param word: Word in question\n @type word: string\n @return: Internal ID for word, or -1 if not present\n @rtype: int\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_wid(PyObject *__pyx_v_self, PyObject *__pyx_v_word) {
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("wid");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":241
+ * @rtype: int
+ * """
+ * return ngram_wid(self.lm, word) # <<<<<<<<<<<<<<
+ *
+ * def word(self, wid):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.wid");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":243
+ * return ngram_wid(self.lm, word)
+ *
+ * def word(self, wid): # <<<<<<<<<<<<<<
+ * """
+ * Get the string corresponding to an internal word ID.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_word(PyObject *__pyx_v_self, PyObject *__pyx_v_wid); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_word[] = "\n Get the string corresponding to an internal word ID.\n \n @param word: Word ID in question\n @type word: int\n @return: String for word, or None if not present\n @rtype: string\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_word(PyObject *__pyx_v_self, PyObject *__pyx_v_wid) {
+ PyObject *__pyx_r = NULL;
+ __pyx_t_10sphinxbase_int32 __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("word");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":252
+ * @rtype: string
+ * """
+ * return ngram_word(self.lm, wid) # <<<<<<<<<<<<<<
+ *
+ * # Note that this and prob() are almost exactly the same...
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_wid); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyBytes_FromString(ngram_word(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ __pyx_r = ((PyObject *)__pyx_t_2);
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.word");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":255
+ *
+ * # Note that this and prob() are almost exactly the same...
+ * def score(self, word, *args): # <<<<<<<<<<<<<<
+ * """
+ * Get the score for an N-Gram.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_score(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_score[] = "\n Get the score for an N-Gram.\n\n The argument list consists of the history words (as\n null-terminated strings) of the N-Gram, in reverse order.\n Therefore, if you wanted to get the N-Gram score for 'a whole\n joy', you would call::\n\n score, n_used = model.score('joy', 'whole', 'a')\n\n This function returns a tuple, consisting of the score and the\n number of words used in computing it (i.e. the effective size\n of the N-Gram). The score is returned in logarithmic form,\n using base e.\n\n If one of the words is not in the LM's vocabulary, the result\n will depend on whether this is an open or closed vocabulary\n language model. For an open-vocabulary model, unknown words\n are all mapped to the unigram <UNK> which has a non-zero\n probability and also participates in higher-order N-Grams.\n Therefore, you will get a score of some sort in this case.\n\n For a closed-vocabulary model, unknown words are impossible\n and thus have zero probability. Therefore, if C{word} is\n unknown, this function will return a 'zero' log-probability,\n i.e. a large negative number.\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_score(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_word = 0;
+ PyObject *__pyx_v_args = 0;
+ __pyx_t_10sphinxbase_int32 __pyx_v_wid;
+ __pyx_t_10sphinxbase_int32 *__pyx_v_hist;
+ __pyx_t_10sphinxbase_int32 __pyx_v_n_hist;
+ __pyx_t_10sphinxbase_int32 __pyx_v_n_used;
+ __pyx_t_10sphinxbase_int32 __pyx_v_score;
+ PyObject *__pyx_v_i;
+ PyObject *__pyx_v_spam;
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ Py_ssize_t __pyx_t_2;
+ __pyx_t_10sphinxbase_int32 __pyx_t_3;
+ long __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,0};
+ __Pyx_RefNannySetupContext("score");
+ if (PyTuple_GET_SIZE(__pyx_args) > 1) {
+ __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_args);
+ if (unlikely(!__pyx_v_args)) return NULL;
+ } else {
+ __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
+ }
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[1] = {0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ default:
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "score") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_word = values[0];
+ } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_word = PyTuple_GET_ITEM(__pyx_args, 0);
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("score", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.score");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_word);
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_spam = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":288
+ * cdef int32 n_used
+ * cdef int32 score
+ * wid = ngram_wid(self.lm, word) # <<<<<<<<<<<<<<
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_wid = ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":289
+ * cdef int32 score
+ * wid = ngram_wid(self.lm, word)
+ * n_hist = len(args) # <<<<<<<<<<<<<<
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist:
+ */
+ __pyx_t_2 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_n_hist = __pyx_t_2;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":290
+ * wid = ngram_wid(self.lm, word)
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32)) # <<<<<<<<<<<<<<
+ * for i from 0 <= i < n_hist:
+ * spam = args[i]
+ */
+ __pyx_v_hist = ((__pyx_t_10sphinxbase_int32 *)ckd_calloc(__pyx_v_n_hist, (sizeof(__pyx_t_10sphinxbase_int32))));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":291
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist: # <<<<<<<<<<<<<<
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ */
+ __pyx_t_3 = __pyx_v_n_hist;
+ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
+ __pyx_t_5 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":292
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist:
+ * spam = args[i] # <<<<<<<<<<<<<<
+ * hist[i] = ngram_wid(self.lm, spam)
+ * score = ngram_ng_score(self.lm, wid, hist, n_hist, &n_used)
+ */
+ __pyx_t_5 = PyObject_GetItem(__pyx_v_args, __pyx_v_i); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_spam);
+ __pyx_v_spam = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":293
+ * for i from 0 <= i < n_hist:
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam) # <<<<<<<<<<<<<<
+ * score = ngram_ng_score(self.lm, wid, hist, n_hist, &n_used)
+ * ckd_free(hist)
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_spam); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ (__pyx_v_hist[__pyx_t_2]) = ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+ __pyx_t_4 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":291
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist: # <<<<<<<<<<<<<<
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ */
+ __pyx_t_5 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":294
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ * score = ngram_ng_score(self.lm, wid, hist, n_hist, &n_used) # <<<<<<<<<<<<<<
+ * ckd_free(hist)
+ * return logmath_log_to_ln(self.lmath, score), n_used
+ */
+ __pyx_v_score = ngram_ng_score(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_v_wid, __pyx_v_hist, __pyx_v_n_hist, (&__pyx_v_n_used));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":295
+ * hist[i] = ngram_wid(self.lm, spam)
+ * score = ngram_ng_score(self.lm, wid, hist, n_hist, &n_used)
+ * ckd_free(hist) # <<<<<<<<<<<<<<
+ * return logmath_log_to_ln(self.lmath, score), n_used
+ *
+ */
+ ckd_free(__pyx_v_hist);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":296
+ * score = ngram_ng_score(self.lm, wid, hist, n_hist, &n_used)
+ * ckd_free(hist)
+ * return logmath_log_to_ln(self.lmath, score), n_used # <<<<<<<<<<<<<<
+ *
+ * def prob(self, word, *args):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_5 = PyFloat_FromDouble(logmath_log_to_ln(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath, __pyx_v_score)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromLong(__pyx_v_n_used); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
+ __Pyx_GIVEREF(__pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.score");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_DECREF(__pyx_v_spam);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_word);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":298
+ * return logmath_log_to_ln(self.lmath, score), n_used
+ *
+ * def prob(self, word, *args): # <<<<<<<<<<<<<<
+ * """
+ * Get the log-probability for an N-Gram.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_prob(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_prob[] = "\n Get the log-probability for an N-Gram.\n\n This works effectively the same way as L{score}, except that\n any weights (language weight, insertion penalty) applied to\n the language model are ignored and the 'raw' probability value\n is returned.\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_prob(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_word = 0;
+ PyObject *__pyx_v_args = 0;
+ __pyx_t_10sphinxbase_int32 __pyx_v_wid;
+ __pyx_t_10sphinxbase_int32 *__pyx_v_hist;
+ __pyx_t_10sphinxbase_int32 __pyx_v_n_hist;
+ __pyx_t_10sphinxbase_int32 __pyx_v_n_used;
+ __pyx_t_10sphinxbase_int32 __pyx_v_score;
+ PyObject *__pyx_v_i;
+ PyObject *__pyx_v_spam;
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ Py_ssize_t __pyx_t_2;
+ __pyx_t_10sphinxbase_int32 __pyx_t_3;
+ long __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_7 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,0};
+ __Pyx_RefNannySetupContext("prob");
+ if (PyTuple_GET_SIZE(__pyx_args) > 1) {
+ __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_args);
+ if (unlikely(!__pyx_v_args)) return NULL;
+ } else {
+ __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
+ }
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[1] = {0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ default:
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "prob") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_word = values[0];
+ } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_word = PyTuple_GET_ITEM(__pyx_args, 0);
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("prob", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.prob");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_word);
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_spam = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":312
+ * cdef int32 n_used
+ * cdef int32 score
+ * wid = ngram_wid(self.lm, word) # <<<<<<<<<<<<<<
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_wid = ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":313
+ * cdef int32 score
+ * wid = ngram_wid(self.lm, word)
+ * n_hist = len(args) # <<<<<<<<<<<<<<
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist:
+ */
+ __pyx_t_2 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_n_hist = __pyx_t_2;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":314
+ * wid = ngram_wid(self.lm, word)
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32)) # <<<<<<<<<<<<<<
+ * for i from 0 <= i < n_hist:
+ * spam = args[i]
+ */
+ __pyx_v_hist = ((__pyx_t_10sphinxbase_int32 *)ckd_calloc(__pyx_v_n_hist, (sizeof(__pyx_t_10sphinxbase_int32))));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":315
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist: # <<<<<<<<<<<<<<
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ */
+ __pyx_t_3 = __pyx_v_n_hist;
+ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
+ __pyx_t_5 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":316
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist:
+ * spam = args[i] # <<<<<<<<<<<<<<
+ * hist[i] = ngram_wid(self.lm, spam)
+ * score = ngram_ng_prob(self.lm, wid, hist, n_hist, &n_used)
+ */
+ __pyx_t_5 = PyObject_GetItem(__pyx_v_args, __pyx_v_i); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_spam);
+ __pyx_v_spam = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":317
+ * for i from 0 <= i < n_hist:
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam) # <<<<<<<<<<<<<<
+ * score = ngram_ng_prob(self.lm, wid, hist, n_hist, &n_used)
+ * ckd_free(hist)
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_spam); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ (__pyx_v_hist[__pyx_t_2]) = ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+ __pyx_t_4 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":315
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist: # <<<<<<<<<<<<<<
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ */
+ __pyx_t_5 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":318
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ * score = ngram_ng_prob(self.lm, wid, hist, n_hist, &n_used) # <<<<<<<<<<<<<<
+ * ckd_free(hist)
+ * return logmath_log_to_ln(self.lmath, score), n_used
+ */
+ __pyx_v_score = ngram_ng_prob(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_v_wid, __pyx_v_hist, __pyx_v_n_hist, (&__pyx_v_n_used));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":319
+ * hist[i] = ngram_wid(self.lm, spam)
+ * score = ngram_ng_prob(self.lm, wid, hist, n_hist, &n_used)
+ * ckd_free(hist) # <<<<<<<<<<<<<<
+ * return logmath_log_to_ln(self.lmath, score), n_used
+ *
+ */
+ ckd_free(__pyx_v_hist);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":320
+ * score = ngram_ng_prob(self.lm, wid, hist, n_hist, &n_used)
+ * ckd_free(hist)
+ * return logmath_log_to_ln(self.lmath, score), n_used # <<<<<<<<<<<<<<
+ *
+ * def mgrams(self, m):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_5 = PyFloat_FromDouble(logmath_log_to_ln(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lmath, __pyx_v_score)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromLong(__pyx_v_n_used); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
+ __Pyx_GIVEREF(__pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.prob");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_DECREF(__pyx_v_spam);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_word);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":322
+ * return logmath_log_to_ln(self.lmath, score), n_used
+ *
+ * def mgrams(self, m): # <<<<<<<<<<<<<<
+ * """
+ * Return an iterator over each N-gram of order m+1.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_mgrams(PyObject *__pyx_v_self, PyObject *__pyx_v_m); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_mgrams[] = "\n Return an iterator over each N-gram of order m+1.\n\n This allows Pythonic iteration over the parameters of an\n N-Gram model.\n\n @param m: Order of requested N-grams minus one\n @type m: int\n @return: Iterator over M+1-grams\n @rtype: NGramIter\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_mgrams(PyObject *__pyx_v_self, PyObject *__pyx_v_m) {
+ struct __pyx_obj_10sphinxbase_NGramIter *__pyx_v_itor;
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ __Pyx_RefNannySetupContext("mgrams");
+ __pyx_v_itor = ((struct __pyx_obj_10sphinxbase_NGramIter *)Py_None); __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":335
+ * """
+ * cdef NGramIter itor
+ * itor = NGramIter(self, m) # <<<<<<<<<<<<<<
+ * itor.itor = ngram_model_mgrams(self.lm, m)
+ * return itor
+ */
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_self);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
+ __Pyx_GIVEREF(__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_m);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m);
+ __Pyx_GIVEREF(__pyx_v_m);
+ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_10sphinxbase_NGramIter)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_itor));
+ __pyx_v_itor = ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_t_2);
+ __pyx_t_2 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":336
+ * cdef NGramIter itor
+ * itor = NGramIter(self, m)
+ * itor.itor = ngram_model_mgrams(self.lm, m) # <<<<<<<<<<<<<<
+ * return itor
+ *
+ */
+ __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_m); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_itor->itor = ngram_model_mgrams(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_3);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":337
+ * itor = NGramIter(self, m)
+ * itor.itor = ngram_model_mgrams(self.lm, m)
+ * return itor # <<<<<<<<<<<<<<
+ *
+ * def ngram(self, word, *args):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_itor));
+ __pyx_r = ((PyObject *)__pyx_v_itor);
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.mgrams");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_itor);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":339
+ * return itor
+ *
+ * def ngram(self, word, *args): # <<<<<<<<<<<<<<
+ * """
+ * Return an N-Gram iterator pointing to a given N-gram.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_ngram(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_10NGramModel_ngram[] = "\n Return an N-Gram iterator pointing to a given N-gram.\n\n This allows you to iterate over its successors among other\n things.\n\n @param word: Head word of requested N-gram.\n @type word: str\n @param args: History words of requested N-gram\n @type args: str\n @return: Iterator pointing to N-gram.\n ";
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_ngram(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_word = 0;
+ PyObject *__pyx_v_args = 0;
+ struct __pyx_obj_10sphinxbase_NGramIter *__pyx_v_itor;
+ __pyx_t_10sphinxbase_int32 __pyx_v_wid;
+ __pyx_t_10sphinxbase_int32 *__pyx_v_hist;
+ __pyx_t_10sphinxbase_int32 __pyx_v_n_hist;
+ PyObject *__pyx_v_i;
+ PyObject *__pyx_v_spam;
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ Py_ssize_t __pyx_t_2;
+ __pyx_t_10sphinxbase_int32 __pyx_t_3;
+ long __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,0};
+ __Pyx_RefNannySetupContext("ngram");
+ if (PyTuple_GET_SIZE(__pyx_args) > 1) {
+ __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_args);
+ if (unlikely(!__pyx_v_args)) return NULL;
+ } else {
+ __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
+ }
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[1] = {0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ default:
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ }
+ if (unlikely(kw_args > 0)) {
+ const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "ngram") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_word = values[0];
+ } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_word = PyTuple_GET_ITEM(__pyx_args, 0);
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("ngram", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.ngram");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_word);
+ __pyx_v_itor = ((struct __pyx_obj_10sphinxbase_NGramIter *)Py_None); __Pyx_INCREF(Py_None);
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_spam = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":356
+ * cdef int32 *hist
+ * cdef int32 n_hist
+ * wid = ngram_wid(self.lm, word) # <<<<<<<<<<<<<<
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_wid = ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":357
+ * cdef int32 n_hist
+ * wid = ngram_wid(self.lm, word)
+ * n_hist = len(args) # <<<<<<<<<<<<<<
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist:
+ */
+ __pyx_t_2 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_n_hist = __pyx_t_2;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":358
+ * wid = ngram_wid(self.lm, word)
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32)) # <<<<<<<<<<<<<<
+ * for i from 0 <= i < n_hist:
+ * spam = args[i]
+ */
+ __pyx_v_hist = ((__pyx_t_10sphinxbase_int32 *)ckd_calloc(__pyx_v_n_hist, (sizeof(__pyx_t_10sphinxbase_int32))));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":359
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist: # <<<<<<<<<<<<<<
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ */
+ __pyx_t_3 = __pyx_v_n_hist;
+ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
+ __pyx_t_5 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":360
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist:
+ * spam = args[i] # <<<<<<<<<<<<<<
+ * hist[i] = ngram_wid(self.lm, spam)
+ * itor = NGramIter(self, n_hist)
+ */
+ __pyx_t_5 = PyObject_GetItem(__pyx_v_args, __pyx_v_i); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_spam);
+ __pyx_v_spam = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":361
+ * for i from 0 <= i < n_hist:
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam) # <<<<<<<<<<<<<<
+ * itor = NGramIter(self, n_hist)
+ * # We do set_iter here, because we're returning something the
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_spam); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ (__pyx_v_hist[__pyx_t_2]) = ngram_wid(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+ __pyx_t_4 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":359
+ * n_hist = len(args)
+ * hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ * for i from 0 <= i < n_hist: # <<<<<<<<<<<<<<
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ */
+ __pyx_t_5 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_5;
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":362
+ * spam = args[i]
+ * hist[i] = ngram_wid(self.lm, spam)
+ * itor = NGramIter(self, n_hist) # <<<<<<<<<<<<<<
+ * # We do set_iter here, because we're returning something the
+ * # user is immediately going to do stuff with.
+ */
+ __pyx_t_5 = PyInt_FromLong(__pyx_v_n_hist); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_v_self);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_self);
+ __Pyx_GIVEREF(__pyx_v_self);
+ PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_5 = 0;
+ __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_10sphinxbase_NGramIter)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_itor));
+ __pyx_v_itor = ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_t_5);
+ __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":365
+ * # We do set_iter here, because we're returning something the
+ * # user is immediately going to do stuff with.
+ * itor.set_iter(ngram_ng_iter(self.lm, wid, hist, n_hist)) # <<<<<<<<<<<<<<
+ * ckd_free(hist)
+ * return itor
+ */
+ __pyx_t_5 = ((struct __pyx_vtabstruct_10sphinxbase_NGramIter *)__pyx_v_itor->__pyx_vtab)->set_iter(__pyx_v_itor, ngram_ng_iter(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_v_wid, __pyx_v_hist, __pyx_v_n_hist)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":366
+ * # user is immediately going to do stuff with.
+ * itor.set_iter(ngram_ng_iter(self.lm, wid, hist, n_hist))
+ * ckd_free(hist) # <<<<<<<<<<<<<<
+ * return itor
+ *
+ */
+ ckd_free(__pyx_v_hist);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":367
+ * itor.set_iter(ngram_ng_iter(self.lm, wid, hist, n_hist))
+ * ckd_free(hist)
+ * return itor # <<<<<<<<<<<<<<
+ *
+ * def add_word(self, word, weight=1.0):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_itor));
+ __pyx_r = ((PyObject *)__pyx_v_itor);
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.ngram");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_args);
+ __Pyx_DECREF((PyObject *)__pyx_v_itor);
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_DECREF(__pyx_v_spam);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_word);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":369
+ * return itor
+ *
+ * def add_word(self, word, weight=1.0): # <<<<<<<<<<<<<<
+ * return ngram_model_add_word(self.lm, word, weight)
+ *
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_add_word(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_add_word(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_word = 0;
+ PyObject *__pyx_v_weight = 0;
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ __pyx_t_10sphinxbase_float32 __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,&__pyx_n_s__weight,0};
+ __Pyx_RefNannySetupContext("add_word");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ values[1] = __pyx_k_8;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weight);
+ if (unlikely(value)) { values[1] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "add_word") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_word = values[0];
+ __pyx_v_weight = values[1];
+ } else {
+ __pyx_v_weight = __pyx_k_8;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: __pyx_v_weight = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: __pyx_v_word = PyTuple_GET_ITEM(__pyx_args, 0);
+ break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("add_word", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.add_word");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":370
+ *
+ * def add_word(self, word, weight=1.0):
+ * return ngram_model_add_word(self.lm, word, weight) # <<<<<<<<<<<<<<
+ *
+ * def recode(self, frum, too):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(ngram_model_add_word(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1, __pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.add_word");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":372
+ * return ngram_model_add_word(self.lm, word, weight)
+ *
+ * def recode(self, frum, too): # <<<<<<<<<<<<<<
+ * cdef int rv
+ * rv = ngram_model_recode(self.lm, frum, too)
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_recode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_recode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_frum = 0;
+ PyObject *__pyx_v_too = 0;
+ int __pyx_v_rv;
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ char *__pyx_t_2;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__frum,&__pyx_n_s__too,0};
+ __Pyx_RefNannySetupContext("recode");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__frum);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__too);
+ if (likely(values[1])) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("recode", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "recode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_frum = values[0];
+ __pyx_v_too = values[1];
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_frum = PyTuple_GET_ITEM(__pyx_args, 0);
+ __pyx_v_too = PyTuple_GET_ITEM(__pyx_args, 1);
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("recode", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.recode");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_frum);
+ __Pyx_INCREF(__pyx_v_too);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":374
+ * def recode(self, frum, too):
+ * cdef int rv
+ * rv = ngram_model_recode(self.lm, frum, too) # <<<<<<<<<<<<<<
+ * if rv == -1:
+ * raise ValueError, "Recode from %s to %s failed" % (frum, too)
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_frum); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_too); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_rv = ngram_model_recode(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1, __pyx_t_2);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":375
+ * cdef int rv
+ * rv = ngram_model_recode(self.lm, frum, too)
+ * if rv == -1: # <<<<<<<<<<<<<<
+ * raise ValueError, "Recode from %s to %s failed" % (frum, too)
+ *
+ */
+ __pyx_t_3 = (__pyx_v_rv == -1);
+ if (__pyx_t_3) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":376
+ * rv = ngram_model_recode(self.lm, frum, too)
+ * if rv == -1:
+ * raise ValueError, "Recode from %s to %s failed" % (frum, too) # <<<<<<<<<<<<<<
+ *
+ * def casefold(self, kase):
+ */
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_v_frum);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_frum);
+ __Pyx_GIVEREF(__pyx_v_frum);
+ __Pyx_INCREF(__pyx_v_too);
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_too);
+ __Pyx_GIVEREF(__pyx_v_too);
+ __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_5, 0);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.recode");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_frum);
+ __Pyx_DECREF(__pyx_v_too);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":378
+ * raise ValueError, "Recode from %s to %s failed" % (frum, too)
+ *
+ * def casefold(self, kase): # <<<<<<<<<<<<<<
+ * cdef int rv
+ * rv = ngram_model_casefold(self.lm, kase)
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_casefold(PyObject *__pyx_v_self, PyObject *__pyx_v_kase); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_casefold(PyObject *__pyx_v_self, PyObject *__pyx_v_kase) {
+ int __pyx_v_rv;
+ PyObject *__pyx_r = NULL;
+ ngram_case_t __pyx_t_1;
+ int __pyx_t_2;
+ __Pyx_RefNannySetupContext("casefold");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_kase);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":380
+ * def casefold(self, kase):
+ * cdef int rv
+ * rv = ngram_model_casefold(self.lm, kase) # <<<<<<<<<<<<<<
+ * if rv == -1:
+ * raise ValueError, "Casefolding failed"
+ */
+ __pyx_t_1 = ((ngram_case_t)PyInt_AsLong(__pyx_v_kase)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_rv = ngram_model_casefold(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":381
+ * cdef int rv
+ * rv = ngram_model_casefold(self.lm, kase)
+ * if rv == -1: # <<<<<<<<<<<<<<
+ * raise ValueError, "Casefolding failed"
+ *
+ */
+ __pyx_t_2 = (__pyx_v_rv == -1);
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":382
+ * rv = ngram_model_casefold(self.lm, kase)
+ * if rv == -1:
+ * raise ValueError, "Casefolding failed" # <<<<<<<<<<<<<<
+ *
+ * def write(self, file_name, format=NGRAM_AUTO):
+ */
+ __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_s_10), 0);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.casefold");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_kase);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":384
+ * raise ValueError, "Casefolding failed"
+ *
+ * def write(self, file_name, format=NGRAM_AUTO): # <<<<<<<<<<<<<<
+ * cdef int rv
+ * rv = ngram_model_write(self.lm, file_name, format)
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_10NGramModel_write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_file_name = 0;
+ PyObject *__pyx_v_format = 0;
+ int __pyx_v_rv;
+ PyObject *__pyx_r = NULL;
+ char *__pyx_t_1;
+ ngram_file_type_t __pyx_t_2;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__file_name,&__pyx_n_s__format,0};
+ __Pyx_RefNannySetupContext("write");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ values[1] = __pyx_k_11;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file_name);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__format);
+ if (unlikely(value)) { values[1] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "write") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_file_name = values[0];
+ __pyx_v_format = values[1];
+ } else {
+ __pyx_v_format = __pyx_k_11;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: __pyx_v_format = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: __pyx_v_file_name = PyTuple_GET_ITEM(__pyx_args, 0);
+ break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("write", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramModel.write");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_file_name);
+ __Pyx_INCREF(__pyx_v_format);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":386
+ * def write(self, file_name, format=NGRAM_AUTO):
+ * cdef int rv
+ * rv = ngram_model_write(self.lm, file_name, format) # <<<<<<<<<<<<<<
+ * if rv == -1:
+ * raise ValueError, "Write %s to file failed" % file_name
+ */
+ __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_file_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((ngram_file_type_t)PyInt_AsLong(__pyx_v_format)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_rv = ngram_model_write(((struct __pyx_obj_10sphinxbase_NGramModel *)__pyx_v_self)->lm, __pyx_t_1, __pyx_t_2);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":387
+ * cdef int rv
+ * rv = ngram_model_write(self.lm, file_name, format)
+ * if rv == -1: # <<<<<<<<<<<<<<
+ * raise ValueError, "Write %s to file failed" % file_name
+ *
+ */
+ __pyx_t_3 = (__pyx_v_rv == -1);
+ if (__pyx_t_3) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":388
+ * rv = ngram_model_write(self.lm, file_name, format)
+ * if rv == -1:
+ * raise ValueError, "Write %s to file failed" % file_name # <<<<<<<<<<<<<<
+ *
+ * cdef class NGramIter:
+ */
+ __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_12), __pyx_v_file_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_4, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.NGramModel.write");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_file_name);
+ __Pyx_DECREF(__pyx_v_format);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":397
+ * language model.
+ * """
+ * def __cinit__(self, NGramModel lm, int m): # <<<<<<<<<<<<<<
+ * self.itor = NULL
+ * self.lm = lm
+ */
+
+static int __pyx_pf_10sphinxbase_9NGramIter___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pf_10sphinxbase_9NGramIter___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ struct __pyx_obj_10sphinxbase_NGramModel *__pyx_v_lm = 0;
+ int __pyx_v_m;
+ int __pyx_r;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lm,&__pyx_n_s__m,0};
+ __Pyx_RefNannySetupContext("__cinit__");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lm);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__m);
+ if (likely(values[1])) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_lm = ((struct __pyx_obj_10sphinxbase_NGramModel *)values[0]);
+ __pyx_v_m = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_lm = ((struct __pyx_obj_10sphinxbase_NGramModel *)PyTuple_GET_ITEM(__pyx_args, 0));
+ __pyx_v_m = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramIter.__cinit__");
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lm), __pyx_ptype_10sphinxbase_NGramModel, 1, "lm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":398
+ * """
+ * def __cinit__(self, NGramModel lm, int m):
+ * self.itor = NULL # <<<<<<<<<<<<<<
+ * self.lm = lm
+ * self.m = m
+ */
+ ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->itor = NULL;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":399
+ * def __cinit__(self, NGramModel lm, int m):
+ * self.itor = NULL
+ * self.lm = lm # <<<<<<<<<<<<<<
+ * self.m = m
+ * self.first_item = True
+ */
+ __Pyx_INCREF(((PyObject *)__pyx_v_lm));
+ __Pyx_GIVEREF(((PyObject *)__pyx_v_lm));
+ __Pyx_GOTREF(((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->lm);
+ __Pyx_DECREF(((PyObject *)((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->lm));
+ ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->lm = __pyx_v_lm;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":400
+ * self.itor = NULL
+ * self.lm = lm
+ * self.m = m # <<<<<<<<<<<<<<
+ * self.first_item = True
+ *
+ */
+ ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->m = __pyx_v_m;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":401
+ * self.lm = lm
+ * self.m = m
+ * self.first_item = True # <<<<<<<<<<<<<<
+ *
+ * def __iter__(self):
+ */
+ ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->first_item = 1;
+
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_AddTraceback("sphinxbase.NGramIter.__cinit__");
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":403
+ * self.first_item = True
+ *
+ * def __iter__(self): # <<<<<<<<<<<<<<
+ * self.first_item = True
+ * return self
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_9NGramIter___iter__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_9NGramIter___iter__(PyObject *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannySetupContext("__iter__");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":404
+ *
+ * def __iter__(self):
+ * self.first_item = True # <<<<<<<<<<<<<<
+ * return self
+ *
+ */
+ ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->first_item = 1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":405
+ * def __iter__(self):
+ * self.first_item = True
+ * return self # <<<<<<<<<<<<<<
+ *
+ * cdef set_iter(NGramIter self, ngram_iter_t *itor):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_self);
+ __pyx_r = __pyx_v_self;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":407
+ * return self
+ *
+ * cdef set_iter(NGramIter self, ngram_iter_t *itor): # <<<<<<<<<<<<<<
+ * cdef int32 prob, bowt
+ * cdef int32 *wids
+ */
+
+static PyObject *__pyx_f_10sphinxbase_9NGramIter_set_iter(struct __pyx_obj_10sphinxbase_NGramIter *__pyx_v_self, ngram_iter_t *__pyx_v_itor) {
+ __pyx_t_10sphinxbase_int32 __pyx_v_prob;
+ __pyx_t_10sphinxbase_int32 __pyx_v_bowt;
+ __pyx_t_10sphinxbase_int32 *__pyx_v_wids;
+ PyObject *__pyx_v_i;
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ Py_ssize_t __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ Py_ssize_t __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ __Pyx_RefNannySetupContext("set_iter");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":411
+ * cdef int32 *wids
+ *
+ * if itor == NULL: # <<<<<<<<<<<<<<
+ * raise StopIteration
+ * self.itor = itor
+ */
+ __pyx_t_1 = (__pyx_v_itor == NULL);
+ if (__pyx_t_1) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":412
+ *
+ * if itor == NULL:
+ * raise StopIteration # <<<<<<<<<<<<<<
+ * self.itor = itor
+ * if self.first_item:
+ */
+ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L3;
+ }
+ __pyx_L3:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":413
+ * if itor == NULL:
+ * raise StopIteration
+ * self.itor = itor # <<<<<<<<<<<<<<
+ * if self.first_item:
+ * self.first_item = False
+ */
+ __pyx_v_self->itor = __pyx_v_itor;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":414
+ * raise StopIteration
+ * self.itor = itor
+ * if self.first_item: # <<<<<<<<<<<<<<
+ * self.first_item = False
+ * wids = ngram_iter_get(itor, &prob, &bowt)
+ */
+ __pyx_t_2 = __pyx_v_self->first_item;
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":415
+ * self.itor = itor
+ * if self.first_item:
+ * self.first_item = False # <<<<<<<<<<<<<<
+ * wids = ngram_iter_get(itor, &prob, &bowt)
+ * self.log_prob = logmath_log_to_ln(self.lm.lmath, prob)
+ */
+ __pyx_v_self->first_item = 0;
+ goto __pyx_L4;
+ }
+ __pyx_L4:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":416
+ * if self.first_item:
+ * self.first_item = False
+ * wids = ngram_iter_get(itor, &prob, &bowt) # <<<<<<<<<<<<<<
+ * self.log_prob = logmath_log_to_ln(self.lm.lmath, prob)
+ * self.log_bowt = logmath_log_to_ln(self.lm.lmath, bowt)
+ */
+ __pyx_v_wids = ngram_iter_get(__pyx_v_itor, (&__pyx_v_prob), (&__pyx_v_bowt));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":417
+ * self.first_item = False
+ * wids = ngram_iter_get(itor, &prob, &bowt)
+ * self.log_prob = logmath_log_to_ln(self.lm.lmath, prob) # <<<<<<<<<<<<<<
+ * self.log_bowt = logmath_log_to_ln(self.lm.lmath, bowt)
+ * self.words = []
+ */
+ __pyx_v_self->log_prob = logmath_log_to_ln(__pyx_v_self->lm->lmath, __pyx_v_prob);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":418
+ * wids = ngram_iter_get(itor, &prob, &bowt)
+ * self.log_prob = logmath_log_to_ln(self.lm.lmath, prob)
+ * self.log_bowt = logmath_log_to_ln(self.lm.lmath, bowt) # <<<<<<<<<<<<<<
+ * self.words = []
+ * for i in range(0, self.m+1):
+ */
+ __pyx_v_self->log_bowt = logmath_log_to_ln(__pyx_v_self->lm->lmath, __pyx_v_bowt);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":419
+ * self.log_prob = logmath_log_to_ln(self.lm.lmath, prob)
+ * self.log_bowt = logmath_log_to_ln(self.lm.lmath, bowt)
+ * self.words = [] # <<<<<<<<<<<<<<
+ * for i in range(0, self.m+1):
+ * self.words.append(ngram_word(self.lm.lm, wids[i]))
+ */
+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+ __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+ __Pyx_GOTREF(__pyx_v_self->words);
+ __Pyx_DECREF(__pyx_v_self->words);
+ __pyx_v_self->words = ((PyObject *)__pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":420
+ * self.log_bowt = logmath_log_to_ln(self.lm.lmath, bowt)
+ * self.words = []
+ * for i in range(0, self.m+1): # <<<<<<<<<<<<<<
+ * self.words.append(ngram_word(self.lm.lm, wids[i]))
+ *
+ */
+ __pyx_t_3 = PyInt_FromLong((__pyx_v_self->m + 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_int_0);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_0);
+ __Pyx_GIVEREF(__pyx_int_0);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
+ __pyx_t_4 = 0; __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5);
+ } else {
+ __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_5))) {
+ if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_5))) {
+ if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++;
+ } else {
+ __pyx_t_3 = PyIter_Next(__pyx_t_5);
+ if (!__pyx_t_3) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":421
+ * self.words = []
+ * for i in range(0, self.m+1):
+ * self.words.append(ngram_word(self.lm.lm, wids[i])) # <<<<<<<<<<<<<<
+ *
+ * def __next__(self):
+ */
+ __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyBytes_FromString(ngram_word(__pyx_v_self->lm->lm, (__pyx_v_wids[__pyx_t_6]))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+ __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_self->words, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ }
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_AddTraceback("sphinxbase.NGramIter.set_iter");
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":423
+ * self.words.append(ngram_word(self.lm.lm, wids[i]))
+ *
+ * def __next__(self): # <<<<<<<<<<<<<<
+ * if self.first_item:
+ * self.set_iter(self.itor)
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_9NGramIter___next__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_9NGramIter___next__(PyObject *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("__next__");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":424
+ *
+ * def __next__(self):
+ * if self.first_item: # <<<<<<<<<<<<<<
+ * self.set_iter(self.itor)
+ * else:
+ */
+ __pyx_t_1 = ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->first_item;
+ if (__pyx_t_1) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":425
+ * def __next__(self):
+ * if self.first_item:
+ * self.set_iter(self.itor) # <<<<<<<<<<<<<<
+ * else:
+ * self.set_iter(ngram_iter_next(self.itor))
+ */
+ __pyx_t_2 = ((struct __pyx_vtabstruct_10sphinxbase_NGramIter *)((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->__pyx_vtab)->set_iter(((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self), ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->itor); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L5;
+ }
+ /*else*/ {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":427
+ * self.set_iter(self.itor)
+ * else:
+ * self.set_iter(ngram_iter_next(self.itor)) # <<<<<<<<<<<<<<
+ * return self
+ *
+ */
+ __pyx_t_2 = ((struct __pyx_vtabstruct_10sphinxbase_NGramIter *)((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->__pyx_vtab)->set_iter(((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self), ngram_iter_next(((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->itor)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":428
+ * else:
+ * self.set_iter(ngram_iter_next(self.itor))
+ * return self # <<<<<<<<<<<<<<
+ *
+ * def successors(self):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_self);
+ __pyx_r = __pyx_v_self;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.NGramIter.__next__");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":430
+ * return self
+ *
+ * def successors(self): # <<<<<<<<<<<<<<
+ * """
+ * Get an iterator over N+1-gram successors of an N-gram.
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_9NGramIter_successors(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static char __pyx_doc_10sphinxbase_9NGramIter_successors[] = "\n Get an iterator over N+1-gram successors of an N-gram.\n ";
+static PyObject *__pyx_pf_10sphinxbase_9NGramIter_successors(PyObject *__pyx_v_self, PyObject *unused) {
+ struct __pyx_obj_10sphinxbase_NGramIter *__pyx_v_itor;
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ __Pyx_RefNannySetupContext("successors");
+ __pyx_v_itor = ((struct __pyx_obj_10sphinxbase_NGramIter *)Py_None); __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":435
+ * """
+ * cdef NGramIter itor
+ * itor = NGramIter(self.lm, self.m + 1) # <<<<<<<<<<<<<<
+ * itor.itor = ngram_iter_successors(self.itor)
+ * return itor
+ */
+ __pyx_t_1 = PyInt_FromLong((((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->m + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_INCREF(((PyObject *)((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->lm));
+ PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->lm));
+ __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->lm));
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_10sphinxbase_NGramIter)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_itor));
+ __pyx_v_itor = ((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":436
+ * cdef NGramIter itor
+ * itor = NGramIter(self.lm, self.m + 1)
+ * itor.itor = ngram_iter_successors(self.itor) # <<<<<<<<<<<<<<
+ * return itor
+ *
+ */
+ __pyx_v_itor->itor = ngram_iter_successors(((struct __pyx_obj_10sphinxbase_NGramIter *)__pyx_v_self)->itor);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":437
+ * itor = NGramIter(self.lm, self.m + 1)
+ * itor.itor = ngram_iter_successors(self.itor)
+ * return itor # <<<<<<<<<<<<<<
+ *
+ * def binstr(str val, int nbits):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_itor));
+ __pyx_r = ((PyObject *)__pyx_v_itor);
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("sphinxbase.NGramIter.successors");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_itor);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":439
+ * return itor
+ *
+ * def binstr(str val, int nbits): # <<<<<<<<<<<<<<
+ * """
+ * Silly function to format a string as a binary string
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_binstr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_binstr[] = "\n Silly function to format a string as a binary string\n ";
+static PyObject *__pyx_pf_10sphinxbase_binstr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_val = 0;
+ int __pyx_v_nbits;
+ int __pyx_v_i;
+ PyObject *__pyx_v_outstr;
+ PyObject *__pyx_v_c;
+ PyObject *__pyx_v_cval;
+ PyObject *__pyx_v_cnb;
+ PyObject *__pyx_r = NULL;
+ Py_ssize_t __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ long __pyx_t_5;
+ int __pyx_t_6;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__val,&__pyx_n_s__nbits,0};
+ __Pyx_RefNannySetupContext("binstr");
+ __pyx_self = __pyx_self;
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__val);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nbits);
+ if (likely(values[1])) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("binstr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "binstr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_val = ((PyObject *)values[0]);
+ __pyx_v_nbits = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_nbits == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_val = ((PyObject *)PyTuple_GET_ITEM(__pyx_args, 0));
+ __pyx_v_nbits = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_nbits == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("binstr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.binstr");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF(__pyx_v_val);
+ __pyx_v_outstr = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_c = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_cval = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_cnb = Py_None; __Pyx_INCREF(Py_None);
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_val), &PyString_Type, 1, "val", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":444
+ * """
+ * cdef int i
+ * outstr = "" # <<<<<<<<<<<<<<
+ * for c in val:
+ * cval = ord(c)
+ */
+ __Pyx_INCREF(((PyObject *)__pyx_kp_s_13));
+ __Pyx_DECREF(__pyx_v_outstr);
+ __pyx_v_outstr = ((PyObject *)__pyx_kp_s_13);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":445
+ * cdef int i
+ * outstr = ""
+ * for c in val: # <<<<<<<<<<<<<<
+ * cval = ord(c)
+ * cnb = min(8, nbits)
+ */
+ __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_val)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ for (;;) {
+ {
+ __pyx_t_3 = PyIter_Next(__pyx_t_2);
+ if (!__pyx_t_3) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_DECREF(__pyx_v_c);
+ __pyx_v_c = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":446
+ * outstr = ""
+ * for c in val:
+ * cval = ord(c) # <<<<<<<<<<<<<<
+ * cnb = min(8, nbits)
+ * for i in range(0,cnb):
+ */
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_c);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_c);
+ __Pyx_GIVEREF(__pyx_v_c);
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_ord, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_v_cval);
+ __pyx_v_cval = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":447
+ * for c in val:
+ * cval = ord(c)
+ * cnb = min(8, nbits) # <<<<<<<<<<<<<<
+ * for i in range(0,cnb):
+ * outstr += "%d" % ((cval & (1 << 7-i)) != 0)
+ */
+ __pyx_t_4 = PyInt_FromLong(__pyx_v_nbits); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_int_8);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_8);
+ __Pyx_GIVEREF(__pyx_int_8);
+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_min, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_v_cnb);
+ __pyx_v_cnb = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":448
+ * cval = ord(c)
+ * cnb = min(8, nbits)
+ * for i in range(0,cnb): # <<<<<<<<<<<<<<
+ * outstr += "%d" % ((cval & (1 << 7-i)) != 0)
+ * nbits -= 8
+ */
+ __pyx_t_5 = __Pyx_PyInt_AsLong(__pyx_v_cnb); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
+ __pyx_v_i = __pyx_t_6;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":449
+ * cnb = min(8, nbits)
+ * for i in range(0,cnb):
+ * outstr += "%d" % ((cval & (1 << 7-i)) != 0) # <<<<<<<<<<<<<<
+ * nbits -= 8
+ * return outstr
+ */
+ __pyx_t_4 = PyInt_FromLong((1 << (7 - __pyx_v_i))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyNumber_And(__pyx_v_cval, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_NE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_14), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_outstr, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_v_outstr);
+ __pyx_v_outstr = __pyx_t_4;
+ __pyx_t_4 = 0;
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":450
+ * for i in range(0,cnb):
+ * outstr += "%d" % ((cval & (1 << 7-i)) != 0)
+ * nbits -= 8 # <<<<<<<<<<<<<<
+ * return outstr
+ *
+ */
+ __pyx_v_nbits -= 8;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":451
+ * outstr += "%d" % ((cval & (1 << 7-i)) != 0)
+ * nbits -= 8
+ * return outstr # <<<<<<<<<<<<<<
+ *
+ * def bincw(int cw, int nbits):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_outstr);
+ __pyx_r = __pyx_v_outstr;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.binstr");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_outstr);
+ __Pyx_DECREF(__pyx_v_c);
+ __Pyx_DECREF(__pyx_v_cval);
+ __Pyx_DECREF(__pyx_v_cnb);
+ __Pyx_DECREF(__pyx_v_val);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":453
+ * return outstr
+ *
+ * def bincw(int cw, int nbits): # <<<<<<<<<<<<<<
+ * """
+ * Silly function to format an int as a binary string
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_bincw(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_10sphinxbase_bincw[] = "\n Silly function to format an int as a binary string\n ";
+static PyObject *__pyx_pf_10sphinxbase_bincw(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ int __pyx_v_cw;
+ int __pyx_v_nbits;
+ int __pyx_v_i;
+ PyObject *__pyx_v_outstr;
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__cw,&__pyx_n_s__nbits,0};
+ __Pyx_RefNannySetupContext("bincw");
+ __pyx_self = __pyx_self;
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__cw);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nbits);
+ if (likely(values[1])) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("bincw", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "bincw") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_cw = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_cw == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_nbits = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_nbits == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_cw = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_cw == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_nbits = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_nbits == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("bincw", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.bincw");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_v_outstr = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":458
+ * """
+ * cdef int i
+ * outstr = "" # <<<<<<<<<<<<<<
+ * for i in range(0,nbits):
+ * outstr = "%s" % (cw & 1) + outstr
+ */
+ __Pyx_INCREF(((PyObject *)__pyx_kp_s_13));
+ __Pyx_DECREF(__pyx_v_outstr);
+ __pyx_v_outstr = ((PyObject *)__pyx_kp_s_13);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":459
+ * cdef int i
+ * outstr = ""
+ * for i in range(0,nbits): # <<<<<<<<<<<<<<
+ * outstr = "%s" % (cw & 1) + outstr
+ * cw >>= 1
+ */
+ __pyx_t_1 = __pyx_v_nbits;
+ for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+ __pyx_v_i = __pyx_t_2;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":460
+ * outstr = ""
+ * for i in range(0,nbits):
+ * outstr = "%s" % (cw & 1) + outstr # <<<<<<<<<<<<<<
+ * cw >>= 1
+ * return outstr
+ */
+ __pyx_t_3 = PyInt_FromLong((__pyx_v_cw & 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_15), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_v_outstr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_v_outstr);
+ __pyx_v_outstr = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":461
+ * for i in range(0,nbits):
+ * outstr = "%s" % (cw & 1) + outstr
+ * cw >>= 1 # <<<<<<<<<<<<<<
+ * return outstr
+ *
+ */
+ __pyx_v_cw >>= 1;
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":462
+ * outstr = "%s" % (cw & 1) + outstr
+ * cw >>= 1
+ * return outstr # <<<<<<<<<<<<<<
+ *
+ * # FIXME: Due to the style of IO in huff_code API this part of the code
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_v_outstr);
+ __pyx_r = __pyx_v_outstr;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.bincw");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_outstr);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":482
+ * @type infile: file | str
+ * """
+ * def __init__(self, alphabet=None, infile=None): # <<<<<<<<<<<<<<
+ * cdef char **symbols
+ * cdef int *frequencies
+ */
+
+static int __pyx_pf_10sphinxbase_8HuffCode___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pf_10sphinxbase_8HuffCode___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_alphabet = 0;
+ PyObject *__pyx_v_infile = 0;
+ char **__pyx_v_symbols;
+ int *__pyx_v_frequencies;
+ int __pyx_v_nsym;
+ PyObject *__pyx_v_bogus;
+ PyObject *__pyx_v_i;
+ PyObject *__pyx_v_spam;
+ PyObject *__pyx_v_sym;
+ PyObject *__pyx_v_freq;
+ int __pyx_r;
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_t_3;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ Py_ssize_t __pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ int __pyx_t_10;
+ Py_ssize_t __pyx_t_11;
+ char *__pyx_t_12;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alphabet,&__pyx_n_s__infile,0};
+ __Pyx_RefNannySetupContext("__init__");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ values[0] = ((PyObject *)Py_None);
+ values[1] = ((PyObject *)Py_None);
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alphabet);
+ if (unlikely(value)) { values[0] = value; kw_args--; }
+ }
+ case 1:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__infile);
+ if (unlikely(value)) { values[1] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_alphabet = values[0];
+ __pyx_v_infile = values[1];
+ } else {
+ __pyx_v_alphabet = ((PyObject *)Py_None);
+ __pyx_v_infile = ((PyObject *)Py_None);
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: __pyx_v_infile = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: __pyx_v_alphabet = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.HuffCode.__init__");
+ return -1;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_alphabet);
+ __Pyx_INCREF(__pyx_v_infile);
+ __pyx_v_bogus = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_spam = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_sym = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_freq = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":487
+ * cdef int nsym
+ *
+ * if alphabet == None and infile == None: # <<<<<<<<<<<<<<
+ * raise ValueError, "One of alphabet or infile must be passed to constructor"
+ * if alphabet != None and infile != None:
+ */
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_alphabet, Py_None, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_infile, Py_None, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_4 = __pyx_t_3;
+ } else {
+ __pyx_t_4 = __pyx_t_2;
+ }
+ if (__pyx_t_4) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":488
+ *
+ * if alphabet == None and infile == None:
+ * raise ValueError, "One of alphabet or infile must be passed to constructor" # <<<<<<<<<<<<<<
+ * if alphabet != None and infile != None:
+ * raise ValueError, "Only one of alphabet or infile must be passed to constructor"
+ */
+ __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_s_16), 0);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":489
+ * if alphabet == None and infile == None:
+ * raise ValueError, "One of alphabet or infile must be passed to constructor"
+ * if alphabet != None and infile != None: # <<<<<<<<<<<<<<
+ * raise ValueError, "Only one of alphabet or infile must be passed to constructor"
+ *
+ */
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_alphabet, Py_None, Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_4) {
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_infile, Py_None, Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = __pyx_t_2;
+ } else {
+ __pyx_t_3 = __pyx_t_4;
+ }
+ if (__pyx_t_3) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":490
+ * raise ValueError, "One of alphabet or infile must be passed to constructor"
+ * if alphabet != None and infile != None:
+ * raise ValueError, "Only one of alphabet or infile must be passed to constructor" # <<<<<<<<<<<<<<
+ *
+ * self.fh = None
+ */
+ __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_s_17), 0);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L7;
+ }
+ __pyx_L7:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":492
+ * raise ValueError, "Only one of alphabet or infile must be passed to constructor"
+ *
+ * self.fh = None # <<<<<<<<<<<<<<
+ * if infile:
+ * self.read(infile)
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh);
+ __Pyx_DECREF(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh);
+ ((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh = Py_None;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":493
+ *
+ * self.fh = None
+ * if infile: # <<<<<<<<<<<<<<
+ * self.read(infile)
+ * return
+ */
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_infile); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__pyx_t_3) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":494
+ * self.fh = None
+ * if infile:
+ * self.read(infile) # <<<<<<<<<<<<<<
+ * return
+ *
+ */
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__read); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_v_infile);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_infile);
+ __Pyx_GIVEREF(__pyx_v_infile);
+ __pyx_t_6 = PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":495
+ * if infile:
+ * self.read(infile)
+ * return # <<<<<<<<<<<<<<
+ *
+ * nsym = len(alphabet)
+ */
+ __pyx_r = 0;
+ goto __pyx_L0;
+ goto __pyx_L8;
+ }
+ __pyx_L8:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":497
+ * return
+ *
+ * nsym = len(alphabet) # <<<<<<<<<<<<<<
+ * frequencies = <int *>ckd_calloc(nsym, sizeof(int))
+ * symbols = <char **>ckd_calloc(nsym, sizeof(char *))
+ */
+ __pyx_t_7 = PyObject_Length(__pyx_v_alphabet); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_nsym = __pyx_t_7;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":498
+ *
+ * nsym = len(alphabet)
+ * frequencies = <int *>ckd_calloc(nsym, sizeof(int)) # <<<<<<<<<<<<<<
+ * symbols = <char **>ckd_calloc(nsym, sizeof(char *))
+ * # Need to create separate Python objects for each string,
+ */
+ __pyx_v_frequencies = ((int *)ckd_calloc(__pyx_v_nsym, (sizeof(int))));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":499
+ * nsym = len(alphabet)
+ * frequencies = <int *>ckd_calloc(nsym, sizeof(int))
+ * symbols = <char **>ckd_calloc(nsym, sizeof(char *)) # <<<<<<<<<<<<<<
+ * # Need to create separate Python objects for each string,
+ * # otherwise we get random duplicates of the codewords...
+ */
+ __pyx_v_symbols = ((char **)ckd_calloc(__pyx_v_nsym, (sizeof(char *))));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":502
+ * # Need to create separate Python objects for each string,
+ * # otherwise we get random duplicates of the codewords...
+ * bogus = [] # <<<<<<<<<<<<<<
+ * for i, spam in enumerate(alphabet):
+ * sym, freq = spam
+ */
+ __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+ __Pyx_DECREF(__pyx_v_bogus);
+ __pyx_v_bogus = ((PyObject *)__pyx_t_6);
+ __pyx_t_6 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":503
+ * # otherwise we get random duplicates of the codewords...
+ * bogus = []
+ * for i, spam in enumerate(alphabet): # <<<<<<<<<<<<<<
+ * sym, freq = spam
+ * bogus.append(repr(sym))
+ */
+ __Pyx_INCREF(__pyx_int_0);
+ __pyx_t_6 = __pyx_int_0;
+ if (PyList_CheckExact(__pyx_v_alphabet) || PyTuple_CheckExact(__pyx_v_alphabet)) {
+ __pyx_t_7 = 0; __pyx_t_5 = __pyx_v_alphabet; __Pyx_INCREF(__pyx_t_5);
+ } else {
+ __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_alphabet); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ }
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_5))) {
+ if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_5))) {
+ if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++;
+ } else {
+ __pyx_t_1 = PyIter_Next(__pyx_t_5);
+ if (!__pyx_t_1) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_1);
+ }
+ __Pyx_DECREF(__pyx_v_spam);
+ __pyx_v_spam = __pyx_t_1;
+ __pyx_t_1 = 0;
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_6;
+ __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6);
+ __pyx_t_6 = __pyx_t_1;
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":504
+ * bogus = []
+ * for i, spam in enumerate(alphabet):
+ * sym, freq = spam # <<<<<<<<<<<<<<
+ * bogus.append(repr(sym))
+ * frequencies[i] = freq
+ */
+ if (PyTuple_CheckExact(__pyx_v_spam) && likely(PyTuple_GET_SIZE(__pyx_v_spam) == 2)) {
+ PyObject* tuple = __pyx_v_spam;
+ __pyx_t_1 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_v_sym);
+ __pyx_v_sym = __pyx_t_1;
+ __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_v_freq);
+ __pyx_v_freq = __pyx_t_8;
+ __pyx_t_8 = 0;
+ } else {
+ __pyx_t_9 = PyObject_GetIter(__pyx_v_spam); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_8);
+ if (__Pyx_EndUnpack(__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_v_sym);
+ __pyx_v_sym = __pyx_t_1;
+ __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_v_freq);
+ __pyx_v_freq = __pyx_t_8;
+ __pyx_t_8 = 0;
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":505
+ * for i, spam in enumerate(alphabet):
+ * sym, freq = spam
+ * bogus.append(repr(sym)) # <<<<<<<<<<<<<<
+ * frequencies[i] = freq
+ * symbols[i] = bogus[-1]
+ */
+ __pyx_t_8 = PyObject_Repr(__pyx_v_sym); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_bogus, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":506
+ * sym, freq = spam
+ * bogus.append(repr(sym))
+ * frequencies[i] = freq # <<<<<<<<<<<<<<
+ * symbols[i] = bogus[-1]
+ * self.hc = huff_code_build_str(symbols, frequencies, nsym)
+ */
+ __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_freq); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ (__pyx_v_frequencies[__pyx_t_11]) = __pyx_t_10;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":507
+ * bogus.append(repr(sym))
+ * frequencies[i] = freq
+ * symbols[i] = bogus[-1] # <<<<<<<<<<<<<<
+ * self.hc = huff_code_build_str(symbols, frequencies, nsym)
+ * ckd_free(frequencies)
+ */
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_bogus, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_12 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ (__pyx_v_symbols[__pyx_t_11]) = __pyx_t_12;
+ }
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":508
+ * frequencies[i] = freq
+ * symbols[i] = bogus[-1]
+ * self.hc = huff_code_build_str(symbols, frequencies, nsym) # <<<<<<<<<<<<<<
+ * ckd_free(frequencies)
+ * ckd_free(symbols)
+ */
+ ((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc = huff_code_build_str(__pyx_v_symbols, __pyx_v_frequencies, __pyx_v_nsym);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":509
+ * symbols[i] = bogus[-1]
+ * self.hc = huff_code_build_str(symbols, frequencies, nsym)
+ * ckd_free(frequencies) # <<<<<<<<<<<<<<
+ * ckd_free(symbols)
+ *
+ */
+ ckd_free(__pyx_v_frequencies);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":510
+ * self.hc = huff_code_build_str(symbols, frequencies, nsym)
+ * ckd_free(frequencies)
+ * ckd_free(symbols) # <<<<<<<<<<<<<<
+ *
+ * def read(self, infile):
+ */
+ ckd_free(__pyx_v_symbols);
+
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.__init__");
+ __pyx_r = -1;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_bogus);
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_DECREF(__pyx_v_spam);
+ __Pyx_DECREF(__pyx_v_sym);
+ __Pyx_DECREF(__pyx_v_freq);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_alphabet);
+ __Pyx_DECREF(__pyx_v_infile);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":512
+ * ckd_free(symbols)
+ *
+ * def read(self, infile): # <<<<<<<<<<<<<<
+ * if not isinstance(infile, file):
+ * infile = file(infile, "rb")
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_read(PyObject *__pyx_v_self, PyObject *__pyx_v_infile); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_read(PyObject *__pyx_v_self, PyObject *__pyx_v_infile) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ huff_code_t *__pyx_t_5;
+ __Pyx_RefNannySetupContext("read");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_infile);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":513
+ *
+ * def read(self, infile):
+ * if not isinstance(infile, file): # <<<<<<<<<<<<<<
+ * infile = file(infile, "rb")
+ * huff_code_free(self.hc)
+ */
+ __pyx_t_1 = PyObject_TypeCheck(__pyx_v_infile, ((PyTypeObject *)((PyObject*)&PyFile_Type)));
+ __pyx_t_2 = (!__pyx_t_1);
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":514
+ * def read(self, infile):
+ * if not isinstance(infile, file):
+ * infile = file(infile, "rb") # <<<<<<<<<<<<<<
+ * huff_code_free(self.hc)
+ * self.hc = huff_code_read(PyFile_AsFile(infile))
+ */
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_infile);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_infile);
+ __Pyx_GIVEREF(__pyx_v_infile);
+ __Pyx_INCREF(((PyObject *)__pyx_n_s__rb));
+ PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__rb));
+ __Pyx_GIVEREF(((PyObject *)__pyx_n_s__rb));
+ __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyFile_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_v_infile);
+ __pyx_v_infile = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":515
+ * if not isinstance(infile, file):
+ * infile = file(infile, "rb")
+ * huff_code_free(self.hc) # <<<<<<<<<<<<<<
+ * self.hc = huff_code_read(PyFile_AsFile(infile))
+ *
+ */
+ huff_code_free(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":516
+ * infile = file(infile, "rb")
+ * huff_code_free(self.hc)
+ * self.hc = huff_code_read(PyFile_AsFile(infile)) # <<<<<<<<<<<<<<
+ *
+ * def write(self, outfile):
+ */
+ __pyx_t_5 = huff_code_read(PyFile_AsFile(__pyx_v_infile)); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ ((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc = __pyx_t_5;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.read");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_infile);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":518
+ * self.hc = huff_code_read(PyFile_AsFile(infile))
+ *
+ * def write(self, outfile): # <<<<<<<<<<<<<<
+ * if not isinstance(outfile, file):
+ * outfile = file(outfile, "wb")
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_write(PyObject *__pyx_v_self, PyObject *__pyx_v_outfile); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_write(PyObject *__pyx_v_self, PyObject *__pyx_v_outfile) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_t_5;
+ __Pyx_RefNannySetupContext("write");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_outfile);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":519
+ *
+ * def write(self, outfile):
+ * if not isinstance(outfile, file): # <<<<<<<<<<<<<<
+ * outfile = file(outfile, "wb")
+ * huff_code_write(self.hc, PyFile_AsFile(outfile))
+ */
+ __pyx_t_1 = PyObject_TypeCheck(__pyx_v_outfile, ((PyTypeObject *)((PyObject*)&PyFile_Type)));
+ __pyx_t_2 = (!__pyx_t_1);
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":520
+ * def write(self, outfile):
+ * if not isinstance(outfile, file):
+ * outfile = file(outfile, "wb") # <<<<<<<<<<<<<<
+ * huff_code_write(self.hc, PyFile_AsFile(outfile))
+ *
+ */
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_outfile);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_outfile);
+ __Pyx_GIVEREF(__pyx_v_outfile);
+ __Pyx_INCREF(((PyObject *)__pyx_n_s__wb));
+ PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__wb));
+ __Pyx_GIVEREF(((PyObject *)__pyx_n_s__wb));
+ __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyFile_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_v_outfile);
+ __pyx_v_outfile = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":521
+ * if not isinstance(outfile, file):
+ * outfile = file(outfile, "wb")
+ * huff_code_write(self.hc, PyFile_AsFile(outfile)) # <<<<<<<<<<<<<<
+ *
+ * def dump(self, outfile):
+ */
+ __pyx_t_5 = huff_code_write(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, PyFile_AsFile(__pyx_v_outfile)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.write");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_outfile);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":523
+ * huff_code_write(self.hc, PyFile_AsFile(outfile))
+ *
+ * def dump(self, outfile): # <<<<<<<<<<<<<<
+ * if not isinstance(outfile, file):
+ * outfile = file(outfile, "w")
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_dump(PyObject *__pyx_v_self, PyObject *__pyx_v_outfile); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_dump(PyObject *__pyx_v_self, PyObject *__pyx_v_outfile) {
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_t_5;
+ __Pyx_RefNannySetupContext("dump");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_outfile);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":524
+ *
+ * def dump(self, outfile):
+ * if not isinstance(outfile, file): # <<<<<<<<<<<<<<
+ * outfile = file(outfile, "w")
+ * huff_code_dump(self.hc, PyFile_AsFile(outfile))
+ */
+ __pyx_t_1 = PyObject_TypeCheck(__pyx_v_outfile, ((PyTypeObject *)((PyObject*)&PyFile_Type)));
+ __pyx_t_2 = (!__pyx_t_1);
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":525
+ * def dump(self, outfile):
+ * if not isinstance(outfile, file):
+ * outfile = file(outfile, "w") # <<<<<<<<<<<<<<
+ * huff_code_dump(self.hc, PyFile_AsFile(outfile))
+ *
+ */
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_outfile);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_outfile);
+ __Pyx_GIVEREF(__pyx_v_outfile);
+ __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
+ PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__w));
+ __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
+ __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyFile_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_v_outfile);
+ __pyx_v_outfile = __pyx_t_4;
+ __pyx_t_4 = 0;
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":526
+ * if not isinstance(outfile, file):
+ * outfile = file(outfile, "w")
+ * huff_code_dump(self.hc, PyFile_AsFile(outfile)) # <<<<<<<<<<<<<<
+ *
+ * def encode(self, seq):
+ */
+ __pyx_t_5 = huff_code_dump(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, PyFile_AsFile(__pyx_v_outfile)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.dump");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_outfile);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":528
+ * huff_code_dump(self.hc, PyFile_AsFile(outfile))
+ *
+ * def encode(self, seq): # <<<<<<<<<<<<<<
+ * """
+ * Encode a sequence of symbols to a byte array, returning that
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_encode(PyObject *__pyx_v_self, PyObject *__pyx_v_seq); /*proto*/
+static char __pyx_doc_10sphinxbase_8HuffCode_encode[] = "\n Encode a sequence of symbols to a byte array, returning that\n array and the bit offset of the next codeword in the last\n byte (i.e. 8 minutes the number of extra zero bits)\n ";
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_encode(PyObject *__pyx_v_self, PyObject *__pyx_v_seq) {
+ unsigned int __pyx_v_cw;
+ int __pyx_v_cwlen;
+ int __pyx_v_nbits;
+ int __pyx_v_nbytes;
+ int __pyx_v_offset;
+ int __pyx_v_i;
+ unsigned char __pyx_v_buf;
+ char *__pyx_v_output;
+ PyObject *__pyx_v_sym;
+ PyObject *__pyx_v_sss;
+ PyObject *__pyx_v_outstr;
+ PyObject *__pyx_r = NULL;
+ Py_ssize_t __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ char *__pyx_t_4;
+ int __pyx_t_5;
+ __Pyx_RefNannySetupContext("encode");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_seq);
+ __pyx_v_sym = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_sss = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_outstr = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":535
+ * """
+ * cdef unsigned int cw
+ * cdef int cwlen, nbits = 0, nbytes, offset, i # <<<<<<<<<<<<<<
+ * cdef unsigned char buf = 0
+ * cdef char *output
+ */
+ __pyx_v_nbits = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":536
+ * cdef unsigned int cw
+ * cdef int cwlen, nbits = 0, nbytes, offset, i
+ * cdef unsigned char buf = 0 # <<<<<<<<<<<<<<
+ * cdef char *output
+ *
+ */
+ __pyx_v_buf = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":539
+ * cdef char *output
+ *
+ * for sym in seq: # <<<<<<<<<<<<<<
+ * sss = repr(sym)
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ */
+ if (PyList_CheckExact(__pyx_v_seq) || PyTuple_CheckExact(__pyx_v_seq)) {
+ __pyx_t_1 = 0; __pyx_t_2 = __pyx_v_seq; __Pyx_INCREF(__pyx_t_2);
+ } else {
+ __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_seq); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ }
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_2))) {
+ if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
+ } else {
+ __pyx_t_3 = PyIter_Next(__pyx_t_2);
+ if (!__pyx_t_3) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_DECREF(__pyx_v_sym);
+ __pyx_v_sym = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":540
+ *
+ * for sym in seq:
+ * sss = repr(sym) # <<<<<<<<<<<<<<
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ * nbits += cwlen
+ */
+ __pyx_t_3 = PyObject_Repr(__pyx_v_sym); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_v_sss);
+ __pyx_v_sss = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":541
+ * for sym in seq:
+ * sss = repr(sym)
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw) # <<<<<<<<<<<<<<
+ * nbits += cwlen
+ * nbytes = int((nbits + 7) / 8)
+ */
+ __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v_sss); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_cwlen = huff_code_encode_str(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, __pyx_t_4, (&__pyx_v_cw));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":542
+ * sss = repr(sym)
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ * nbits += cwlen # <<<<<<<<<<<<<<
+ * nbytes = int((nbits + 7) / 8)
+ * offset = 0
+ */
+ __pyx_v_nbits += __pyx_v_cwlen;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":543
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ * nbits += cwlen
+ * nbytes = int((nbits + 7) / 8) # <<<<<<<<<<<<<<
+ * offset = 0
+ * output = <char *>PyMem_Malloc(nbytes + 1)
+ */
+ __pyx_v_nbytes = ((int)__Pyx_div_long((__pyx_v_nbits + 7), 8));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":544
+ * nbits += cwlen
+ * nbytes = int((nbits + 7) / 8)
+ * offset = 0 # <<<<<<<<<<<<<<
+ * output = <char *>PyMem_Malloc(nbytes + 1)
+ * output[nbytes] = 0
+ */
+ __pyx_v_offset = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":545
+ * nbytes = int((nbits + 7) / 8)
+ * offset = 0
+ * output = <char *>PyMem_Malloc(nbytes + 1) # <<<<<<<<<<<<<<
+ * output[nbytes] = 0
+ * i = 0
+ */
+ __pyx_v_output = ((char *)PyMem_Malloc((__pyx_v_nbytes + 1)));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":546
+ * offset = 0
+ * output = <char *>PyMem_Malloc(nbytes + 1)
+ * output[nbytes] = 0 # <<<<<<<<<<<<<<
+ * i = 0
+ * nbits = 0
+ */
+ (__pyx_v_output[__pyx_v_nbytes]) = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":547
+ * output = <char *>PyMem_Malloc(nbytes + 1)
+ * output[nbytes] = 0
+ * i = 0 # <<<<<<<<<<<<<<
+ * nbits = 0
+ * for sym in seq:
+ */
+ __pyx_v_i = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":548
+ * output[nbytes] = 0
+ * i = 0
+ * nbits = 0 # <<<<<<<<<<<<<<
+ * for sym in seq:
+ * sss = repr(sym)
+ */
+ __pyx_v_nbits = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":549
+ * i = 0
+ * nbits = 0
+ * for sym in seq: # <<<<<<<<<<<<<<
+ * sss = repr(sym)
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ */
+ if (PyList_CheckExact(__pyx_v_seq) || PyTuple_CheckExact(__pyx_v_seq)) {
+ __pyx_t_1 = 0; __pyx_t_2 = __pyx_v_seq; __Pyx_INCREF(__pyx_t_2);
+ } else {
+ __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_seq); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ }
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_2))) {
+ if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
+ } else {
+ __pyx_t_3 = PyIter_Next(__pyx_t_2);
+ if (!__pyx_t_3) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_DECREF(__pyx_v_sym);
+ __pyx_v_sym = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":550
+ * nbits = 0
+ * for sym in seq:
+ * sss = repr(sym) # <<<<<<<<<<<<<<
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ * #print "sym: %s cw: %s buf: %s output: %s" \
+ */
+ __pyx_t_3 = PyObject_Repr(__pyx_v_sym); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_v_sss);
+ __pyx_v_sss = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":551
+ * for sym in seq:
+ * sss = repr(sym)
+ * cwlen = huff_code_encode_str(self.hc, sss, &cw) # <<<<<<<<<<<<<<
+ * #print "sym: %s cw: %s buf: %s output: %s" \
+ * # % (sym, bincw(cw, cwlen), bincw(buf >> (8-offset), offset),
+ */
+ __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v_sss); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_cwlen = huff_code_encode_str(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, __pyx_t_4, (&__pyx_v_cw));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":557
+ * #print "cwlen",cwlen
+ * # Do one byte at a time while full bytes are available
+ * while cwlen >= 8: # <<<<<<<<<<<<<<
+ * # Fill low bits of buf with high bits of cw
+ * buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1)
+ */
+ while (1) {
+ __pyx_t_5 = (__pyx_v_cwlen >= 8);
+ if (!__pyx_t_5) break;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":559
+ * while cwlen >= 8:
+ * # Fill low bits of buf with high bits of cw
+ * buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1) # <<<<<<<<<<<<<<
+ * # Append buf to output
+ * output[i] = buf
+ */
+ __pyx_v_buf |= ((__pyx_v_cw >> (__pyx_v_cwlen - (8 - __pyx_v_offset))) & ((1 << (8 - __pyx_v_offset)) - 1));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":561
+ * buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1)
+ * # Append buf to output
+ * output[i] = buf # <<<<<<<<<<<<<<
+ * i += 1
+ * nbits += 8
+ */
+ (__pyx_v_output[__pyx_v_i]) = __pyx_v_buf;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":562
+ * # Append buf to output
+ * output[i] = buf
+ * i += 1 # <<<<<<<<<<<<<<
+ * nbits += 8
+ * # Fill high bits of buf with low bits of this byte
+ */
+ __pyx_v_i += 1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":563
+ * output[i] = buf
+ * i += 1
+ * nbits += 8 # <<<<<<<<<<<<<<
+ * # Fill high bits of buf with low bits of this byte
+ * cwlen -= 8
+ */
+ __pyx_v_nbits += 8;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":565
+ * nbits += 8
+ * # Fill high bits of buf with low bits of this byte
+ * cwlen -= 8 # <<<<<<<<<<<<<<
+ * buf = (cw >> cwlen) & ((1 << offset) - 1)
+ * buf <<= (8-offset)
+ */
+ __pyx_v_cwlen -= 8;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":566
+ * # Fill high bits of buf with low bits of this byte
+ * cwlen -= 8
+ * buf = (cw >> cwlen) & ((1 << offset) - 1) # <<<<<<<<<<<<<<
+ * buf <<= (8-offset)
+ * #print "cwlen",cwlen
+ */
+ __pyx_v_buf = ((__pyx_v_cw >> __pyx_v_cwlen) & ((1 << __pyx_v_offset) - 1));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":567
+ * cwlen -= 8
+ * buf = (cw >> cwlen) & ((1 << offset) - 1)
+ * buf <<= (8-offset) # <<<<<<<<<<<<<<
+ * #print "cwlen",cwlen
+ * # Now cwlen will be less than 8, but it might still be
+ */
+ __pyx_v_buf <<= (8 - __pyx_v_offset);
+ }
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":571
+ * # Now cwlen will be less than 8, but it might still be
+ * # more than the available space in buf.
+ * if cwlen >= (8 - offset): # <<<<<<<<<<<<<<
+ * # Fill low bits of buf with (8-offset) highest bits of cw
+ * buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1)
+ */
+ __pyx_t_5 = (__pyx_v_cwlen >= (8 - __pyx_v_offset));
+ if (__pyx_t_5) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":573
+ * if cwlen >= (8 - offset):
+ * # Fill low bits of buf with (8-offset) highest bits of cw
+ * buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1) # <<<<<<<<<<<<<<
+ * # Append buf to output
+ * output[i] = buf
+ */
+ __pyx_v_buf |= ((__pyx_v_cw >> (__pyx_v_cwlen - (8 - __pyx_v_offset))) & ((1 << (8 - __pyx_v_offset)) - 1));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":575
+ * buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1)
+ * # Append buf to output
+ * output[i] = buf # <<<<<<<<<<<<<<
+ * i += 1
+ * nbits += 8
+ */
+ (__pyx_v_output[__pyx_v_i]) = __pyx_v_buf;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":576
+ * # Append buf to output
+ * output[i] = buf
+ * i += 1 # <<<<<<<<<<<<<<
+ * nbits += 8
+ * # cwlen is down to the remaining bits
+ */
+ __pyx_v_i += 1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":577
+ * output[i] = buf
+ * i += 1
+ * nbits += 8 # <<<<<<<<<<<<<<
+ * # cwlen is down to the remaining bits
+ * cwlen -= (8 - offset)
+ */
+ __pyx_v_nbits += 8;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":579
+ * nbits += 8
+ * # cwlen is down to the remaining bits
+ * cwlen -= (8 - offset) # <<<<<<<<<<<<<<
+ * # Offset is now zero since we just completed and emptied buf
+ * offset = 0
+ */
+ __pyx_v_cwlen -= (8 - __pyx_v_offset);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":581
+ * cwlen -= (8 - offset)
+ * # Offset is now zero since we just completed and emptied buf
+ * offset = 0 # <<<<<<<<<<<<<<
+ * # buf is zero, because we just emptied it without putting stuff in
+ * buf = 0
+ */
+ __pyx_v_offset = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":583
+ * offset = 0
+ * # buf is zero, because we just emptied it without putting stuff in
+ * buf = 0 # <<<<<<<<<<<<<<
+ * #print "cwlen",cwlen
+ * # Any remaining bits will be taken care of below (we hope)
+ */
+ __pyx_v_buf = 0;
+ goto __pyx_L11;
+ }
+ __pyx_L11:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":588
+ * # Add remaining high bits of cw to low bits of buf
+ * #print "cwlen",cwlen
+ * buf |= ((cw & ((1 << cwlen) - 1)) << (8 - offset - cwlen)) # <<<<<<<<<<<<<<
+ * offset += cwlen
+ * #print "after buf: %s output: %s" \
+ */
+ __pyx_v_buf |= ((__pyx_v_cw & ((1 << __pyx_v_cwlen) - 1)) << ((8 - __pyx_v_offset) - __pyx_v_cwlen));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":589
+ * #print "cwlen",cwlen
+ * buf |= ((cw & ((1 << cwlen) - 1)) << (8 - offset - cwlen))
+ * offset += cwlen # <<<<<<<<<<<<<<
+ * #print "after buf: %s output: %s" \
+ * # % (bincw(buf >> (8-offset), offset), binstr(output, nbits))
+ */
+ __pyx_v_offset += __pyx_v_cwlen;
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":592
+ * #print "after buf: %s output: %s" \
+ * # % (bincw(buf >> (8-offset), offset), binstr(output, nbits))
+ * if offset > 0: # <<<<<<<<<<<<<<
+ * # Append buf to output
+ * output[i] = buf
+ */
+ __pyx_t_5 = (__pyx_v_offset > 0);
+ if (__pyx_t_5) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":594
+ * if offset > 0:
+ * # Append buf to output
+ * output[i] = buf # <<<<<<<<<<<<<<
+ * nbits += offset
+ * i += 1
+ */
+ (__pyx_v_output[__pyx_v_i]) = __pyx_v_buf;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":595
+ * # Append buf to output
+ * output[i] = buf
+ * nbits += offset # <<<<<<<<<<<<<<
+ * i += 1
+ * #print "output:", binstr(output, nbits)
+ */
+ __pyx_v_nbits += __pyx_v_offset;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":596
+ * output[i] = buf
+ * nbits += offset
+ * i += 1 # <<<<<<<<<<<<<<
+ * #print "output:", binstr(output, nbits)
+ * outstr = PyString_FromStringAndSize(output, nbytes)
+ */
+ __pyx_v_i += 1;
+ goto __pyx_L12;
+ }
+ __pyx_L12:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":598
+ * i += 1
+ * #print "output:", binstr(output, nbits)
+ * outstr = PyString_FromStringAndSize(output, nbytes) # <<<<<<<<<<<<<<
+ * PyMem_Free(output)
+ * return (outstr, offset)
+ */
+ __pyx_t_2 = PyString_FromStringAndSize(__pyx_v_output, __pyx_v_nbytes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_v_outstr);
+ __pyx_v_outstr = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":599
+ * #print "output:", binstr(output, nbits)
+ * outstr = PyString_FromStringAndSize(output, nbytes)
+ * PyMem_Free(output) # <<<<<<<<<<<<<<
+ * return (outstr, offset)
+ *
+ */
+ PyMem_Free(__pyx_v_output);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":600
+ * outstr = PyString_FromStringAndSize(output, nbytes)
+ * PyMem_Free(output)
+ * return (outstr, offset) # <<<<<<<<<<<<<<
+ *
+ * def decode(self, data):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_offset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_v_outstr);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_outstr);
+ __Pyx_GIVEREF(__pyx_v_outstr);
+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_2);
+ __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.encode");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_sym);
+ __Pyx_DECREF(__pyx_v_sss);
+ __Pyx_DECREF(__pyx_v_outstr);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_seq);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":602
+ * return (outstr, offset)
+ *
+ * def decode(self, data): # <<<<<<<<<<<<<<
+ * """
+ * Decode a sequence of symbols from a string, returning the
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_decode(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
+static char __pyx_doc_10sphinxbase_8HuffCode_decode[] = "\n Decode a sequence of symbols from a string, returning the\n sequence and the bit offset of the next codeword in the last\n byte (i.e. 8 minutes the number of remaining bits)\n ";
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_decode(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
+ int __pyx_v_offset;
+ char *__pyx_v_dptr;
+ char *__pyx_v_strval;
+ size_t __pyx_v_dlen;
+ PyObject *__pyx_v_output;
+ PyObject *__pyx_r = NULL;
+ Py_ssize_t __pyx_t_1;
+ char *__pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_t_4;
+ PyObject *__pyx_t_5 = NULL;
+ __Pyx_RefNannySetupContext("decode");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_data);
+ __pyx_v_output = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":613
+ * cdef size_t dlen
+ *
+ * dlen = len(data) # <<<<<<<<<<<<<<
+ * offset = 0
+ * dptr = data
+ */
+ __pyx_t_1 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_dlen = __pyx_t_1;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":614
+ *
+ * dlen = len(data)
+ * offset = 0 # <<<<<<<<<<<<<<
+ * dptr = data
+ * output = []
+ */
+ __pyx_v_offset = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":615
+ * dlen = len(data)
+ * offset = 0
+ * dptr = data # <<<<<<<<<<<<<<
+ * output = []
+ * while True:
+ */
+ __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_data); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_dptr = __pyx_t_2;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":616
+ * offset = 0
+ * dptr = data
+ * output = [] # <<<<<<<<<<<<<<
+ * while True:
+ * strval = huff_code_decode_str(self.hc, &dptr, &dlen, &offset)
+ */
+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+ __Pyx_DECREF(__pyx_v_output);
+ __pyx_v_output = ((PyObject *)__pyx_t_3);
+ __pyx_t_3 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":617
+ * dptr = data
+ * output = []
+ * while True: # <<<<<<<<<<<<<<
+ * strval = huff_code_decode_str(self.hc, &dptr, &dlen, &offset)
+ * if strval == NULL:
+ */
+ while (1) {
+ __pyx_t_4 = 1;
+ if (!__pyx_t_4) break;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":618
+ * output = []
+ * while True:
+ * strval = huff_code_decode_str(self.hc, &dptr, &dlen, &offset) # <<<<<<<<<<<<<<
+ * if strval == NULL:
+ * break
+ */
+ __pyx_v_strval = huff_code_decode_str(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, (&__pyx_v_dptr), (&__pyx_v_dlen), (&__pyx_v_offset));
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":619
+ * while True:
+ * strval = huff_code_decode_str(self.hc, &dptr, &dlen, &offset)
+ * if strval == NULL: # <<<<<<<<<<<<<<
+ * break
+ * output.append(strval)
+ */
+ __pyx_t_4 = (__pyx_v_strval == NULL);
+ if (__pyx_t_4) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":620
+ * strval = huff_code_decode_str(self.hc, &dptr, &dlen, &offset)
+ * if strval == NULL:
+ * break # <<<<<<<<<<<<<<
+ * output.append(strval)
+ * if dlen > 1:
+ */
+ goto __pyx_L6_break;
+ goto __pyx_L7;
+ }
+ __pyx_L7:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":621
+ * if strval == NULL:
+ * break
+ * output.append(strval) # <<<<<<<<<<<<<<
+ * if dlen > 1:
+ * raise ValueError, "Invalid data at position %d" % (len(data) - dlen)
+ */
+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_strval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+ __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_output, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ }
+ __pyx_L6_break:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":622
+ * break
+ * output.append(strval)
+ * if dlen > 1: # <<<<<<<<<<<<<<
+ * raise ValueError, "Invalid data at position %d" % (len(data) - dlen)
+ * return (output, offset)
+ */
+ __pyx_t_4 = (__pyx_v_dlen > 1);
+ if (__pyx_t_4) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":623
+ * output.append(strval)
+ * if dlen > 1:
+ * raise ValueError, "Invalid data at position %d" % (len(data) - dlen) # <<<<<<<<<<<<<<
+ * return (output, offset)
+ *
+ */
+ __pyx_t_1 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_t_1 - __pyx_v_dlen)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_18), __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L8;
+ }
+ __pyx_L8:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":624
+ * if dlen > 1:
+ * raise ValueError, "Invalid data at position %d" % (len(data) - dlen)
+ * return (output, offset) # <<<<<<<<<<<<<<
+ *
+ * def attach(self, fh, char *mode):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_v_output);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_output);
+ __Pyx_GIVEREF(__pyx_v_output);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.decode");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_output);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_data);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":626
+ * return (output, offset)
+ *
+ * def attach(self, fh, char *mode): # <<<<<<<<<<<<<<
+ * if not isinstance(fh, file):
+ * fh = file(fh, mode)
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_attach(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_attach(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_fh = 0;
+ char *__pyx_v_mode;
+ PyObject *__pyx_r = NULL;
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fh,&__pyx_n_s__mode,0};
+ __Pyx_RefNannySetupContext("attach");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[2] = {0,0};
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fh);
+ if (likely(values[0])) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ case 1:
+ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mode);
+ if (likely(values[1])) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("attach", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "attach") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_fh = values[0];
+ __pyx_v_mode = __Pyx_PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_mode) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ __pyx_v_fh = PyTuple_GET_ITEM(__pyx_args, 0);
+ __pyx_v_mode = __Pyx_PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((!__pyx_v_mode) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("attach", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("sphinxbase.HuffCode.attach");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_fh);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":627
+ *
+ * def attach(self, fh, char *mode):
+ * if not isinstance(fh, file): # <<<<<<<<<<<<<<
+ * fh = file(fh, mode)
+ * self.fh = fh
+ */
+ __pyx_t_1 = PyObject_TypeCheck(__pyx_v_fh, ((PyTypeObject *)((PyObject*)&PyFile_Type)));
+ __pyx_t_2 = (!__pyx_t_1);
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":628
+ * def attach(self, fh, char *mode):
+ * if not isinstance(fh, file):
+ * fh = file(fh, mode) # <<<<<<<<<<<<<<
+ * self.fh = fh
+ * huff_code_attach(self.hc, PyFile_AsFile(fh), mode)
+ */
+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_mode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_v_fh);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_fh);
+ __Pyx_GIVEREF(__pyx_v_fh);
+ PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3));
+ __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+ __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyFile_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_v_fh);
+ __pyx_v_fh = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L6;
+ }
+ __pyx_L6:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":629
+ * if not isinstance(fh, file):
+ * fh = file(fh, mode)
+ * self.fh = fh # <<<<<<<<<<<<<<
+ * huff_code_attach(self.hc, PyFile_AsFile(fh), mode)
+ *
+ */
+ __Pyx_INCREF(__pyx_v_fh);
+ __Pyx_GIVEREF(__pyx_v_fh);
+ __Pyx_GOTREF(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh);
+ __Pyx_DECREF(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh);
+ ((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh = __pyx_v_fh;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":630
+ * fh = file(fh, mode)
+ * self.fh = fh
+ * huff_code_attach(self.hc, PyFile_AsFile(fh), mode) # <<<<<<<<<<<<<<
+ *
+ * def detach(self):
+ */
+ huff_code_attach(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, PyFile_AsFile(__pyx_v_fh), __pyx_v_mode);
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.attach");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_fh);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":632
+ * huff_code_attach(self.hc, PyFile_AsFile(fh), mode)
+ *
+ * def detach(self): # <<<<<<<<<<<<<<
+ * huff_code_detach(self.hc)
+ * self.fh = None
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_detach(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_detach(PyObject *__pyx_v_self, PyObject *unused) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannySetupContext("detach");
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":633
+ *
+ * def detach(self):
+ * huff_code_detach(self.hc) # <<<<<<<<<<<<<<
+ * self.fh = None
+ *
+ */
+ huff_code_detach(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":634
+ * def detach(self):
+ * huff_code_detach(self.hc)
+ * self.fh = None # <<<<<<<<<<<<<<
+ *
+ * def encode_to_file(self, seq):
+ */
+ __Pyx_INCREF(Py_None);
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh);
+ __Pyx_DECREF(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh);
+ ((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh = Py_None;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":636
+ * self.fh = None
+ *
+ * def encode_to_file(self, seq): # <<<<<<<<<<<<<<
+ * if self.fh == None:
+ * raise RuntimeError, "No file is attached"
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_encode_to_file(PyObject *__pyx_v_self, PyObject *__pyx_v_seq); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_encode_to_file(PyObject *__pyx_v_self, PyObject *__pyx_v_seq) {
+ PyObject *__pyx_v_sym;
+ PyObject *__pyx_v_strsym;
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ Py_ssize_t __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ char *__pyx_t_5;
+ __Pyx_RefNannySetupContext("encode_to_file");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+ __Pyx_INCREF(__pyx_v_seq);
+ __pyx_v_sym = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_v_strsym = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":637
+ *
+ * def encode_to_file(self, seq):
+ * if self.fh == None: # <<<<<<<<<<<<<<
+ * raise RuntimeError, "No file is attached"
+ * for sym in seq:
+ */
+ __pyx_t_1 = PyObject_RichCompare(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh, Py_None, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":638
+ * def encode_to_file(self, seq):
+ * if self.fh == None:
+ * raise RuntimeError, "No file is attached" # <<<<<<<<<<<<<<
+ * for sym in seq:
+ * strsym = repr(sym)
+ */
+ __Pyx_Raise(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_kp_s_19), 0);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":639
+ * if self.fh == None:
+ * raise RuntimeError, "No file is attached"
+ * for sym in seq: # <<<<<<<<<<<<<<
+ * strsym = repr(sym)
+ * huff_code_encode_str(self.hc, strsym, NULL)
+ */
+ if (PyList_CheckExact(__pyx_v_seq) || PyTuple_CheckExact(__pyx_v_seq)) {
+ __pyx_t_3 = 0; __pyx_t_1 = __pyx_v_seq; __Pyx_INCREF(__pyx_t_1);
+ } else {
+ __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_seq); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ }
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_1))) {
+ if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
+ if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+ __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
+ } else {
+ __pyx_t_4 = PyIter_Next(__pyx_t_1);
+ if (!__pyx_t_4) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_4);
+ }
+ __Pyx_DECREF(__pyx_v_sym);
+ __pyx_v_sym = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":640
+ * raise RuntimeError, "No file is attached"
+ * for sym in seq:
+ * strsym = repr(sym) # <<<<<<<<<<<<<<
+ * huff_code_encode_str(self.hc, strsym, NULL)
+ *
+ */
+ __pyx_t_4 = PyObject_Repr(__pyx_v_sym); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_v_strsym);
+ __pyx_v_strsym = __pyx_t_4;
+ __pyx_t_4 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":641
+ * for sym in seq:
+ * strsym = repr(sym)
+ * huff_code_encode_str(self.hc, strsym, NULL) # <<<<<<<<<<<<<<
+ *
+ * def decode_from_file(self):
+ */
+ __pyx_t_5 = __Pyx_PyBytes_AsString(__pyx_v_strsym); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ huff_code_encode_str(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, __pyx_t_5, NULL);
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.encode_to_file");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_sym);
+ __Pyx_DECREF(__pyx_v_strsym);
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_DECREF(__pyx_v_seq);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":643
+ * huff_code_encode_str(self.hc, strsym, NULL)
+ *
+ * def decode_from_file(self): # <<<<<<<<<<<<<<
+ * cdef char *sym
+ * if self.fh == None:
+ */
+
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_decode_from_file(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
+static PyObject *__pyx_pf_10sphinxbase_8HuffCode_decode_from_file(PyObject *__pyx_v_self, PyObject *unused) {
+ char *__pyx_v_sym;
+ PyObject *__pyx_r = NULL;
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ __Pyx_RefNannySetupContext("decode_from_file");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":645
+ * def decode_from_file(self):
+ * cdef char *sym
+ * if self.fh == None: # <<<<<<<<<<<<<<
+ * raise RuntimeError, "No file is attached"
+ * sym = huff_code_decode_str(self.hc, NULL, NULL, NULL)
+ */
+ __pyx_t_1 = PyObject_RichCompare(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh, Py_None, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":646
+ * cdef char *sym
+ * if self.fh == None:
+ * raise RuntimeError, "No file is attached" # <<<<<<<<<<<<<<
+ * sym = huff_code_decode_str(self.hc, NULL, NULL, NULL)
+ * if sym == NULL:
+ */
+ __Pyx_Raise(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_kp_s_19), 0);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":647
+ * if self.fh == None:
+ * raise RuntimeError, "No file is attached"
+ * sym = huff_code_decode_str(self.hc, NULL, NULL, NULL) # <<<<<<<<<<<<<<
+ * if sym == NULL:
+ * return None
+ */
+ __pyx_v_sym = huff_code_decode_str(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc, NULL, NULL, NULL);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":648
+ * raise RuntimeError, "No file is attached"
+ * sym = huff_code_decode_str(self.hc, NULL, NULL, NULL)
+ * if sym == NULL: # <<<<<<<<<<<<<<
+ * return None
+ * else:
+ */
+ __pyx_t_2 = (__pyx_v_sym == NULL);
+ if (__pyx_t_2) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":649
+ * sym = huff_code_decode_str(self.hc, NULL, NULL, NULL)
+ * if sym == NULL:
+ * return None # <<<<<<<<<<<<<<
+ * else:
+ * return sym
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(Py_None);
+ __pyx_r = Py_None;
+ goto __pyx_L0;
+ goto __pyx_L6;
+ }
+ /*else*/ {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":651
+ * return None
+ * else:
+ * return sym # <<<<<<<<<<<<<<
+ *
+ * def __dealloc__(self):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_sym); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+ __pyx_r = ((PyObject *)__pyx_t_1);
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+ }
+ __pyx_L6:;
+
+ __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.decode_from_file");
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":653
+ * return sym
+ *
+ * def __dealloc__(self): # <<<<<<<<<<<<<<
+ * if self.fh:
+ * self.detach()
+ */
+
+static void __pyx_pf_10sphinxbase_8HuffCode___dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pf_10sphinxbase_8HuffCode___dealloc__(PyObject *__pyx_v_self) {
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ __Pyx_RefNannySetupContext("__dealloc__");
+ __Pyx_INCREF((PyObject *)__pyx_v_self);
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":654
+ *
+ * def __dealloc__(self):
+ * if self.fh: # <<<<<<<<<<<<<<
+ * self.detach()
+ * huff_code_free(self.hc)
+ */
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->fh); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__pyx_t_1) {
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":655
+ * def __dealloc__(self):
+ * if self.fh:
+ * self.detach() # <<<<<<<<<<<<<<
+ * huff_code_free(self.hc)
+ */
+ __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__detach); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L5;
+ }
+ __pyx_L5:;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":656
+ * if self.fh:
+ * self.detach()
+ * huff_code_free(self.hc) # <<<<<<<<<<<<<<
+ */
+ huff_code_free(((struct __pyx_obj_10sphinxbase_HuffCode *)__pyx_v_self)->hc);
+
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("sphinxbase.HuffCode.__dealloc__");
+ __pyx_L0:;
+ __Pyx_DECREF((PyObject *)__pyx_v_self);
+ __Pyx_RefNannyFinishContext();
+}
+static struct __pyx_vtabstruct_10sphinxbase_NGramModel __pyx_vtable_10sphinxbase_NGramModel;
+
+static PyObject *__pyx_tp_new_10sphinxbase_NGramModel(PyTypeObject *t, PyObject *a, PyObject *k) {
+ struct __pyx_obj_10sphinxbase_NGramModel *p;
+ PyObject *o = (*t->tp_alloc)(t, 0);
+ if (!o) return 0;
+ p = ((struct __pyx_obj_10sphinxbase_NGramModel *)o);
+ p->__pyx_vtab = __pyx_vtabptr_10sphinxbase_NGramModel;
+ return o;
+}
+
+static void __pyx_tp_dealloc_10sphinxbase_NGramModel(PyObject *o) {
+ {
+ PyObject *etype, *eval, *etb;
+ PyErr_Fetch(&etype, &eval, &etb);
+ ++Py_REFCNT(o);
+ __pyx_pf_10sphinxbase_10NGramModel___dealloc__(o);
+ if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+ --Py_REFCNT(o);
+ PyErr_Restore(etype, eval, etb);
+ }
+ (*Py_TYPE(o)->tp_free)(o);
+}
+
+static struct PyMethodDef __pyx_methods_10sphinxbase_NGramModel[] = {
+ {__Pyx_NAMESTR("apply_weights"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_apply_weights, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_apply_weights)},
+ {__Pyx_NAMESTR("get_size"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_get_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_get_size)},
+ {__Pyx_NAMESTR("get_counts"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_get_counts, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_get_counts)},
+ {__Pyx_NAMESTR("unknown_wid"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_unknown_wid, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_unknown_wid)},
+ {__Pyx_NAMESTR("zero"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_zero, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_zero)},
+ {__Pyx_NAMESTR("wid"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_wid, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_wid)},
+ {__Pyx_NAMESTR("word"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_word, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_word)},
+ {__Pyx_NAMESTR("score"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_score, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_score)},
+ {__Pyx_NAMESTR("prob"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_prob, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_prob)},
+ {__Pyx_NAMESTR("mgrams"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_mgrams, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_mgrams)},
+ {__Pyx_NAMESTR("ngram"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_ngram, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_10NGramModel_ngram)},
+ {__Pyx_NAMESTR("add_word"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_add_word, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("recode"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_recode, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("casefold"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_casefold, METH_O, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pf_10sphinxbase_10NGramModel_write, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+ {0, 0, 0, 0}
+};
+
+static struct PyMemberDef __pyx_members_10sphinxbase_NGramModel[] = {
+ {(char *)"lw", T_FLOAT, offsetof(struct __pyx_obj_10sphinxbase_NGramModel, lw), READONLY, 0},
+ {(char *)"wip", T_FLOAT, offsetof(struct __pyx_obj_10sphinxbase_NGramModel, wip), READONLY, 0},
+ {(char *)"uw", T_FLOAT, offsetof(struct __pyx_obj_10sphinxbase_NGramModel, uw), READONLY, 0},
+ {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_NGramModel = {
+ 0, /*nb_add*/
+ 0, /*nb_subtract*/
+ 0, /*nb_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_divide*/
+ #endif
+ 0, /*nb_remainder*/
+ 0, /*nb_divmod*/
+ 0, /*nb_power*/
+ 0, /*nb_negative*/
+ 0, /*nb_positive*/
+ 0, /*nb_absolute*/
+ 0, /*nb_nonzero*/
+ 0, /*nb_invert*/
+ 0, /*nb_lshift*/
+ 0, /*nb_rshift*/
+ 0, /*nb_and*/
+ 0, /*nb_xor*/
+ 0, /*nb_or*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_coerce*/
+ #endif
+ 0, /*nb_int*/
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*reserved*/
+ #else
+ 0, /*nb_long*/
+ #endif
+ 0, /*nb_float*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_oct*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_hex*/
+ #endif
+ 0, /*nb_inplace_add*/
+ 0, /*nb_inplace_subtract*/
+ 0, /*nb_inplace_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_inplace_divide*/
+ #endif
+ 0, /*nb_inplace_remainder*/
+ 0, /*nb_inplace_power*/
+ 0, /*nb_inplace_lshift*/
+ 0, /*nb_inplace_rshift*/
+ 0, /*nb_inplace_and*/
+ 0, /*nb_inplace_xor*/
+ 0, /*nb_inplace_or*/
+ 0, /*nb_floor_divide*/
+ 0, /*nb_true_divide*/
+ 0, /*nb_inplace_floor_divide*/
+ 0, /*nb_inplace_true_divide*/
+ #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
+ 0, /*nb_index*/
+ #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_NGramModel = {
+ 0, /*sq_length*/
+ 0, /*sq_concat*/
+ 0, /*sq_repeat*/
+ 0, /*sq_item*/
+ 0, /*sq_slice*/
+ 0, /*sq_ass_item*/
+ 0, /*sq_ass_slice*/
+ 0, /*sq_contains*/
+ 0, /*sq_inplace_concat*/
+ 0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_NGramModel = {
+ 0, /*mp_length*/
+ 0, /*mp_subscript*/
+ 0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_NGramModel = {
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getreadbuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getwritebuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getsegcount*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getcharbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_getbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_releasebuffer*/
+ #endif
+};
+
+PyTypeObject __pyx_type_10sphinxbase_NGramModel = {
+ PyVarObject_HEAD_INIT(0, 0)
+ __Pyx_NAMESTR("sphinxbase.NGramModel"), /*tp_name*/
+ sizeof(struct __pyx_obj_10sphinxbase_NGramModel), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_10sphinxbase_NGramModel, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ &__pyx_tp_as_number_NGramModel, /*tp_as_number*/
+ &__pyx_tp_as_sequence_NGramModel, /*tp_as_sequence*/
+ &__pyx_tp_as_mapping_NGramModel, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ &__pyx_tp_as_buffer_NGramModel, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
+ __Pyx_DOCSTR("\n N-Gram language model class.\n\n This class provides access to N-Gram language models stored on\n disk. These can be in ARPABO text format or Sphinx DMP format.\n Methods are provided for scoring N-Grams based on the model\n and looking up words in the model.\n\n @param file: Path to an N-Gram model file.\n @type file: string\n @param lw: Language weight to apply to model probabilities.\n @type lw: float\n @param wip: Word insertion penalty to add to model probabilities\n @type wip: float\n @param uw: Weight to give unigrams when interpolating with uniform distribution.\n @type uw: float\n "), /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ __pyx_methods_10sphinxbase_NGramModel, /*tp_methods*/
+ __pyx_members_10sphinxbase_NGramModel, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ 0, /*tp_dictoffset*/
+ __pyx_pf_10sphinxbase_10NGramModel___init__, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new_10sphinxbase_NGramModel, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*tp_version_tag*/
+ #endif
+};
+
+static PyObject *__pyx_tp_new_10sphinxbase_LogMath(PyTypeObject *t, PyObject *a, PyObject *k) {
+ PyObject *o = (*t->tp_alloc)(t, 0);
+ if (!o) return 0;
+ return o;
+}
+
+static void __pyx_tp_dealloc_10sphinxbase_LogMath(PyObject *o) {
+ {
+ PyObject *etype, *eval, *etb;
+ PyErr_Fetch(&etype, &eval, &etb);
+ ++Py_REFCNT(o);
+ __pyx_pf_10sphinxbase_7LogMath___dealloc__(o);
+ if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+ --Py_REFCNT(o);
+ PyErr_Restore(etype, eval, etb);
+ }
+ (*Py_TYPE(o)->tp_free)(o);
+}
+
+static struct PyMethodDef __pyx_methods_10sphinxbase_LogMath[] = {
+ {__Pyx_NAMESTR("get_zero"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_get_zero, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_get_zero)},
+ {__Pyx_NAMESTR("add"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_add, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_add)},
+ {__Pyx_NAMESTR("log"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_log, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_log)},
+ {__Pyx_NAMESTR("exp"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_exp, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_exp)},
+ {__Pyx_NAMESTR("log_to_ln"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_log_to_ln, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_log_to_ln)},
+ {__Pyx_NAMESTR("log_to_log10"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_log_to_log10, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_log_to_log10)},
+ {__Pyx_NAMESTR("ln_to_log"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_ln_to_log, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_ln_to_log)},
+ {__Pyx_NAMESTR("log10_to_log"), (PyCFunction)__pyx_pf_10sphinxbase_7LogMath_log10_to_log, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_7LogMath_log10_to_log)},
+ {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_LogMath = {
+ 0, /*nb_add*/
+ 0, /*nb_subtract*/
+ 0, /*nb_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_divide*/
+ #endif
+ 0, /*nb_remainder*/
+ 0, /*nb_divmod*/
+ 0, /*nb_power*/
+ 0, /*nb_negative*/
+ 0, /*nb_positive*/
+ 0, /*nb_absolute*/
+ 0, /*nb_nonzero*/
+ 0, /*nb_invert*/
+ 0, /*nb_lshift*/
+ 0, /*nb_rshift*/
+ 0, /*nb_and*/
+ 0, /*nb_xor*/
+ 0, /*nb_or*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_coerce*/
+ #endif
+ 0, /*nb_int*/
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*reserved*/
+ #else
+ 0, /*nb_long*/
+ #endif
+ 0, /*nb_float*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_oct*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_hex*/
+ #endif
+ 0, /*nb_inplace_add*/
+ 0, /*nb_inplace_subtract*/
+ 0, /*nb_inplace_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_inplace_divide*/
+ #endif
+ 0, /*nb_inplace_remainder*/
+ 0, /*nb_inplace_power*/
+ 0, /*nb_inplace_lshift*/
+ 0, /*nb_inplace_rshift*/
+ 0, /*nb_inplace_and*/
+ 0, /*nb_inplace_xor*/
+ 0, /*nb_inplace_or*/
+ 0, /*nb_floor_divide*/
+ 0, /*nb_true_divide*/
+ 0, /*nb_inplace_floor_divide*/
+ 0, /*nb_inplace_true_divide*/
+ #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
+ 0, /*nb_index*/
+ #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_LogMath = {
+ 0, /*sq_length*/
+ 0, /*sq_concat*/
+ 0, /*sq_repeat*/
+ 0, /*sq_item*/
+ 0, /*sq_slice*/
+ 0, /*sq_ass_item*/
+ 0, /*sq_ass_slice*/
+ 0, /*sq_contains*/
+ 0, /*sq_inplace_concat*/
+ 0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_LogMath = {
+ 0, /*mp_length*/
+ 0, /*mp_subscript*/
+ 0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_LogMath = {
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getreadbuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getwritebuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getsegcount*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getcharbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_getbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_releasebuffer*/
+ #endif
+};
+
+PyTypeObject __pyx_type_10sphinxbase_LogMath = {
+ PyVarObject_HEAD_INIT(0, 0)
+ __Pyx_NAMESTR("sphinxbase.LogMath"), /*tp_name*/
+ sizeof(struct __pyx_obj_10sphinxbase_LogMath), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_10sphinxbase_LogMath, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ &__pyx_tp_as_number_LogMath, /*tp_as_number*/
+ &__pyx_tp_as_sequence_LogMath, /*tp_as_sequence*/
+ &__pyx_tp_as_mapping_LogMath, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ &__pyx_tp_as_buffer_LogMath, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
+ __Pyx_DOCSTR("\n Log-space math class.\n \n This class provides fast logarithmic math functions in base\n 1.000+epsilon, useful for fixed point speech recognition.\n\n @param base: The base B in which computation is to be done.\n @type base: float\n @param shift: Log values are shifted right by this many bits.\n @type shift: int\n @param use_table Whether to use an add table or not\n @type use_table: bool\n "), /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ __pyx_methods_10sphinxbase_LogMath, /*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*/
+ __pyx_pf_10sphinxbase_7LogMath___init__, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new_10sphinxbase_LogMath, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*tp_version_tag*/
+ #endif
+};
+static struct __pyx_vtabstruct_10sphinxbase_NGramIter __pyx_vtable_10sphinxbase_NGramIter;
+
+static PyObject *__pyx_tp_new_10sphinxbase_NGramIter(PyTypeObject *t, PyObject *a, PyObject *k) {
+ struct __pyx_obj_10sphinxbase_NGramIter *p;
+ PyObject *o = (*t->tp_alloc)(t, 0);
+ if (!o) return 0;
+ p = ((struct __pyx_obj_10sphinxbase_NGramIter *)o);
+ p->__pyx_vtab = __pyx_vtabptr_10sphinxbase_NGramIter;
+ p->lm = ((struct __pyx_obj_10sphinxbase_NGramModel *)Py_None); Py_INCREF(Py_None);
+ p->words = Py_None; Py_INCREF(Py_None);
+ if (__pyx_pf_10sphinxbase_9NGramIter___cinit__(o, a, k) < 0) {
+ Py_DECREF(o); o = 0;
+ }
+ return o;
+}
+
+static void __pyx_tp_dealloc_10sphinxbase_NGramIter(PyObject *o) {
+ struct __pyx_obj_10sphinxbase_NGramIter *p = (struct __pyx_obj_10sphinxbase_NGramIter *)o;
+ Py_XDECREF(((PyObject *)p->lm));
+ Py_XDECREF(p->words);
+ (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_10sphinxbase_NGramIter(PyObject *o, visitproc v, void *a) {
+ int e;
+ struct __pyx_obj_10sphinxbase_NGramIter *p = (struct __pyx_obj_10sphinxbase_NGramIter *)o;
+ if (p->lm) {
+ e = (*v)(((PyObject*)p->lm), a); if (e) return e;
+ }
+ if (p->words) {
+ e = (*v)(p->words, a); if (e) return e;
+ }
+ return 0;
+}
+
+static int __pyx_tp_clear_10sphinxbase_NGramIter(PyObject *o) {
+ struct __pyx_obj_10sphinxbase_NGramIter *p = (struct __pyx_obj_10sphinxbase_NGramIter *)o;
+ PyObject* tmp;
+ tmp = ((PyObject*)p->lm);
+ p->lm = ((struct __pyx_obj_10sphinxbase_NGramModel *)Py_None); Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->words);
+ p->words = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ return 0;
+}
+
+static struct PyMethodDef __pyx_methods_10sphinxbase_NGramIter[] = {
+ {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_10sphinxbase_9NGramIter___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_10sphinxbase_9NGramIter___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("successors"), (PyCFunction)__pyx_pf_10sphinxbase_9NGramIter_successors, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_9NGramIter_successors)},
+ {0, 0, 0, 0}
+};
+
+static struct PyMemberDef __pyx_members_10sphinxbase_NGramIter[] = {
+ {(char *)"log_prob", T_FLOAT, offsetof(struct __pyx_obj_10sphinxbase_NGramIter, log_prob), READONLY, 0},
+ {(char *)"log_bowt", T_FLOAT, offsetof(struct __pyx_obj_10sphinxbase_NGramIter, log_bowt), READONLY, 0},
+ {(char *)"words", T_OBJECT, offsetof(struct __pyx_obj_10sphinxbase_NGramIter, words), READONLY, 0},
+ {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_NGramIter = {
+ 0, /*nb_add*/
+ 0, /*nb_subtract*/
+ 0, /*nb_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_divide*/
+ #endif
+ 0, /*nb_remainder*/
+ 0, /*nb_divmod*/
+ 0, /*nb_power*/
+ 0, /*nb_negative*/
+ 0, /*nb_positive*/
+ 0, /*nb_absolute*/
+ 0, /*nb_nonzero*/
+ 0, /*nb_invert*/
+ 0, /*nb_lshift*/
+ 0, /*nb_rshift*/
+ 0, /*nb_and*/
+ 0, /*nb_xor*/
+ 0, /*nb_or*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_coerce*/
+ #endif
+ 0, /*nb_int*/
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*reserved*/
+ #else
+ 0, /*nb_long*/
+ #endif
+ 0, /*nb_float*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_oct*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_hex*/
+ #endif
+ 0, /*nb_inplace_add*/
+ 0, /*nb_inplace_subtract*/
+ 0, /*nb_inplace_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_inplace_divide*/
+ #endif
+ 0, /*nb_inplace_remainder*/
+ 0, /*nb_inplace_power*/
+ 0, /*nb_inplace_lshift*/
+ 0, /*nb_inplace_rshift*/
+ 0, /*nb_inplace_and*/
+ 0, /*nb_inplace_xor*/
+ 0, /*nb_inplace_or*/
+ 0, /*nb_floor_divide*/
+ 0, /*nb_true_divide*/
+ 0, /*nb_inplace_floor_divide*/
+ 0, /*nb_inplace_true_divide*/
+ #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
+ 0, /*nb_index*/
+ #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_NGramIter = {
+ 0, /*sq_length*/
+ 0, /*sq_concat*/
+ 0, /*sq_repeat*/
+ 0, /*sq_item*/
+ 0, /*sq_slice*/
+ 0, /*sq_ass_item*/
+ 0, /*sq_ass_slice*/
+ 0, /*sq_contains*/
+ 0, /*sq_inplace_concat*/
+ 0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_NGramIter = {
+ 0, /*mp_length*/
+ 0, /*mp_subscript*/
+ 0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_NGramIter = {
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getreadbuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getwritebuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getsegcount*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getcharbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_getbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_releasebuffer*/
+ #endif
+};
+
+PyTypeObject __pyx_type_10sphinxbase_NGramIter = {
+ PyVarObject_HEAD_INIT(0, 0)
+ __Pyx_NAMESTR("sphinxbase.NGramIter"), /*tp_name*/
+ sizeof(struct __pyx_obj_10sphinxbase_NGramIter), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_10sphinxbase_NGramIter, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ &__pyx_tp_as_number_NGramIter, /*tp_as_number*/
+ &__pyx_tp_as_sequence_NGramIter, /*tp_as_sequence*/
+ &__pyx_tp_as_mapping_NGramIter, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ &__pyx_tp_as_buffer_NGramIter, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+ __Pyx_DOCSTR("\n N-Gram language model iterator class.\n\n This class provides access to the individual N-grams stored in a\n language model.\n "), /*tp_doc*/
+ __pyx_tp_traverse_10sphinxbase_NGramIter, /*tp_traverse*/
+ __pyx_tp_clear_10sphinxbase_NGramIter, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ __pyx_pf_10sphinxbase_9NGramIter___iter__, /*tp_iter*/
+ __pyx_pf_10sphinxbase_9NGramIter___next__, /*tp_iternext*/
+ __pyx_methods_10sphinxbase_NGramIter, /*tp_methods*/
+ __pyx_members_10sphinxbase_NGramIter, /*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*/
+ __pyx_tp_new_10sphinxbase_NGramIter, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*tp_version_tag*/
+ #endif
+};
+
+static PyObject *__pyx_tp_new_10sphinxbase_HuffCode(PyTypeObject *t, PyObject *a, PyObject *k) {
+ struct __pyx_obj_10sphinxbase_HuffCode *p;
+ PyObject *o = (*t->tp_alloc)(t, 0);
+ if (!o) return 0;
+ p = ((struct __pyx_obj_10sphinxbase_HuffCode *)o);
+ p->fh = Py_None; Py_INCREF(Py_None);
+ return o;
+}
+
+static void __pyx_tp_dealloc_10sphinxbase_HuffCode(PyObject *o) {
+ struct __pyx_obj_10sphinxbase_HuffCode *p = (struct __pyx_obj_10sphinxbase_HuffCode *)o;
+ {
+ PyObject *etype, *eval, *etb;
+ PyErr_Fetch(&etype, &eval, &etb);
+ ++Py_REFCNT(o);
+ __pyx_pf_10sphinxbase_8HuffCode___dealloc__(o);
+ if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+ --Py_REFCNT(o);
+ PyErr_Restore(etype, eval, etb);
+ }
+ Py_XDECREF(p->fh);
+ (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_10sphinxbase_HuffCode(PyObject *o, visitproc v, void *a) {
+ int e;
+ struct __pyx_obj_10sphinxbase_HuffCode *p = (struct __pyx_obj_10sphinxbase_HuffCode *)o;
+ if (p->fh) {
+ e = (*v)(p->fh, a); if (e) return e;
+ }
+ return 0;
+}
+
+static int __pyx_tp_clear_10sphinxbase_HuffCode(PyObject *o) {
+ struct __pyx_obj_10sphinxbase_HuffCode *p = (struct __pyx_obj_10sphinxbase_HuffCode *)o;
+ PyObject* tmp;
+ tmp = ((PyObject*)p->fh);
+ p->fh = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ return 0;
+}
+
+static struct PyMethodDef __pyx_methods_10sphinxbase_HuffCode[] = {
+ {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_read, METH_O, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_write, METH_O, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("dump"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_dump, METH_O, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("encode"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_encode, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_8HuffCode_encode)},
+ {__Pyx_NAMESTR("decode"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_decode, METH_O, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_8HuffCode_decode)},
+ {__Pyx_NAMESTR("attach"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_attach, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("detach"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_detach, METH_NOARGS, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("encode_to_file"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_encode_to_file, METH_O, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("decode_from_file"), (PyCFunction)__pyx_pf_10sphinxbase_8HuffCode_decode_from_file, METH_NOARGS, __Pyx_DOCSTR(0)},
+ {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_HuffCode = {
+ 0, /*nb_add*/
+ 0, /*nb_subtract*/
+ 0, /*nb_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_divide*/
+ #endif
+ 0, /*nb_remainder*/
+ 0, /*nb_divmod*/
+ 0, /*nb_power*/
+ 0, /*nb_negative*/
+ 0, /*nb_positive*/
+ 0, /*nb_absolute*/
+ 0, /*nb_nonzero*/
+ 0, /*nb_invert*/
+ 0, /*nb_lshift*/
+ 0, /*nb_rshift*/
+ 0, /*nb_and*/
+ 0, /*nb_xor*/
+ 0, /*nb_or*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_coerce*/
+ #endif
+ 0, /*nb_int*/
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*reserved*/
+ #else
+ 0, /*nb_long*/
+ #endif
+ 0, /*nb_float*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_oct*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_hex*/
+ #endif
+ 0, /*nb_inplace_add*/
+ 0, /*nb_inplace_subtract*/
+ 0, /*nb_inplace_multiply*/
+ #if PY_MAJOR_VERSION < 3
+ 0, /*nb_inplace_divide*/
+ #endif
+ 0, /*nb_inplace_remainder*/
+ 0, /*nb_inplace_power*/
+ 0, /*nb_inplace_lshift*/
+ 0, /*nb_inplace_rshift*/
+ 0, /*nb_inplace_and*/
+ 0, /*nb_inplace_xor*/
+ 0, /*nb_inplace_or*/
+ 0, /*nb_floor_divide*/
+ 0, /*nb_true_divide*/
+ 0, /*nb_inplace_floor_divide*/
+ 0, /*nb_inplace_true_divide*/
+ #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
+ 0, /*nb_index*/
+ #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_HuffCode = {
+ 0, /*sq_length*/
+ 0, /*sq_concat*/
+ 0, /*sq_repeat*/
+ 0, /*sq_item*/
+ 0, /*sq_slice*/
+ 0, /*sq_ass_item*/
+ 0, /*sq_ass_slice*/
+ 0, /*sq_contains*/
+ 0, /*sq_inplace_concat*/
+ 0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_HuffCode = {
+ 0, /*mp_length*/
+ 0, /*mp_subscript*/
+ 0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_HuffCode = {
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getreadbuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getwritebuffer*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getsegcount*/
+ #endif
+ #if PY_MAJOR_VERSION < 3
+ 0, /*bf_getcharbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_getbuffer*/
+ #endif
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*bf_releasebuffer*/
+ #endif
+};
+
+PyTypeObject __pyx_type_10sphinxbase_HuffCode = {
+ PyVarObject_HEAD_INIT(0, 0)
+ __Pyx_NAMESTR("sphinxbase.HuffCode"), /*tp_name*/
+ sizeof(struct __pyx_obj_10sphinxbase_HuffCode), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ __pyx_tp_dealloc_10sphinxbase_HuffCode, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ &__pyx_tp_as_number_HuffCode, /*tp_as_number*/
+ &__pyx_tp_as_sequence_HuffCode, /*tp_as_sequence*/
+ &__pyx_tp_as_mapping_HuffCode, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ &__pyx_tp_as_buffer_HuffCode, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+ __Pyx_DOCSTR("\n Huffman coding class.\n\n You can either construct a Huffman code from an alphabet of\n symbols with frequencies, or read one from a file. Either the\n alphabet or infile argument (but not both) must be passed to the\n constructor.\n\n @param alphabet: Alphabet of (symbol, frequency) pairs\n @type alphabet: [(str, int)]\n @param infile: File handle or filename to read from\n @type infile: file | str\n "), /*tp_doc*/
+ __pyx_tp_traverse_10sphinxbase_HuffCode, /*tp_traverse*/
+ __pyx_tp_clear_10sphinxbase_HuffCode, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ __pyx_methods_10sphinxbase_HuffCode, /*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*/
+ __pyx_pf_10sphinxbase_8HuffCode___init__, /*tp_init*/
+ 0, /*tp_alloc*/
+ __pyx_tp_new_10sphinxbase_HuffCode, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+ 0, /*tp_bases*/
+ 0, /*tp_mro*/
+ 0, /*tp_cache*/
+ 0, /*tp_subclasses*/
+ 0, /*tp_weaklist*/
+ 0, /*tp_del*/
+ #if PY_VERSION_HEX >= 0x02060000
+ 0, /*tp_version_tag*/
+ #endif
+};
+
+static struct PyMethodDef __pyx_methods[] = {
+ {__Pyx_NAMESTR("binstr"), (PyCFunction)__pyx_pf_10sphinxbase_binstr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_binstr)},
+ {__Pyx_NAMESTR("bincw"), (PyCFunction)__pyx_pf_10sphinxbase_bincw, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10sphinxbase_bincw)},
+ {0, 0, 0, 0}
+};
+
+static void __pyx_init_filenames(void); /*proto*/
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+ PyModuleDef_HEAD_INIT,
+ __Pyx_NAMESTR("sphinxbase"),
+ 0, /* m_doc */
+ -1, /* m_size */
+ __pyx_methods /* m_methods */,
+ NULL, /* m_reload */
+ NULL, /* m_traverse */
+ NULL, /* m_clear */
+ NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+ {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
+ {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
+ {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+ {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0},
+ {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0},
+ {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0},
+ {&__pyx_kp_s_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 0, 1, 0},
+ {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0},
+ {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0},
+ {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
+ {&__pyx_n_s__ARPA, __pyx_k__ARPA, sizeof(__pyx_k__ARPA), 0, 0, 1, 1},
+ {&__pyx_n_s__AUTO, __pyx_k__AUTO, sizeof(__pyx_k__AUTO), 0, 0, 1, 1},
+ {&__pyx_n_s__DMP, __pyx_k__DMP, sizeof(__pyx_k__DMP), 0, 0, 1, 1},
+ {&__pyx_n_s__LOWER, __pyx_k__LOWER, sizeof(__pyx_k__LOWER), 0, 0, 1, 1},
+ {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+ {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1},
+ {&__pyx_n_s__UPPER, __pyx_k__UPPER, sizeof(__pyx_k__UPPER), 0, 0, 1, 1},
+ {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+ {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+ {&__pyx_n_s__a, __pyx_k__a, sizeof(__pyx_k__a), 0, 0, 1, 1},
+ {&__pyx_n_s__alphabet, __pyx_k__alphabet, sizeof(__pyx_k__alphabet), 0, 0, 1, 1},
+ {&__pyx_n_s__b, __pyx_k__b, sizeof(__pyx_k__b), 0, 0, 1, 1},
+ {&__pyx_n_s__base, __pyx_k__base, sizeof(__pyx_k__base), 0, 0, 1, 1},
+ {&__pyx_n_s__cw, __pyx_k__cw, sizeof(__pyx_k__cw), 0, 0, 1, 1},
+ {&__pyx_n_s__detach, __pyx_k__detach, sizeof(__pyx_k__detach), 0, 0, 1, 1},
+ {&__pyx_n_s__enumerate, __pyx_k__enumerate, sizeof(__pyx_k__enumerate), 0, 0, 1, 1},
+ {&__pyx_n_s__fh, __pyx_k__fh, sizeof(__pyx_k__fh), 0, 0, 1, 1},
+ {&__pyx_n_s__file, __pyx_k__file, sizeof(__pyx_k__file), 0, 0, 1, 1},
+ {&__pyx_n_s__file_name, __pyx_k__file_name, sizeof(__pyx_k__file_name), 0, 0, 1, 1},
+ {&__pyx_n_s__first_item, __pyx_k__first_item, sizeof(__pyx_k__first_item), 0, 0, 1, 1},
+ {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
+ {&__pyx_n_s__frum, __pyx_k__frum, sizeof(__pyx_k__frum), 0, 0, 1, 1},
+ {&__pyx_n_s__hc, __pyx_k__hc, sizeof(__pyx_k__hc), 0, 0, 1, 1},
+ {&__pyx_n_s__infile, __pyx_k__infile, sizeof(__pyx_k__infile), 0, 0, 1, 1},
+ {&__pyx_n_s__itor, __pyx_k__itor, sizeof(__pyx_k__itor), 0, 0, 1, 1},
+ {&__pyx_n_s__lm, __pyx_k__lm, sizeof(__pyx_k__lm), 0, 0, 1, 1},
+ {&__pyx_n_s__lmath, __pyx_k__lmath, sizeof(__pyx_k__lmath), 0, 0, 1, 1},
+ {&__pyx_n_s__lmctl, __pyx_k__lmctl, sizeof(__pyx_k__lmctl), 0, 0, 1, 1},
+ {&__pyx_n_s__log_bowt, __pyx_k__log_bowt, sizeof(__pyx_k__log_bowt), 0, 0, 1, 1},
+ {&__pyx_n_s__log_prob, __pyx_k__log_prob, sizeof(__pyx_k__log_prob), 0, 0, 1, 1},
+ {&__pyx_n_s__lw, __pyx_k__lw, sizeof(__pyx_k__lw), 0, 0, 1, 1},
+ {&__pyx_n_s__m, __pyx_k__m, sizeof(__pyx_k__m), 0, 0, 1, 1},
+ {&__pyx_n_s__min, __pyx_k__min, sizeof(__pyx_k__min), 0, 0, 1, 1},
+ {&__pyx_n_s__mode, __pyx_k__mode, sizeof(__pyx_k__mode), 0, 0, 1, 1},
+ {&__pyx_n_s__nbits, __pyx_k__nbits, sizeof(__pyx_k__nbits), 0, 0, 1, 1},
+ {&__pyx_n_s__ord, __pyx_k__ord, sizeof(__pyx_k__ord), 0, 0, 1, 1},
+ {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
+ {&__pyx_n_s__rb, __pyx_k__rb, sizeof(__pyx_k__rb), 0, 0, 1, 1},
+ {&__pyx_n_s__read, __pyx_k__read, sizeof(__pyx_k__read), 0, 0, 1, 1},
+ {&__pyx_n_s__set_iter, __pyx_k__set_iter, sizeof(__pyx_k__set_iter), 0, 0, 1, 1},
+ {&__pyx_n_s__shift, __pyx_k__shift, sizeof(__pyx_k__shift), 0, 0, 1, 1},
+ {&__pyx_n_s__too, __pyx_k__too, sizeof(__pyx_k__too), 0, 0, 1, 1},
+ {&__pyx_n_s__use_table, __pyx_k__use_table, sizeof(__pyx_k__use_table), 0, 0, 1, 1},
+ {&__pyx_n_s__uw, __pyx_k__uw, sizeof(__pyx_k__uw), 0, 0, 1, 1},
+ {&__pyx_n_s__val, __pyx_k__val, sizeof(__pyx_k__val), 0, 0, 1, 1},
+ {&__pyx_n_s__w, __pyx_k__w, sizeof(__pyx_k__w), 0, 0, 1, 1},
+ {&__pyx_n_s__wb, __pyx_k__wb, sizeof(__pyx_k__wb), 0, 0, 1, 1},
+ {&__pyx_n_s__weight, __pyx_k__weight, sizeof(__pyx_k__weight), 0, 0, 1, 1},
+ {&__pyx_n_s__wip, __pyx_k__wip, sizeof(__pyx_k__wip), 0, 0, 1, 1},
+ {&__pyx_n_s__word, __pyx_k__word, sizeof(__pyx_k__word), 0, 0, 1, 1},
+ {&__pyx_n_s__words, __pyx_k__words, sizeof(__pyx_k__words), 0, 0, 1, 1},
+ {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+ __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_StopIteration = __Pyx_GetName(__pyx_b, __pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_ord = __Pyx_GetName(__pyx_b, __pyx_n_s__ord); if (!__pyx_builtin_ord) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_min = __Pyx_GetName(__pyx_b, __pyx_n_s__min); if (!__pyx_builtin_min) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_enumerate = __Pyx_GetName(__pyx_b, __pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ return 0;
+ __pyx_L1_error:;
+ return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+ if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ return 0;
+ __pyx_L1_error:;
+ return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC initsphinxbase(void); /*proto*/
+PyMODINIT_FUNC initsphinxbase(void)
+#else
+PyMODINIT_FUNC PyInit_sphinxbase(void); /*proto*/
+PyMODINIT_FUNC PyInit_sphinxbase(void)
+#endif
+{
+ PyObject *__pyx_t_1 = NULL;
+ #if CYTHON_REFNANNY
+ void* __pyx_refnanny = NULL;
+ __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+ if (!__Pyx_RefNanny) {
+ PyErr_Clear();
+ __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+ if (!__Pyx_RefNanny)
+ Py_FatalError("failed to import 'refnanny' module");
+ }
+ __pyx_refnanny = __Pyx_RefNanny->SetupContext("PyMODINIT_FUNC PyInit_sphinxbase(void)", __LINE__, __FILE__);
+ #endif
+ __pyx_init_filenames();
+ __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ #if PY_MAJOR_VERSION < 3
+ __pyx_empty_bytes = PyString_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ #else
+ __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ #endif
+ /*--- Library function declarations ---*/
+ /*--- Threads initialization code ---*/
+ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+ #ifdef WITH_THREAD /* Python build with threading support? */
+ PyEval_InitThreads();
+ #endif
+ #endif
+ /*--- Module creation code ---*/
+ #if PY_MAJOR_VERSION < 3
+ __pyx_m = Py_InitModule4(__Pyx_NAMESTR("sphinxbase"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
+ #else
+ __pyx_m = PyModule_Create(&__pyx_moduledef);
+ #endif
+ if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ #if PY_MAJOR_VERSION < 3
+ Py_INCREF(__pyx_m);
+ #endif
+ __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
+ if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ /*--- Initialize various global constants etc. ---*/
+ if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__pyx_module_is_main_sphinxbase) {
+ if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ }
+ /*--- Builtin init code ---*/
+ if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ /*--- Global init code ---*/
+ /*--- Function export code ---*/
+ /*--- Type init code ---*/
+ __pyx_vtabptr_10sphinxbase_NGramModel = &__pyx_vtable_10sphinxbase_NGramModel;
+ #if PY_MAJOR_VERSION >= 3
+ __pyx_vtable_10sphinxbase_NGramModel.set_lm = (PyObject *(*)(struct __pyx_obj_10sphinxbase_NGramModel *, ngram_model_t *))__pyx_f_10sphinxbase_10NGramModel_set_lm;
+ __pyx_vtable_10sphinxbase_NGramModel.set_lmath = (PyObject *(*)(struct __pyx_obj_10sphinxbase_NGramModel *, logmath_t *))__pyx_f_10sphinxbase_10NGramModel_set_lmath;
+ #else
+ *(void(**)(void))&__pyx_vtable_10sphinxbase_NGramModel.set_lm = (void(*)(void))__pyx_f_10sphinxbase_10NGramModel_set_lm;
+ *(void(**)(void))&__pyx_vtable_10sphinxbase_NGramModel.set_lmath = (void(*)(void))__pyx_f_10sphinxbase_10NGramModel_set_lmath;
+ #endif
+ if (PyType_Ready(&__pyx_type_10sphinxbase_NGramModel) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetVtable(__pyx_type_10sphinxbase_NGramModel.tp_dict, __pyx_vtabptr_10sphinxbase_NGramModel) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "NGramModel", (PyObject *)&__pyx_type_10sphinxbase_NGramModel) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_10sphinxbase_NGramModel = &__pyx_type_10sphinxbase_NGramModel;
+ if (PyType_Ready(&__pyx_type_10sphinxbase_LogMath) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "LogMath", (PyObject *)&__pyx_type_10sphinxbase_LogMath) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_10sphinxbase_LogMath = &__pyx_type_10sphinxbase_LogMath;
+ __pyx_vtabptr_10sphinxbase_NGramIter = &__pyx_vtable_10sphinxbase_NGramIter;
+ #if PY_MAJOR_VERSION >= 3
+ __pyx_vtable_10sphinxbase_NGramIter.set_iter = (PyObject *(*)(struct __pyx_obj_10sphinxbase_NGramIter *, ngram_iter_t *))__pyx_f_10sphinxbase_9NGramIter_set_iter;
+ #else
+ *(void(**)(void))&__pyx_vtable_10sphinxbase_NGramIter.set_iter = (void(*)(void))__pyx_f_10sphinxbase_9NGramIter_set_iter;
+ #endif
+ if (PyType_Ready(&__pyx_type_10sphinxbase_NGramIter) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetVtable(__pyx_type_10sphinxbase_NGramIter.tp_dict, __pyx_vtabptr_10sphinxbase_NGramIter) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "NGramIter", (PyObject *)&__pyx_type_10sphinxbase_NGramIter) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_10sphinxbase_NGramIter = &__pyx_type_10sphinxbase_NGramIter;
+ if (PyType_Ready(&__pyx_type_10sphinxbase_HuffCode) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "HuffCode", (PyObject *)&__pyx_type_10sphinxbase_HuffCode) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_10sphinxbase_HuffCode = &__pyx_type_10sphinxbase_HuffCode;
+ /*--- Type import code ---*/
+ /*--- Function import code ---*/
+ /*--- Execution code ---*/
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":24
+ * @type use_table: bool
+ * """
+ * def __init__(self, base=1.0001, shift=0, use_table=1): # <<<<<<<<<<<<<<
+ * self.lmath = logmath_init(base, shift, use_table)
+ *
+ */
+ __pyx_t_1 = PyFloat_FromDouble(1.0001); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_1 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":122
+ *
+ * # Unfortunately, Cython doesn't actually export enums to Python...
+ * AUTO = NGRAM_AUTO # <<<<<<<<<<<<<<
+ * ARPA = NGRAM_ARPA
+ * DMP = NGRAM_DMP
+ */
+ __pyx_t_1 = PyInt_FromLong(NGRAM_AUTO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__AUTO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":123
+ * # Unfortunately, Cython doesn't actually export enums to Python...
+ * AUTO = NGRAM_AUTO
+ * ARPA = NGRAM_ARPA # <<<<<<<<<<<<<<
+ * DMP = NGRAM_DMP
+ * UPPER = NGRAM_UPPER
+ */
+ __pyx_t_1 = PyInt_FromLong(NGRAM_ARPA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ARPA, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":124
+ * AUTO = NGRAM_AUTO
+ * ARPA = NGRAM_ARPA
+ * DMP = NGRAM_DMP # <<<<<<<<<<<<<<
+ * UPPER = NGRAM_UPPER
+ * LOWER = NGRAM_LOWER
+ */
+ __pyx_t_1 = PyInt_FromLong(NGRAM_DMP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DMP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":125
+ * ARPA = NGRAM_ARPA
+ * DMP = NGRAM_DMP
+ * UPPER = NGRAM_UPPER # <<<<<<<<<<<<<<
+ * LOWER = NGRAM_LOWER
+ *
+ */
+ __pyx_t_1 = PyInt_FromLong(NGRAM_UPPER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UPPER, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":126
+ * DMP = NGRAM_DMP
+ * UPPER = NGRAM_UPPER
+ * LOWER = NGRAM_LOWER # <<<<<<<<<<<<<<
+ *
+ * cdef class NGramModel:
+ */
+ __pyx_t_1 = PyInt_FromLong(NGRAM_LOWER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOWER, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":146
+ * @type uw: float
+ * """
+ * def __init__(self, file=None, lw=1.0, wip=1.0, uw=1.0, lmctl=None): # <<<<<<<<<<<<<<
+ * self.lmath = logmath_init(1.0001, 0, 0)
+ * if file:
+ */
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_2 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_3 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_4 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":176
+ * ngram_model_free(self.lm)
+ *
+ * def apply_weights(self, lw=1.0, wip=1.0, uw=1.0): # <<<<<<<<<<<<<<
+ * """
+ * Change the language model weights applied in L{score}.
+ */
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_5 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_6 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_7 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":369
+ * return itor
+ *
+ * def add_word(self, word, weight=1.0): # <<<<<<<<<<<<<<
+ * return ngram_model_add_word(self.lm, word, weight)
+ *
+ */
+ __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_8 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pyx":384
+ * raise ValueError, "Casefolding failed"
+ *
+ * def write(self, file_name, format=NGRAM_AUTO): # <<<<<<<<<<<<<<
+ * cdef int rv
+ * rv = ngram_model_write(self.lm, file_name, format)
+ */
+ __pyx_t_1 = PyInt_FromLong(NGRAM_AUTO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_k_11 = __pyx_t_1;
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+
+ /* "/home/nshmyrev/projects/cmusphinx-dist/t/sphinxbase/python/sphinxbase.pxd":1
+ * # Copyright (c) 2008 Carnegie Mellon University. All rights # <<<<<<<<<<<<<<
+ * # reserved.
+ * #
+ */
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ if (__pyx_m) {
+ __Pyx_AddTraceback("init sphinxbase");
+ Py_DECREF(__pyx_m); __pyx_m = 0;
+ } else if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ImportError, "init sphinxbase");
+ }
+ __pyx_L0:;
+ __Pyx_RefNannyFinishContext();
+ #if PY_MAJOR_VERSION < 3
+ return;
+ #else
+ return __pyx_m;
+ #endif
+}
+
+static const char *__pyx_filenames[] = {
+ "sphinxbase.pyx",
+};
+
+/* Runtime support code */
+
+static void __pyx_init_filenames(void) {
+ __pyx_f = __pyx_filenames;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+ const char* func_name,
+ PyObject* kw_name)
+{
+ PyErr_Format(PyExc_TypeError,
+ #if PY_MAJOR_VERSION >= 3
+ "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+ #else
+ "%s() got multiple values for keyword argument '%s'", func_name,
+ PyString_AS_STRING(kw_name));
+ #endif
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+ const char* func_name,
+ int exact,
+ Py_ssize_t num_min,
+ Py_ssize_t num_max,
+ Py_ssize_t num_found)
+{
+ Py_ssize_t num_expected;
+ const char *number, *more_or_less;
+
+ if (num_found < num_min) {
+ num_expected = num_min;
+ more_or_less = "at least";
+ } else {
+ num_expected = num_max;
+ more_or_less = "at most";
+ }
+ if (exact) {
+ more_or_less = "exactly";
+ }
+ number = (num_expected == 1) ? "" : "s";
+ PyErr_Format(PyExc_TypeError,
+ #if PY_VERSION_HEX < 0x02050000
+ "%s() takes %s %d positional argument%s (%d given)",
+ #else
+ "%s() takes %s %zd positional argument%s (%zd given)",
+ #endif
+ func_name, more_or_less, num_expected, number, num_found);
+}
+
+static int __Pyx_ParseOptionalKeywords(
+ PyObject *kwds,
+ PyObject **argnames[],
+ PyObject *kwds2,
+ PyObject *values[],
+ Py_ssize_t num_pos_args,
+ const char* function_name)
+{
+ PyObject *key = 0, *value = 0;
+ Py_ssize_t pos = 0;
+ PyObject*** name;
+ PyObject*** first_kw_arg = argnames + num_pos_args;
+
+ while (PyDict_Next(kwds, &pos, &key, &value)) {
+ name = first_kw_arg;
+ while (*name && (**name != key)) name++;
+ if (*name) {
+ values[name-argnames] = value;
+ } else {
+ #if PY_MAJOR_VERSION < 3
+ if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
+ #else
+ if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) {
+ #endif
+ goto invalid_keyword_type;
+ } else {
+ for (name = first_kw_arg; *name; name++) {
+ #if PY_MAJOR_VERSION >= 3
+ if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
+ PyUnicode_Compare(**name, key) == 0) break;
+ #else
+ if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
+ _PyString_Eq(**name, key)) break;
+ #endif
+ }
+ if (*name) {
+ values[name-argnames] = value;
+ } else {
+ /* unexpected keyword found */
+ for (name=argnames; name != first_kw_arg; name++) {
+ if (**name == key) goto arg_passed_twice;
+ #if PY_MAJOR_VERSION >= 3
+ if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
+ PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
+ #else
+ if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
+ _PyString_Eq(**name, key)) goto arg_passed_twice;
+ #endif
+ }
+ if (kwds2) {
+ if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+ } else {
+ goto invalid_keyword;
+ }
+ }
+ }
+ }
+ }
+ return 0;
+arg_passed_twice:
+ __Pyx_RaiseDoubleKeywordsError(function_name, **name);
+ goto bad;
+invalid_keyword_type:
+ PyErr_Format(PyExc_TypeError,
+ "%s() keywords must be strings", function_name);
+ goto bad;
+invalid_keyword:
+ PyErr_Format(PyExc_TypeError,
+ #if PY_MAJOR_VERSION < 3
+ "%s() got an unexpected keyword argument '%s'",
+ function_name, PyString_AsString(key));
+ #else
+ "%s() got an unexpected keyword argument '%U'",
+ function_name, key);
+ #endif
+bad:
+ return -1;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+ PyErr_Format(PyExc_ValueError,
+ #if PY_VERSION_HEX < 0x02050000
+ "need more than %d value%s to unpack", (int)index,
+ #else
+ "need more than %zd value%s to unpack", index,
+ #endif
+ (index == 1) ? "" : "s");
+}
+
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void) {
+ PyErr_SetString(PyExc_ValueError, "too many values to unpack");
+}
+
+static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
+ PyObject *item;
+ if (!(item = PyIter_Next(iter))) {
+ if (!PyErr_Occurred()) {
+ __Pyx_RaiseNeedMoreValuesError(index);
+ }
+ }
+ return item;
+}
+
+static int __Pyx_EndUnpack(PyObject *iter) {
+ PyObject *item;
+ if ((item = PyIter_Next(iter))) {
+ Py_DECREF(item);
+ __Pyx_RaiseTooManyValuesError();
+ return -1;
+ }
+ else if (!PyErr_Occurred())
+ return 0;
+ else
+ return -1;
+}
+
+
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+ long q = a / b;
+ long r = a - q*b;
+ q -= ((r != 0) & ((r ^ b) < 0));
+ return q;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+ const char *name, int exact)
+{
+ if (!type) {
+ PyErr_Format(PyExc_SystemError, "Missing type object");
+ return 0;
+ }
+ if (none_allowed && obj == Py_None) return 1;
+ else if (exact) {
+ if (Py_TYPE(obj) == type) return 1;
+ }
+ else {
+ if (PyObject_TypeCheck(obj, type)) return 1;
+ }
+ PyErr_Format(PyExc_TypeError,
+ "Argument '%s' has incorrect type (expected %s, got %s)",
+ name, type->tp_name, Py_TYPE(obj)->tp_name);
+ return 0;
+}
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+ PyObject *result;
+ result = PyObject_GetAttr(dict, name);
+ if (!result)
+ PyErr_SetObject(PyExc_NameError, name);
+ return result;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+ PyObject *tmp_type, *tmp_value, *tmp_tb;
+ PyThreadState *tstate = PyThreadState_GET();
+
+ tmp_type = tstate->curexc_type;
+ tmp_value = tstate->curexc_value;
+ tmp_tb = tstate->curexc_traceback;
+ tstate->curexc_type = type;
+ tstate->curexc_value = value;
+ tstate->curexc_traceback = tb;
+ Py_XDECREF(tmp_type);
+ Py_XDECREF(tmp_value);
+ Py_XDECREF(tmp_tb);
+}
+
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+ PyThreadState *tstate = PyThreadState_GET();
+ *type = tstate->curexc_type;
+ *value = tstate->curexc_value;
+ *tb = tstate->curexc_traceback;
+
+ tstate->curexc_type = 0;
+ tstate->curexc_value = 0;
+ tstate->curexc_traceback = 0;
+}
+
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
+ Py_XINCREF(type);
+ Py_XINCREF(value);
+ Py_XINCREF(tb);
+ /* First, check the traceback argument, replacing None with NULL. */
+ if (tb == Py_None) {
+ Py_DECREF(tb);
+ tb = 0;
+ }
+ else if (tb != NULL && !PyTraceBack_Check(tb)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: arg 3 must be a traceback or None");
+ goto raise_error;
+ }
+ /* Next, replace a missing value with None */
+ if (value == NULL) {
+ value = Py_None;
+ Py_INCREF(value);
+ }
+ #if PY_VERSION_HEX < 0x02050000
+ if (!PyClass_Check(type))
+ #else
+ if (!PyType_Check(type))
+ #endif
+ {
+ /* Raising an instance. The value should be a dummy. */
+ if (value != Py_None) {
+ PyErr_SetString(PyExc_TypeError,
+ "instance exception may not have a separate value");
+ goto raise_error;
+ }
+ /* Normalize to raise <class>, <instance> */
+ Py_DECREF(value);
+ value = type;
+ #if PY_VERSION_HEX < 0x02050000
+ if (PyInstance_Check(type)) {
+ type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+ Py_INCREF(type);
+ }
+ else {
+ type = 0;
+ PyErr_SetString(PyExc_TypeError,
+ "raise: exception must be an old-style class or instance");
+ goto raise_error;
+ }
+ #else
+ type = (PyObject*) Py_TYPE(type);
+ Py_INCREF(type);
+ if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: exception class must be a subclass of BaseException");
+ goto raise_error;
+ }
+ #endif
+ }
+
+ __Pyx_ErrRestore(type, value, tb);
+ return;
+raise_error:
+ Py_XDECREF(value);
+ Py_XDECREF(type);
+ Py_XDECREF(tb);
+ return;
+}
+
+#else /* Python 3+ */
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
+ if (tb == Py_None) {
+ tb = 0;
+ } else if (tb && !PyTraceBack_Check(tb)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: arg 3 must be a traceback or None");
+ goto bad;
+ }
+ if (value == Py_None)
+ value = 0;
+
+ if (PyExceptionInstance_Check(type)) {
+ if (value) {
+ PyErr_SetString(PyExc_TypeError,
+ "instance exception may not have a separate value");
+ goto bad;
+ }
+ value = type;
+ type = (PyObject*) Py_TYPE(value);
+ } else if (!PyExceptionClass_Check(type)) {
+ PyErr_SetString(PyExc_TypeError,
+ "raise: exception class must be a subclass of BaseException");
+ goto bad;
+ }
+
+ PyErr_SetObject(type, value);
+
+ if (tb) {
+ PyThreadState *tstate = PyThreadState_GET();
+ PyObject* tmp_tb = tstate->curexc_traceback;
+ if (tb != tmp_tb) {
+ Py_INCREF(tb);
+ tstate->curexc_traceback = tb;
+ Py_XDECREF(tmp_tb);
+ }
+ }
+
+bad:
+ return;
+}
+#endif
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+ const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(unsigned char) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(unsigned char)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to unsigned char" :
+ "value too large to convert to unsigned char");
+ }
+ return (unsigned char)-1;
+ }
+ return (unsigned char)val;
+ }
+ return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+ const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(unsigned short) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(unsigned short)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to unsigned short" :
+ "value too large to convert to unsigned short");
+ }
+ return (unsigned short)-1;
+ }
+ return (unsigned short)val;
+ }
+ return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+ const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(unsigned int) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(unsigned int)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to unsigned int" :
+ "value too large to convert to unsigned int");
+ }
+ return (unsigned int)-1;
+ }
+ return (unsigned int)val;
+ }
+ return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+ const char neg_one = (char)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(char) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(char)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to char" :
+ "value too large to convert to char");
+ }
+ return (char)-1;
+ }
+ return (char)val;
+ }
+ return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+ const short neg_one = (short)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(short) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(short)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to short" :
+ "value too large to convert to short");
+ }
+ return (short)-1;
+ }
+ return (short)val;
+ }
+ return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+ const int neg_one = (int)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(int) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(int)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to int" :
+ "value too large to convert to int");
+ }
+ return (int)-1;
+ }
+ return (int)val;
+ }
+ return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+ const signed char neg_one = (signed char)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(signed char) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(signed char)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to signed char" :
+ "value too large to convert to signed char");
+ }
+ return (signed char)-1;
+ }
+ return (signed char)val;
+ }
+ return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+ const signed short neg_one = (signed short)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(signed short) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(signed short)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to signed short" :
+ "value too large to convert to signed short");
+ }
+ return (signed short)-1;
+ }
+ return (signed short)val;
+ }
+ return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+ const signed int neg_one = (signed int)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+ if (sizeof(signed int) < sizeof(long)) {
+ long val = __Pyx_PyInt_AsLong(x);
+ if (unlikely(val != (long)(signed int)val)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (is_unsigned && unlikely(val < 0)) ?
+ "can't convert negative value to signed int" :
+ "value too large to convert to signed int");
+ }
+ return (signed int)-1;
+ }
+ return (signed int)val;
+ }
+ return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+ const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+ if (likely(PyInt_Check(x))) {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to unsigned long");
+ return (unsigned long)-1;
+ }
+ return (unsigned long)val;
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ if (unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to unsigned long");
+ return (unsigned long)-1;
+ }
+ return PyLong_AsUnsignedLong(x);
+ } else {
+ return PyLong_AsLong(x);
+ }
+ } else {
+ unsigned long val;
+ PyObject *tmp = __Pyx_PyNumber_Int(x);
+ if (!tmp) return (unsigned long)-1;
+ val = __Pyx_PyInt_AsUnsignedLong(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+ const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+ if (likely(PyInt_Check(x))) {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to unsigned PY_LONG_LONG");
+ return (unsigned PY_LONG_LONG)-1;
+ }
+ return (unsigned PY_LONG_LONG)val;
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ if (unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to unsigned PY_LONG_LONG");
+ return (unsigned PY_LONG_LONG)-1;
+ }
+ return PyLong_AsUnsignedLongLong(x);
+ } else {
+ return PyLong_AsLongLong(x);
+ }
+ } else {
+ unsigned PY_LONG_LONG val;
+ PyObject *tmp = __Pyx_PyNumber_Int(x);
+ if (!tmp) return (unsigned PY_LONG_LONG)-1;
+ val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+ const long neg_one = (long)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+ if (likely(PyInt_Check(x))) {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to long");
+ return (long)-1;
+ }
+ return (long)val;
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ if (unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to long");
+ return (long)-1;
+ }
+ return PyLong_AsUnsignedLong(x);
+ } else {
+ return PyLong_AsLong(x);
+ }
+ } else {
+ long val;
+ PyObject *tmp = __Pyx_PyNumber_Int(x);
+ if (!tmp) return (long)-1;
+ val = __Pyx_PyInt_AsLong(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+ const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+ if (likely(PyInt_Check(x))) {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to PY_LONG_LONG");
+ return (PY_LONG_LONG)-1;
+ }
+ return (PY_LONG_LONG)val;
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ if (unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to PY_LONG_LONG");
+ return (PY_LONG_LONG)-1;
+ }
+ return PyLong_AsUnsignedLongLong(x);
+ } else {
+ return PyLong_AsLongLong(x);
+ }
+ } else {
+ PY_LONG_LONG val;
+ PyObject *tmp = __Pyx_PyNumber_Int(x);
+ if (!tmp) return (PY_LONG_LONG)-1;
+ val = __Pyx_PyInt_AsLongLong(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+ const signed long neg_one = (signed long)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+ if (likely(PyInt_Check(x))) {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed long");
+ return (signed long)-1;
+ }
+ return (signed long)val;
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ if (unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed long");
+ return (signed long)-1;
+ }
+ return PyLong_AsUnsignedLong(x);
+ } else {
+ return PyLong_AsLong(x);
+ }
+ } else {
+ signed long val;
+ PyObject *tmp = __Pyx_PyNumber_Int(x);
+ if (!tmp) return (signed long)-1;
+ val = __Pyx_PyInt_AsSignedLong(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+ const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+ if (likely(PyInt_Check(x))) {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed PY_LONG_LONG");
+ return (signed PY_LONG_LONG)-1;
+ }
+ return (signed PY_LONG_LONG)val;
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ if (unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed PY_LONG_LONG");
+ return (signed PY_LONG_LONG)-1;
+ }
+ return PyLong_AsUnsignedLongLong(x);
+ } else {
+ return PyLong_AsLongLong(x);
+ }
+ } else {
+ signed PY_LONG_LONG val;
+ PyObject *tmp = __Pyx_PyNumber_Int(x);
+ if (!tmp) return (signed PY_LONG_LONG)-1;
+ val = __Pyx_PyInt_AsSignedLongLong(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+}
+
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+#if PY_VERSION_HEX < 0x03010000
+ PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
+#else
+ PyObject *ob = PyCapsule_New(vtable, 0, 0);
+#endif
+ if (!ob)
+ goto bad;
+ if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
+ goto bad;
+ Py_DECREF(ob);
+ return 0;
+bad:
+ Py_XDECREF(ob);
+ return -1;
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+
+static void __Pyx_AddTraceback(const char *funcname) {
+ PyObject *py_srcfile = 0;
+ PyObject *py_funcname = 0;
+ PyObject *py_globals = 0;
+ PyCodeObject *py_code = 0;
+ PyFrameObject *py_frame = 0;
+
+ #if PY_MAJOR_VERSION < 3
+ py_srcfile = PyString_FromString(__pyx_filename);
+ #else
+ py_srcfile = PyUnicode_FromString(__pyx_filename);
+ #endif
+ if (!py_srcfile) goto bad;
+ if (__pyx_clineno) {
+ #if PY_MAJOR_VERSION < 3
+ py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
+ #else
+ py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
+ #endif
+ }
+ else {
+ #if PY_MAJOR_VERSION < 3
+ py_funcname = PyString_FromString(funcname);
+ #else
+ py_funcname = PyUnicode_FromString(funcname);
+ #endif
+ }
+ if (!py_funcname) goto bad;
+ py_globals = PyModule_GetDict(__pyx_m);
+ if (!py_globals) goto bad;
+ py_code = PyCode_New(
+ 0, /*int argcount,*/
+ #if PY_MAJOR_VERSION >= 3
+ 0, /*int kwonlyargcount,*/
+ #endif
+ 0, /*int nlocals,*/
+ 0, /*int stacksize,*/
+ 0, /*int flags,*/
+ __pyx_empty_bytes, /*PyObject *code,*/
+ __pyx_empty_tuple, /*PyObject *consts,*/
+ __pyx_empty_tuple, /*PyObject *names,*/
+ __pyx_empty_tuple, /*PyObject *varnames,*/
+ __pyx_empty_tuple, /*PyObject *freevars,*/
+ __pyx_empty_tuple, /*PyObject *cellvars,*/
+ py_srcfile, /*PyObject *filename,*/
+ py_funcname, /*PyObject *name,*/
+ __pyx_lineno, /*int firstlineno,*/
+ __pyx_empty_bytes /*PyObject *lnotab*/
+ );
+ if (!py_code) goto bad;
+ py_frame = PyFrame_New(
+ PyThreadState_GET(), /*PyThreadState *tstate,*/
+ py_code, /*PyCodeObject *code,*/
+ py_globals, /*PyObject *globals,*/
+ 0 /*PyObject *locals*/
+ );
+ if (!py_frame) goto bad;
+ py_frame->f_lineno = __pyx_lineno;
+ PyTraceBack_Here(py_frame);
+bad:
+ Py_XDECREF(py_srcfile);
+ Py_XDECREF(py_funcname);
+ Py_XDECREF(py_code);
+ Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ while (t->p) {
+ #if PY_MAJOR_VERSION < 3
+ if (t->is_unicode) {
+ *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+ } else if (t->intern) {
+ *t->p = PyString_InternFromString(t->s);
+ } else {
+ *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+ }
+ #else /* Python 3+ has unicode identifiers */
+ if (t->is_unicode | t->is_str) {
+ if (t->intern) {
+ *t->p = PyUnicode_InternFromString(t->s);
+ } else if (t->encoding) {
+ *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+ } else {
+ *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+ }
+ } else {
+ *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+ }
+ #endif
+ if (!*t->p)
+ return -1;
+ ++t;
+ }
+ return 0;
+}
+
+/* Type Conversion Functions */
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+ if (x == Py_True) return 1;
+ else if ((x == Py_False) | (x == Py_None)) return 0;
+ else return PyObject_IsTrue(x);
+}
+
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+ PyNumberMethods *m;
+ const char *name = NULL;
+ PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+ if (PyInt_Check(x) || PyLong_Check(x))
+#else
+ if (PyLong_Check(x))
+#endif
+ return Py_INCREF(x), x;
+ m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+ if (m && m->nb_int) {
+ name = "int";
+ res = PyNumber_Int(x);
+ }
+ else if (m && m->nb_long) {
+ name = "long";
+ res = PyNumber_Long(x);
+ }
+#else
+ if (m && m->nb_int) {
+ name = "int";
+ res = PyNumber_Long(x);
+ }
+#endif
+ if (res) {
+#if PY_VERSION_HEX < 0x03000000
+ if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+ if (!PyLong_Check(res)) {
+#endif
+ PyErr_Format(PyExc_TypeError,
+ "__%s__ returned non-%s (type %.200s)",
+ name, name, Py_TYPE(res)->tp_name);
+ Py_DECREF(res);
+ return NULL;
+ }
+ }
+ else if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError,
+ "an integer is required");
+ }
+ return res;
+}
+
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+ Py_ssize_t ival;
+ PyObject* x = PyNumber_Index(b);
+ if (!x) return -1;
+ ival = PyInt_AsSsize_t(x);
+ Py_DECREF(x);
+ return ival;
+}
+
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+ if (ival <= LONG_MAX)
+ return PyInt_FromLong((long)ival);
+ else {
+ unsigned char *bytes = (unsigned char *) &ival;
+ int one = 1; int little = (int)*(unsigned char*)&one;
+ return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+ }
+#else
+ return PyInt_FromSize_t(ival);
+#endif
+}
+
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+ unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+ if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+ return (size_t)-1;
+ } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to size_t");
+ return (size_t)-1;
+ }
+ return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
--- /dev/null
+# Copyright (c) 2008 Carnegie Mellon University. All rights
+# reserved.
+#
+# You may copy, modify, and distribute this code under the same terms
+# as PocketSphinx or Python, at your convenience, as long as this
+# notice is not removed.
+#
+# Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+
+# C declarations
+ctypedef float float32
+ctypedef int int32
+ctypedef double float64
+
+# Get Python stuff to access stdio
+cdef extern from "Python.h":
+ ctypedef struct FILE
+ FILE *PyFile_AsFile(object)
+ void *PyMem_Malloc(size_t n)
+ void PyMem_Free(void *p)
+ object PyString_FromStringAndSize(char *v, Py_ssize_t len)
+
+cdef extern from "sphinxbase/logmath.h":
+ ctypedef struct logmath_t
+ logmath_t *logmath_init(float64 base, int shift, int use_table)
+ logmath_t *logmath_retain(logmath_t *lmath)
+ int logmath_free(logmath_t *lmath)
+
+ int logmath_log(logmath_t *lmath, float64 p)
+ float64 logmath_exp(logmath_t *lmath, int p)
+
+ int logmath_ln_to_log(logmath_t *lmath, float64 p)
+ float64 logmath_log_to_ln(logmath_t *lmath, int p)
+
+ int logmath_log10_to_log(logmath_t *lmath, float64 p)
+ float64 logmath_log_to_log10(logmath_t *lmath, int p)
+
+ int logmath_add(logmath_t *lmath, int p, int q)
+
+ int logmath_get_zero(logmath_t *lmath)
+
+cdef extern from "sphinxbase/cmd_ln.h":
+ ctypedef struct cmd_ln_t
+ ctypedef struct arg_t
+ cmd_ln_t *cmd_ln_parse_r(cmd_ln_t *inout_cmdln, arg_t * defn,
+ int argc, char **argv, int strict)
+ void cmd_ln_free_r(cmd_ln_t *cmdln)
+ float32 cmd_ln_float32_r(cmd_ln_t *cmdln, char *key)
+ int32 cmd_ln_int32_r(cmd_ln_t *cmdln, char *key)
+ int cmd_ln_boolean_r(cmd_ln_t *cmdln, char *key)
+ char *cmd_ln_str_r(cmd_ln_t *cmdln, char *key)
+
+cdef extern from "sphinxbase/ckd_alloc.h":
+ void *ckd_calloc(int n, int size)
+ char *ckd_salloc(char *str)
+ void ckd_free(void *ptr)
+
+cdef extern from "sphinxbase/fsg_model.h":
+ ctypedef struct fsg_model_t
+
+cdef extern from "sphinxbase/ngram_model.h":
+ ctypedef enum ngram_file_type_t:
+ NGRAM_AUTO
+ NGRAM_ARPA
+ NGRAM_DMP
+ NGRAM_DMP32
+ ctypedef enum ngram_case_t:
+ NGRAM_UPPER
+ NGRAM_LOWER
+ ctypedef struct ngram_model_t
+ ngram_model_t *ngram_model_read(cmd_ln_t *config,
+ char *file_name,
+ ngram_file_type_t file_type,
+ logmath_t *lmath)
+ ngram_model_t *ngram_model_set_read(cmd_ln_t *config,
+ char *lmctlfile,
+ logmath_t *lmath)
+ ngram_model_t *ngram_model_retain(ngram_model_t *model)
+ int ngram_model_free(ngram_model_t *model)
+
+ int ngram_model_recode(ngram_model_t *model, char *frum, char *too)
+ int ngram_model_casefold(ngram_model_t *model, ngram_case_t kase)
+ int ngram_model_write(ngram_model_t *model, char *file_name,
+ ngram_file_type_t format)
+
+ int ngram_model_apply_weights(ngram_model_t *model,
+ float32 lw, float32 wip, float32 uw)
+ float32 ngram_model_get_weights(ngram_model_t *model, int32 *out_log_wip,
+ int32 *out_log_uw)
+
+ int32 ngram_wid(ngram_model_t *model, char *word)
+ char *ngram_word(ngram_model_t *model, int32 wid)
+ int32 ngram_unknown_wid(ngram_model_t *model)
+ int32 ngram_zero(ngram_model_t *model)
+
+ int32 ngram_ng_score(ngram_model_t *model, int32 wid,
+ int32 *history, int32 n_hist, int32 *n_used)
+ int32 ngram_ng_prob(ngram_model_t *model, int32 wid,
+ int32 *history, int32 n_hist, int32 *n_used)
+
+ int32 ngram_model_add_word(ngram_model_t *model,
+ char *word, float32 weight)
+
+ int32 ngram_model_get_size(ngram_model_t *model)
+ int32 *ngram_model_get_counts(ngram_model_t *model)
+ ctypedef struct ngram_iter_t
+ ngram_iter_t *ngram_ng_iter(ngram_model_t *model, int32 wid,
+ int32 *history, int32 n_hist)
+ ngram_iter_t *ngram_model_mgrams(ngram_model_t *model, int m)
+ int32 *ngram_iter_get(ngram_iter_t *itor,
+ int32 *out_score,
+ int32 *out_bowt)
+ ngram_iter_t *ngram_iter_next(ngram_iter_t *itor)
+ ngram_iter_t *ngram_iter_successors(ngram_iter_t *itor)
+ void ngram_iter_free(ngram_iter_t *itor)
+
+cdef extern from "sphinxbase/huff_code.h":
+ ctypedef struct huff_code_t
+ huff_code_t *huff_code_build_int(int *values, int *frequencies, int nvals)
+ huff_code_t *huff_code_build_str(char **values, int *frequencies, int nvals)
+ huff_code_t *huff_code_read(FILE *infh) except NULL
+ int huff_code_write(huff_code_t *hc, FILE *outfh) except -1
+ int huff_code_dump(huff_code_t *hc, FILE *dumpfh) except -1
+ huff_code_t *huff_code_retain(huff_code_t *hc)
+ int huff_code_free(huff_code_t *hc)
+ FILE *huff_code_attach(huff_code_t *hc, FILE *fh, char *mode)
+ FILE *huff_code_detach(huff_code_t *hc)
+ int huff_code_encode_int(huff_code_t *hc, int sym, unsigned int *outcw)
+ int huff_code_encode_str(huff_code_t *hc, char *sym, unsigned int *outcw)
+ int huff_code_decode_int(huff_code_t *hc, int *outval,
+ char **inout_data, size_t *inout_dlen,
+ int *inout_offset)
+ char *huff_code_decode_str(huff_code_t *hc,
+ char **inout_data, size_t *inout_dlen,
+ int *inout_offset)
+
+# Extension classes
+cdef class NGramModel:
+ cdef ngram_model_t *lm
+ cdef logmath_t *lmath
+ cdef readonly float lw, wip, uw
+
+ cdef set_lm(NGramModel self, ngram_model_t *lm)
+ cdef set_lmath(NGramModel self, logmath_t *lmath)
+
+cdef class LogMath:
+ cdef logmath_t *lmath
+
+cdef class NGramIter:
+ cdef NGramModel lm
+ cdef ngram_iter_t *itor
+ cdef int first_item
+ cdef int m
+ cdef readonly float log_prob, log_bowt
+ cdef readonly object words
+
+ cdef set_iter(NGramIter self, ngram_iter_t *itor)
+
+cdef class HuffCode:
+ cdef huff_code_t *hc
+ cdef object fh
--- /dev/null
+# Copyright (c) 2008 Carnegie Mellon University. All rights
+# reserved.
+#
+# You may copy, modify, and distribute this code under the same terms
+# as PocketSphinx or Python, at your convenience, as long as this
+# notice is not removed.
+#
+# Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+
+cdef class LogMath:
+ """
+ Log-space math class.
+
+ This class provides fast logarithmic math functions in base
+ 1.000+epsilon, useful for fixed point speech recognition.
+
+ @param base: The base B in which computation is to be done.
+ @type base: float
+ @param shift: Log values are shifted right by this many bits.
+ @type shift: int
+ @param use_table Whether to use an add table or not
+ @type use_table: bool
+ """
+ def __init__(self, base=1.0001, shift=0, use_table=1):
+ self.lmath = logmath_init(base, shift, use_table)
+
+ def __dealloc__(self):
+ """
+ Destructor for LogMath class.
+ """
+ logmath_free(self.lmath)
+
+ def get_zero(self):
+ """
+ Get the log-zero value.
+
+ @return: Smallest number representable by this object.
+ @rtype: int
+ """
+ return logmath_get_zero(self.lmath)
+
+ def add(self, a, b):
+ """
+ Add two numbers in log-space.
+
+ @param a: Logarithm A.
+ @type a: int
+ @param b: Logarithm B.
+ @type b: int
+ @return: log(exp(a)+exp(b))
+ @rtype: int
+ """
+ return logmath_add(self.lmath, a, b)
+
+ def log(self, x):
+ """
+ Return log-value of a number.
+
+ @param x: Number (in linear space)
+ @type x: float
+ @return: Log-value of x.
+ @rtype: int
+ """
+ return logmath_log(self.lmath, x)
+
+ def exp(self, x):
+ """
+ Return linear of a log-value
+
+ @param x: Logarithm X (in this object's base)
+ @type x: int
+ @return: Exponent (linear value) of X.
+ @rtype: float
+ """
+ return logmath_exp(self.lmath, x)
+
+ def log_to_ln(self, x):
+ """
+ Return natural logarithm of a log-value.
+
+ @param x: Logarithm X (in this object's base)
+ @type x: int
+ @return: Natural log equivalent of x.
+ @rtype: float
+ """
+ return logmath_log_to_ln(self.lmath, x)
+
+ def log_to_log10(self, x):
+ """
+ Return logarithm in base 10 of a log-value.
+
+ @param x: Logarithm X (in this object's base)
+ @type x: int
+ @return: log10 equivalent of x.
+ @rtype: float
+ """
+ return logmath_log_to_log10(self.lmath, x)
+
+ def ln_to_log(self, x):
+ """
+ Return log-value of a natural logarithm.
+
+ @param x: Logarithm X (in base e)
+ @type x: float
+ @return: Log-value equivalent of x.
+ @rtype: int
+ """
+ return logmath_ln_to_log(self.lmath, x)
+
+ def log10_to_log(self, x):
+ """
+ Return log-value of a base 10 logarithm.
+
+ @param x: Logarithm X (in base 10)
+ @type x: float
+ @return: Log-value equivalent of x.
+ @rtype: int
+ """
+ return logmath_log10_to_log(self.lmath, x)
+
+# Unfortunately, Cython doesn't actually export enums to Python...
+AUTO = NGRAM_AUTO
+ARPA = NGRAM_ARPA
+DMP = NGRAM_DMP
+UPPER = NGRAM_UPPER
+LOWER = NGRAM_LOWER
+
+cdef class NGramModel:
+ """
+ N-Gram language model class.
+
+ This class provides access to N-Gram language models stored on
+ disk. These can be in ARPABO text format or Sphinx DMP format.
+ Methods are provided for scoring N-Grams based on the model
+ and looking up words in the model.
+
+ @param file: Path to an N-Gram model file.
+ @type file: string
+ @param lw: Language weight to apply to model probabilities.
+ @type lw: float
+ @param wip: Word insertion penalty to add to model probabilities
+ @type wip: float
+ @param uw: Weight to give unigrams when interpolating with uniform distribution.
+ @type uw: float
+ """
+ def __init__(self, file=None, lw=1.0, wip=1.0, uw=1.0, lmctl=None):
+ self.lmath = logmath_init(1.0001, 0, 0)
+ if file:
+ self.lm = ngram_model_read(NULL, file, NGRAM_AUTO, self.lmath)
+ ngram_model_apply_weights(self.lm, lw, wip, uw)
+ elif lmctl:
+ self.lm = ngram_model_set_read(NULL, lmctl, self.lmath)
+ else:
+ self.lm = NULL
+ self.lw = lw
+ self.wip = wip
+ self.uw = uw
+
+ cdef set_lm(NGramModel self, ngram_model_t *lm):
+ ngram_model_retain(lm)
+ ngram_model_free(self.lm)
+ self.lm = lm
+
+ cdef set_lmath(NGramModel self, logmath_t *lmath):
+ logmath_retain(lmath)
+ logmath_free(self.lmath)
+ self.lmath = lmath
+
+ def __dealloc__(self):
+ """
+ Destructor for N-Gram model class.
+ """
+ logmath_free(self.lmath)
+ ngram_model_free(self.lm)
+
+ def apply_weights(self, lw=1.0, wip=1.0, uw=1.0):
+ """
+ Change the language model weights applied in L{score}.
+
+ @param lw: Language weight to apply to model probabilities.
+ @type lw: float
+ @param wip: Word insertion penalty to add to model probabilities
+ @type wip: float
+ @param uw: Weight to give unigrams when interpolating with uniform distribution.
+ @type uw: float
+ """
+ self.lw = lw
+ self.wip = wip
+ self.uw = uw
+ ngram_model_apply_weights(self.lm, lw, wip, uw)
+
+ def get_size(self):
+ """
+ Get the order of this model (i.e. the 'N' in 'N-gram')
+
+ @return: Order of this model
+ @rtype: int
+ """
+ return ngram_model_get_size(self.lm)
+
+ def get_counts(self):
+ """
+ Get the counts of each size of N-gram.
+
+ @return: Counts of 1, 2, ..., N grams
+ @rtype: tuple(int)
+ """
+ cdef int *counts
+ counts = ngram_model_get_counts(self.lm)
+ return tuple([counts[i] for i in range(ngram_model_get_size(self.lm))])
+
+ def unknown_wid(self):
+ """
+ Get the ID for an unknown word.
+
+ In the case of a closed-vocabulary language model this will be -1.
+
+ @return: Word ID for the unknown word.
+ @rtype: int
+ """
+ return ngram_unknown_wid(self.lm)
+
+ def zero(self):
+ """
+ Get the log-zero value for this language model.
+
+ @return: Log value used to represent zero.
+ @rtype: float
+ """
+ return logmath_log_to_ln(self.lmath, ngram_zero(self.lm))
+
+ def wid(self, word):
+ """
+ Get the internal ID for a word.
+
+ @param word: Word in question
+ @type word: string
+ @return: Internal ID for word, or -1 if not present
+ @rtype: int
+ """
+ return ngram_wid(self.lm, word)
+
+ def word(self, wid):
+ """
+ Get the string corresponding to an internal word ID.
+
+ @param word: Word ID in question
+ @type word: int
+ @return: String for word, or None if not present
+ @rtype: string
+ """
+ return ngram_word(self.lm, wid)
+
+ # Note that this and prob() are almost exactly the same...
+ def score(self, word, *args):
+ """
+ Get the score for an N-Gram.
+
+ The argument list consists of the history words (as
+ null-terminated strings) of the N-Gram, in reverse order.
+ Therefore, if you wanted to get the N-Gram score for 'a whole
+ joy', you would call::
+
+ score, n_used = model.score('joy', 'whole', 'a')
+
+ This function returns a tuple, consisting of the score and the
+ number of words used in computing it (i.e. the effective size
+ of the N-Gram). The score is returned in logarithmic form,
+ using base e.
+
+ If one of the words is not in the LM's vocabulary, the result
+ will depend on whether this is an open or closed vocabulary
+ language model. For an open-vocabulary model, unknown words
+ are all mapped to the unigram <UNK> which has a non-zero
+ probability and also participates in higher-order N-Grams.
+ Therefore, you will get a score of some sort in this case.
+
+ For a closed-vocabulary model, unknown words are impossible
+ and thus have zero probability. Therefore, if C{word} is
+ unknown, this function will return a 'zero' log-probability,
+ i.e. a large negative number.
+ """
+ cdef int32 wid
+ cdef int32 *hist
+ cdef int32 n_hist
+ cdef int32 n_used
+ cdef int32 score
+ wid = ngram_wid(self.lm, word)
+ n_hist = len(args)
+ hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ for i from 0 <= i < n_hist:
+ spam = args[i]
+ hist[i] = ngram_wid(self.lm, spam)
+ score = ngram_ng_score(self.lm, wid, hist, n_hist, &n_used)
+ ckd_free(hist)
+ return logmath_log_to_ln(self.lmath, score), n_used
+
+ def prob(self, word, *args):
+ """
+ Get the log-probability for an N-Gram.
+
+ This works effectively the same way as L{score}, except that
+ any weights (language weight, insertion penalty) applied to
+ the language model are ignored and the 'raw' probability value
+ is returned.
+ """
+ cdef int32 wid
+ cdef int32 *hist
+ cdef int32 n_hist
+ cdef int32 n_used
+ cdef int32 score
+ wid = ngram_wid(self.lm, word)
+ n_hist = len(args)
+ hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ for i from 0 <= i < n_hist:
+ spam = args[i]
+ hist[i] = ngram_wid(self.lm, spam)
+ score = ngram_ng_prob(self.lm, wid, hist, n_hist, &n_used)
+ ckd_free(hist)
+ return logmath_log_to_ln(self.lmath, score), n_used
+
+ def mgrams(self, m):
+ """
+ Return an iterator over each N-gram of order m+1.
+
+ This allows Pythonic iteration over the parameters of an
+ N-Gram model.
+
+ @param m: Order of requested N-grams minus one
+ @type m: int
+ @return: Iterator over M+1-grams
+ @rtype: NGramIter
+ """
+ cdef NGramIter itor
+ itor = NGramIter(self, m)
+ itor.itor = ngram_model_mgrams(self.lm, m)
+ return itor
+
+ def ngram(self, word, *args):
+ """
+ Return an N-Gram iterator pointing to a given N-gram.
+
+ This allows you to iterate over its successors among other
+ things.
+
+ @param word: Head word of requested N-gram.
+ @type word: str
+ @param args: History words of requested N-gram
+ @type args: str
+ @return: Iterator pointing to N-gram.
+ """
+ cdef NGramIter itor
+ cdef int32 wid
+ cdef int32 *hist
+ cdef int32 n_hist
+ wid = ngram_wid(self.lm, word)
+ n_hist = len(args)
+ hist = <int32 *>ckd_calloc(n_hist, sizeof(int32))
+ for i from 0 <= i < n_hist:
+ spam = args[i]
+ hist[i] = ngram_wid(self.lm, spam)
+ itor = NGramIter(self, n_hist)
+ # We do set_iter here, because we're returning something the
+ # user is immediately going to do stuff with.
+ itor.set_iter(ngram_ng_iter(self.lm, wid, hist, n_hist))
+ ckd_free(hist)
+ return itor
+
+ def add_word(self, word, weight=1.0):
+ return ngram_model_add_word(self.lm, word, weight)
+
+ def recode(self, frum, too):
+ cdef int rv
+ rv = ngram_model_recode(self.lm, frum, too)
+ if rv == -1:
+ raise ValueError, "Recode from %s to %s failed" % (frum, too)
+
+ def casefold(self, kase):
+ cdef int rv
+ rv = ngram_model_casefold(self.lm, kase)
+ if rv == -1:
+ raise ValueError, "Casefolding failed"
+
+ def write(self, file_name, format=NGRAM_AUTO):
+ cdef int rv
+ rv = ngram_model_write(self.lm, file_name, format)
+ if rv == -1:
+ raise ValueError, "Write %s to file failed" % file_name
+
+cdef class NGramIter:
+ """
+ N-Gram language model iterator class.
+
+ This class provides access to the individual N-grams stored in a
+ language model.
+ """
+ def __cinit__(self, NGramModel lm, int m):
+ self.itor = NULL
+ self.lm = lm
+ self.m = m
+ self.first_item = True
+
+ def __iter__(self):
+ self.first_item = True
+ return self
+
+ cdef set_iter(NGramIter self, ngram_iter_t *itor):
+ cdef int32 prob, bowt
+ cdef int32 *wids
+
+ if itor == NULL:
+ raise StopIteration
+ self.itor = itor
+ if self.first_item:
+ self.first_item = False
+ wids = ngram_iter_get(itor, &prob, &bowt)
+ self.log_prob = logmath_log_to_ln(self.lm.lmath, prob)
+ self.log_bowt = logmath_log_to_ln(self.lm.lmath, bowt)
+ self.words = []
+ for i in range(0, self.m+1):
+ self.words.append(ngram_word(self.lm.lm, wids[i]))
+
+ def __next__(self):
+ if self.first_item:
+ self.set_iter(self.itor)
+ else:
+ self.set_iter(ngram_iter_next(self.itor))
+ return self
+
+ def successors(self):
+ """
+ Get an iterator over N+1-gram successors of an N-gram.
+ """
+ cdef NGramIter itor
+ itor = NGramIter(self.lm, self.m + 1)
+ itor.itor = ngram_iter_successors(self.itor)
+ return itor
+
+def binstr(str val, int nbits):
+ """
+ Silly function to format a string as a binary string
+ """
+ cdef int i
+ outstr = ""
+ for c in val:
+ cval = ord(c)
+ cnb = min(8, nbits)
+ for i in range(0,cnb):
+ outstr += "%d" % ((cval & (1 << 7-i)) != 0)
+ nbits -= 8
+ return outstr
+
+def bincw(int cw, int nbits):
+ """
+ Silly function to format an int as a binary string
+ """
+ cdef int i
+ outstr = ""
+ for i in range(0,nbits):
+ outstr = "%s" % (cw & 1) + outstr
+ cw >>= 1
+ return outstr
+
+# FIXME: Due to the style of IO in huff_code API this part of the code
+# is not compatible with Python 3. This needs to be converted to
+# the new Python io module.
+
+cdef class HuffCode:
+ """
+ Huffman coding class.
+
+ You can either construct a Huffman code from an alphabet of
+ symbols with frequencies, or read one from a file. Either the
+ alphabet or infile argument (but not both) must be passed to the
+ constructor.
+
+ @param alphabet: Alphabet of (symbol, frequency) pairs
+ @type alphabet: [(str, int)]
+ @param infile: File handle or filename to read from
+ @type infile: file | str
+ """
+ def __init__(self, alphabet=None, infile=None):
+ cdef char **symbols
+ cdef int *frequencies
+ cdef int nsym
+
+ if alphabet == None and infile == None:
+ raise ValueError, "One of alphabet or infile must be passed to constructor"
+ if alphabet != None and infile != None:
+ raise ValueError, "Only one of alphabet or infile must be passed to constructor"
+
+ self.fh = None
+ if infile:
+ self.read(infile)
+ return
+
+ nsym = len(alphabet)
+ frequencies = <int *>ckd_calloc(nsym, sizeof(int))
+ symbols = <char **>ckd_calloc(nsym, sizeof(char *))
+ # Need to create separate Python objects for each string,
+ # otherwise we get random duplicates of the codewords...
+ bogus = []
+ for i, spam in enumerate(alphabet):
+ sym, freq = spam
+ bogus.append(repr(sym))
+ frequencies[i] = freq
+ symbols[i] = bogus[-1]
+ self.hc = huff_code_build_str(symbols, frequencies, nsym)
+ ckd_free(frequencies)
+ ckd_free(symbols)
+
+ def read(self, infile):
+ if not isinstance(infile, file):
+ infile = file(infile, "rb")
+ huff_code_free(self.hc)
+ self.hc = huff_code_read(PyFile_AsFile(infile))
+
+ def write(self, outfile):
+ if not isinstance(outfile, file):
+ outfile = file(outfile, "wb")
+ huff_code_write(self.hc, PyFile_AsFile(outfile))
+
+ def dump(self, outfile):
+ if not isinstance(outfile, file):
+ outfile = file(outfile, "w")
+ huff_code_dump(self.hc, PyFile_AsFile(outfile))
+
+ def encode(self, seq):
+ """
+ Encode a sequence of symbols to a byte array, returning that
+ array and the bit offset of the next codeword in the last
+ byte (i.e. 8 minutes the number of extra zero bits)
+ """
+ cdef unsigned int cw
+ cdef int cwlen, nbits = 0, nbytes, offset, i
+ cdef unsigned char buf = 0
+ cdef char *output
+
+ for sym in seq:
+ sss = repr(sym)
+ cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ nbits += cwlen
+ nbytes = int((nbits + 7) / 8)
+ offset = 0
+ output = <char *>PyMem_Malloc(nbytes + 1)
+ output[nbytes] = 0
+ i = 0
+ nbits = 0
+ for sym in seq:
+ sss = repr(sym)
+ cwlen = huff_code_encode_str(self.hc, sss, &cw)
+ #print "sym: %s cw: %s buf: %s output: %s" \
+ # % (sym, bincw(cw, cwlen), bincw(buf >> (8-offset), offset),
+ # binstr(output, nbits))
+ #print "cwlen",cwlen
+ # Do one byte at a time while full bytes are available
+ while cwlen >= 8:
+ # Fill low bits of buf with high bits of cw
+ buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1)
+ # Append buf to output
+ output[i] = buf
+ i += 1
+ nbits += 8
+ # Fill high bits of buf with low bits of this byte
+ cwlen -= 8
+ buf = (cw >> cwlen) & ((1 << offset) - 1)
+ buf <<= (8-offset)
+ #print "cwlen",cwlen
+ # Now cwlen will be less than 8, but it might still be
+ # more than the available space in buf.
+ if cwlen >= (8 - offset):
+ # Fill low bits of buf with (8-offset) highest bits of cw
+ buf |= (cw >> (cwlen - (8 - offset))) & ((1 << (8 - offset)) - 1)
+ # Append buf to output
+ output[i] = buf
+ i += 1
+ nbits += 8
+ # cwlen is down to the remaining bits
+ cwlen -= (8 - offset)
+ # Offset is now zero since we just completed and emptied buf
+ offset = 0
+ # buf is zero, because we just emptied it without putting stuff in
+ buf = 0
+ #print "cwlen",cwlen
+ # Any remaining bits will be taken care of below (we hope)
+ # Add remaining high bits of cw to low bits of buf
+ #print "cwlen",cwlen
+ buf |= ((cw & ((1 << cwlen) - 1)) << (8 - offset - cwlen))
+ offset += cwlen
+ #print "after buf: %s output: %s" \
+ # % (bincw(buf >> (8-offset), offset), binstr(output, nbits))
+ if offset > 0:
+ # Append buf to output
+ output[i] = buf
+ nbits += offset
+ i += 1
+ #print "output:", binstr(output, nbits)
+ outstr = PyString_FromStringAndSize(output, nbytes)
+ PyMem_Free(output)
+ return (outstr, offset)
+
+ def decode(self, data):
+ """
+ Decode a sequence of symbols from a string, returning the
+ sequence and the bit offset of the next codeword in the last
+ byte (i.e. 8 minutes the number of remaining bits)
+ """
+ cdef int offset
+ cdef char *dptr
+ cdef char *strval
+ cdef size_t dlen
+
+ dlen = len(data)
+ offset = 0
+ dptr = data
+ output = []
+ while True:
+ strval = huff_code_decode_str(self.hc, &dptr, &dlen, &offset)
+ if strval == NULL:
+ break
+ output.append(strval)
+ if dlen > 1:
+ raise ValueError, "Invalid data at position %d" % (len(data) - dlen)
+ return (output, offset)
+
+ def attach(self, fh, char *mode):
+ if not isinstance(fh, file):
+ fh = file(fh, mode)
+ self.fh = fh
+ huff_code_attach(self.hc, PyFile_AsFile(fh), mode)
+
+ def detach(self):
+ huff_code_detach(self.hc)
+ self.fh = None
+
+ def encode_to_file(self, seq):
+ if self.fh == None:
+ raise RuntimeError, "No file is attached"
+ for sym in seq:
+ strsym = repr(sym)
+ huff_code_encode_str(self.hc, strsym, NULL)
+
+ def decode_from_file(self):
+ cdef char *sym
+ if self.fh == None:
+ raise RuntimeError, "No file is attached"
+ sym = huff_code_decode_str(self.hc, NULL, NULL, NULL)
+ if sym == NULL:
+ return None
+ else:
+ return sym
+
+ def __dealloc__(self):
+ if self.fh:
+ self.detach()
+ huff_code_free(self.hc)
--- /dev/null
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+libs="@LIBS@ @ad_libs@"
+
+Name: SphinxBase
+Description: Shared components for Sphinx speech recognition
+Version: @VERSION@
+URL: http://www.cmusphinx.org/
+Libs: -L${libdir} -lsphinxbase -lsphinxad
+Libs.private: ${libs}
+Cflags: -I${includedir} -I${includedir}/sphinxbase
--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual C++ Express 2010\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinx_cepview", "win32\sphinx_cepview\sphinx_cepview.vcxproj", "{06364F13-FBCE-4E2B-9289-0DD39E246205}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinx_fe", "win32\sphinx_fe\sphinx_fe.vcxproj", "{D088C451-BB4D-4379-AFFA-C7523DBD35DD}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinxbase", "win32\sphinxbase\sphinxbase.vcxproj", "{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinx_jsgf2fsg", "win32\sphinx_jsgf2fsg\sphinx_jsgf2fsg.vcxproj", "{0E6AF9F5-8904-4873-8856-7216415782B4}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinx_lm_convert", "win32\sphinx_lm_convert\sphinx_lm_convert.vcxproj", "{AFB07B69-EDC1-4E99-B0F3-E6B14FF07C5D}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinx_pitch", "win32\sphinx_pitch\sphinx_pitch.vcxproj", "{AF17E630-A43F-4E0A-9BC4-67CD4E2E7FA1}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+ EndProjectSection\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Release|Win32 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {06364F13-FBCE-4E2B-9289-0DD39E246205}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {06364F13-FBCE-4E2B-9289-0DD39E246205}.Debug|Win32.Build.0 = Debug|Win32\r
+ {06364F13-FBCE-4E2B-9289-0DD39E246205}.Release|Win32.ActiveCfg = Release|Win32\r
+ {06364F13-FBCE-4E2B-9289-0DD39E246205}.Release|Win32.Build.0 = Release|Win32\r
+ {D088C451-BB4D-4379-AFFA-C7523DBD35DD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {D088C451-BB4D-4379-AFFA-C7523DBD35DD}.Debug|Win32.Build.0 = Debug|Win32\r
+ {D088C451-BB4D-4379-AFFA-C7523DBD35DD}.Release|Win32.ActiveCfg = Release|Win32\r
+ {D088C451-BB4D-4379-AFFA-C7523DBD35DD}.Release|Win32.Build.0 = Release|Win32\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32\r
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32\r
+ {0E6AF9F5-8904-4873-8856-7216415782B4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {0E6AF9F5-8904-4873-8856-7216415782B4}.Debug|Win32.Build.0 = Debug|Win32\r
+ {0E6AF9F5-8904-4873-8856-7216415782B4}.Release|Win32.ActiveCfg = Release|Win32\r
+ {0E6AF9F5-8904-4873-8856-7216415782B4}.Release|Win32.Build.0 = Release|Win32\r
+ {AFB07B69-EDC1-4E99-B0F3-E6B14FF07C5D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {AFB07B69-EDC1-4E99-B0F3-E6B14FF07C5D}.Debug|Win32.Build.0 = Debug|Win32\r
+ {AFB07B69-EDC1-4E99-B0F3-E6B14FF07C5D}.Release|Win32.ActiveCfg = Release|Win32\r
+ {AFB07B69-EDC1-4E99-B0F3-E6B14FF07C5D}.Release|Win32.Build.0 = Release|Win32\r
+ {AF17E630-A43F-4E0A-9BC4-67CD4E2E7FA1}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {AF17E630-A43F-4E0A-9BC4-67CD4E2E7FA1}.Debug|Win32.Build.0 = Debug|Win32\r
+ {AF17E630-A43F-4E0A-9BC4-67CD4E2E7FA1}.Release|Win32.ActiveCfg = Release|Win32\r
+ {AF17E630-A43F-4E0A-9BC4-67CD4E2E7FA1}.Release|Win32.Build.0 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+SUBDIRS = libsphinxbase libsphinxad \
+ sphinx_fe sphinx_cepview sphinx_jsgf2fsg \
+ sphinx_adtools sphinx_lmtools
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = libsphinxbase libsphinxad \
+ sphinx_fe sphinx_cepview sphinx_jsgf2fsg \
+ sphinx_adtools sphinx_lmtools
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+# 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:
--- /dev/null
+
+# libsphinxad: Audio Device interface for Sphinx
+
+lib_LTLIBRARIES = libsphinxad.la
+
+# Confusing libtool version info means:
+#
+# This is API version 2, software release 1, which also supports API version 1
+libsphinxad_la_LDFLAGS = -version-info 0:1:0
+
+libsphinxad_la_SOURCES = cont_ad_base.c
+
+EXTRA_libsphinxad_la_SOURCES = ad_base.c \
+ ad_oss.c \
+ ad_alsa.c
+
+EXTRA_DIST = ad_s60.cpp \
+ play_win32.c \
+ rec_win32.c
+
+libsphinxad_la_DEPENDENCIES = @ad_files@
+
+libsphinxad_la_LIBADD = @ad_files@ @ad_libs@ \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# libsphinxad: Audio Device interface for Sphinx
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libsphinxad
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am_libsphinxad_la_OBJECTS = cont_ad_base.lo
+libsphinxad_la_OBJECTS = $(am_libsphinxad_la_OBJECTS)
+libsphinxad_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libsphinxad_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libsphinxad_la_SOURCES) $(EXTRA_libsphinxad_la_SOURCES)
+DIST_SOURCES = $(libsphinxad_la_SOURCES) \
+ $(EXTRA_libsphinxad_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+lib_LTLIBRARIES = libsphinxad.la
+
+# Confusing libtool version info means:
+#
+# This is API version 2, software release 1, which also supports API version 1
+libsphinxad_la_LDFLAGS = -version-info 0:1:0
+libsphinxad_la_SOURCES = cont_ad_base.c
+EXTRA_libsphinxad_la_SOURCES = ad_base.c \
+ ad_oss.c \
+ ad_alsa.c
+
+EXTRA_DIST = ad_s60.cpp \
+ play_win32.c \
+ rec_win32.c
+
+libsphinxad_la_DEPENDENCIES = @ad_files@
+libsphinxad_la_LIBADD = @ad_files@ @ad_libs@ \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libsphinxad/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/libsphinxad/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsphinxad.la: $(libsphinxad_la_OBJECTS) $(libsphinxad_la_DEPENDENCIES)
+ $(libsphinxad_la_LINK) -rpath $(libdir) $(libsphinxad_la_OBJECTS) $(libsphinxad_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ad_alsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ad_base.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ad_oss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cont_ad_base.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am \
+ install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-libLTLIBRARIES
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/* -*- mode:c; indent-tabs-mode:t; c-basic-offset:4; comment-column:40 -*-
+ *
+ * Sphinx II libad (Linux)
+ * ^^^^^^^^^^^^^^^^^^^^^^^
+ * $Id: ad_alsa.c,v 1.6 2001/12/11 00:24:48 lenzo Exp $
+ *
+ * John G. Dorsey (jd5q+@andrew.cmu.edu)
+ * Engineering Design Research Center
+ * Carnegie Mellon University
+ * ***************************************************************************
+ *
+ * REVISION HISTORY
+ *
+ * 18-Mar-2006 David Huggins-Daines <dhuggins@cs.cmu.edu>
+ * Update this to the ALSA 1.0 API.
+ *
+ * 12-Dec-2000 David Huggins-Daines <dhd@cepstral.com> at Cepstral LLC
+ * Make this at least compile with the new ALSA API.
+ *
+ * 05-Nov-1999 Sean Levy (snl@stalphonsos.com) at St. Alphonsos, LLC.
+ * Ported to ALSA so I can actually get working full-duplex.
+ *
+ * 09-Aug-1999 Kevin Lenzo (lenzo@cs.cmu.edu) at Cernegie Mellon University.
+ * Incorporated nickr@cs.cmu.edu's changes (marked below) and
+ * SPS_EPSILON to allow for sample rates that are "close enough".
+ *
+ * 15-Jun-1999 M. K. Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon Univ.
+ * Consolidated all ad functions into
+ * this one file. Added ad_open_sps().
+ * Other cosmetic changes for consistency (e.g., use of err.h).
+ *
+ * 18-May-1999 Kevin Lenzo (lenzo@cs.cmu.edu) added <errno.h>.
+ */
+
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <alsa/asoundlib.h>
+#include <errno.h>
+#include <config.h>
+#include <unistd.h>
+
+#include "prim_type.h"
+#include "ad.h"
+
+
+#define AUDIO_FORMAT SND_PCM_SFMT_S16_LE /* 16-bit signed, little endian */
+#define INPUT_GAIN (85)
+#define SPS_EPSILON 200
+
+static int
+setparams(int32 sps, snd_pcm_t * handle)
+{
+ snd_pcm_hw_params_t *hwparams;
+ unsigned int out_sps, buffer_time, period_time;
+ int err;
+
+ snd_pcm_hw_params_alloca(&hwparams);
+ err = snd_pcm_hw_params_any(handle, hwparams);
+ if (err < 0) {
+ fprintf(stderr, "Can not configure this PCM device: %s\n",
+ snd_strerror(err));
+ return -1;
+ }
+
+ err =
+ snd_pcm_hw_params_set_access(handle, hwparams,
+ SND_PCM_ACCESS_RW_INTERLEAVED);
+ if (err < 0) {
+ fprintf(stderr,
+ "Failed to set PCM device to interleaved: %s\n",
+ snd_strerror(err));
+ return -1;
+ }
+
+ err =
+ snd_pcm_hw_params_set_format(handle, hwparams, SND_PCM_FORMAT_S16);
+ if (err < 0) {
+ fprintf(stderr,
+ "Failed to set PCM device to 16-bit signed PCM: %s\n",
+ snd_strerror(err));
+ return -1;
+ }
+
+ err = snd_pcm_hw_params_set_channels(handle, hwparams, 1);
+ if (err < 0) {
+ fprintf(stderr, "Failed to set PCM device to mono: %s\n",
+ snd_strerror(err));
+ return -1;
+ }
+
+ out_sps = sps;
+ err =
+ snd_pcm_hw_params_set_rate_near(handle, hwparams, &out_sps, NULL);
+ if (err < 0) {
+ fprintf(stderr, "Failed to set sampling rate: %s\n",
+ snd_strerror(err));
+ return -1;
+ }
+ if (abs(out_sps - sps) > SPS_EPSILON) {
+ fprintf(stderr,
+ "Available samping rate %d is too far from requested %d\n",
+ out_sps, sps);
+ return -1;
+ }
+
+ /* Set buffer time to the maximum. */
+ err = snd_pcm_hw_params_get_buffer_time_max(hwparams, &buffer_time, 0);
+ period_time = buffer_time / 4;
+ err = snd_pcm_hw_params_set_period_time_near(handle, hwparams,
+ &period_time, 0);
+ if (err < 0) {
+ fprintf(stderr, "Failed to set period time to %u: %s\n",
+ period_time, snd_strerror(err));
+ return -1;
+ }
+ err = snd_pcm_hw_params_set_buffer_time_near(handle, hwparams,
+ &buffer_time, 0);
+ if (err < 0) {
+ fprintf(stderr, "Failed to set buffer time to %u: %s\n",
+ buffer_time, snd_strerror(err));
+ return -1;
+ }
+
+ err = snd_pcm_hw_params(handle, hwparams);
+ if (err < 0) {
+ fprintf(stderr, "Failed to set hwparams: %s\n", snd_strerror(err));
+ return -1;
+ }
+
+ err = snd_pcm_nonblock(handle, 1);
+ if (err < 0) {
+ fprintf(stderr, "Failed to set non-blocking mode: %s\n",
+ snd_strerror(err));
+ return -1;
+ }
+ return 0;
+}
+
+static int
+setlevels(const char *dev)
+{
+ snd_mixer_t *handle;
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *elem;
+ int err;
+ char *mixer_dev, *c;
+
+ /* Basically we just want to turn on Mic capture. */
+ if ((err = snd_mixer_open(&handle, 0)) < 0) {
+ fprintf(stderr, "Mixer open failed: %s\n", snd_strerror(err));
+ return -1;
+ }
+
+ mixer_dev = strdup(dev);
+ if (strncmp(mixer_dev, "plug", 4) == 0)
+ memmove(mixer_dev, mixer_dev + 4, strlen(mixer_dev) - 4 + 1);
+ if ((c = strchr(mixer_dev, ',')))
+ *c = '\0';
+ if ((err = snd_mixer_attach(handle, mixer_dev)) < 0) {
+ fprintf(stderr, "Mixer attach to %s failed: %s\n",
+ mixer_dev, snd_strerror(err));
+ free(mixer_dev);
+ snd_mixer_close(handle);
+ return -1;
+ }
+ free(mixer_dev);
+ if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) {
+ fprintf(stderr, "Mixer register failed: %s\n", snd_strerror(err));
+ snd_mixer_close(handle);
+ return -1;
+ }
+ if ((err = snd_mixer_load(handle)) < 0) {
+ fprintf(stderr, "Mixer load failed: %s\n", snd_strerror(err));
+ snd_mixer_close(handle);
+ return -1;
+ }
+ snd_mixer_selem_id_alloca(&sid);
+ snd_mixer_selem_id_set_name(sid, "Mic");
+ if ((elem = snd_mixer_find_selem(handle, sid)) == NULL) {
+ fprintf(stderr, "Warning: Could not find Mic element\n");
+ }
+ else {
+ if (snd_mixer_selem_has_capture_switch(elem)) {
+ if ((err = snd_mixer_selem_set_capture_switch_all(elem, 1)) < 0) {
+ fprintf(stderr,
+ "Failed to enable microphone capture: %s\n",
+ snd_strerror(err));
+ snd_mixer_close(handle);
+ return -1;
+ }
+ }
+ }
+ snd_mixer_selem_id_set_name(sid, "Capture");
+ if ((elem = snd_mixer_find_selem(handle, sid)) == NULL) {
+ fprintf(stderr, "Warning: Could not find Capture element\n");
+ }
+ else {
+ if (snd_mixer_selem_has_capture_switch(elem)) {
+ if ((err = snd_mixer_selem_set_capture_switch_all(elem, 1)) < 0) {
+ fprintf(stderr,
+ "Failed to enable microphone capture: %s\n",
+ snd_strerror(err));
+ snd_mixer_close(handle);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+ad_rec_t *
+ad_open_dev(const char *dev, int32 sps)
+{
+ ad_rec_t *handle;
+ snd_pcm_t *dspH;
+
+ int err;
+
+ if (dev == NULL)
+ dev = DEFAULT_DEVICE;
+
+ err = snd_pcm_open(&dspH, dev, SND_PCM_STREAM_CAPTURE, 0);
+ if (err < 0) {
+ fprintf(stderr,
+ "Error opening audio device %s for capture: %s\n",
+ dev, snd_strerror(err));
+ return NULL;
+ }
+
+ if (setparams(sps, dspH) < 0) {
+ return NULL;
+ }
+ if (setlevels(dev) < 0) {
+ return NULL;
+ }
+ if ((handle = (ad_rec_t *) calloc(1, sizeof(ad_rec_t))) == NULL) {
+ fprintf(stderr, "calloc(%d) failed\n", (int)sizeof(ad_rec_t));
+ abort();
+ }
+
+ handle->dspH = dspH;
+ handle->recording = 0;
+ handle->sps = sps;
+ handle->bps = sizeof(int16);
+
+ return (handle);
+}
+
+ad_rec_t *
+ad_open_sps(int32 sps)
+{
+ return ad_open_dev(DEFAULT_DEVICE, sps);
+}
+
+ad_rec_t *
+ad_open(void)
+{
+ return ad_open_sps(DEFAULT_SAMPLES_PER_SEC);
+}
+
+
+int32
+ad_close(ad_rec_t * handle)
+{
+ if (handle->dspH == NULL)
+ return AD_ERR_NOT_OPEN;
+
+ if (handle->recording) {
+ if (ad_stop_rec(handle) < 0)
+ return AD_ERR_GEN;
+ }
+ snd_pcm_close(handle->dspH);
+ free(handle);
+
+ return (0);
+}
+
+
+int32
+ad_start_rec(ad_rec_t * handle)
+{
+ int err;
+
+ if (handle->dspH == NULL)
+ return AD_ERR_NOT_OPEN;
+
+ if (handle->recording)
+ return AD_ERR_GEN;
+
+ err = snd_pcm_prepare(handle->dspH);
+ if (err < 0) {
+ fprintf(stderr, "snd_pcm_prepare failed: %s\n", snd_strerror(err));
+ return AD_ERR_GEN;
+ }
+ err = snd_pcm_start(handle->dspH);
+ if (err < 0) {
+ fprintf(stderr, "snd_pcm_start failed: %s\n", snd_strerror(err));
+ return AD_ERR_GEN;
+ }
+ handle->recording = 1;
+
+ return (0);
+}
+
+
+int32
+ad_stop_rec(ad_rec_t * handle)
+{
+ int err;
+
+ if (handle->dspH == NULL)
+ return AD_ERR_NOT_OPEN;
+
+ if (!handle->recording)
+ return AD_ERR_GEN;
+
+ err = snd_pcm_drop(handle->dspH);
+ if (err < 0) {
+ fprintf(stderr, "snd_pcm_drop failed: %s\n", snd_strerror(err));
+ return AD_ERR_GEN;
+ }
+ handle->recording = 0;
+
+ return (0);
+}
+
+
+int32
+ad_read(ad_rec_t * handle, int16 * buf, int32 max)
+{
+ int32 length, err;
+
+ if (!handle->recording) {
+ fprintf(stderr, "Recording is stopped, start recording with ad_start_rec\n");
+ return AD_EOF;
+ }
+
+ length = snd_pcm_readi(handle->dspH, buf, max);
+ if (length == -EAGAIN) {
+ length = 0;
+ }
+ else if (length == -EPIPE) {
+ fprintf(stderr, "Input overrun, read calls are too rare (non-fatal)\n");
+ err = snd_pcm_prepare(handle->dspH);
+ if (err < 0) {
+ fprintf(stderr, "Can't recover from underrun: %s\n",
+ snd_strerror(err));
+ return AD_ERR_GEN;
+ }
+ length = 0;
+ }
+ else if (length == -ESTRPIPE) {
+ fprintf(stderr, "Resuming sound driver (non-fatal)\n");
+ while ((err = snd_pcm_resume(handle->dspH)) == -EAGAIN)
+ usleep(10000); /* Wait for the driver to wake up */
+ if (err < 0) {
+ err = snd_pcm_prepare(handle->dspH);
+ if (err < 0) {
+ fprintf(stderr, "Can't recover from underrun: %s\n",
+ snd_strerror(err));
+ return AD_ERR_GEN;
+ }
+ }
+ length = 0;
+ }
+ else if (length < 0) {
+ fprintf(stderr, "Audio read error: %s\n",
+ snd_strerror(length));
+ return AD_ERR_GEN;
+ }
+ return length;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * ad.c -- Wraps a "sphinx-II standard" audio interface around the basic audio
+ * utilities.
+ *
+ * HISTORY
+ *
+ * 11-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * Modified to conform to new A/D API.
+ *
+ * 12-May-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * Dummy template created.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <config.h>
+
+#include "prim_type.h"
+#include "ad.h"
+
+#define QUIT(x) {fprintf x; exit(-1);}
+
+
+ad_rec_t *
+ad_open_dev(const char *dev, int32 samples_per_sec)
+{
+ fprintf(stderr, "A/D library not implemented\n");
+ return NULL;
+}
+
+
+ad_rec_t *
+ad_open_sps(int32 samples_per_sec)
+{
+ fprintf(stderr, "A/D library not implemented\n");
+ return NULL;
+}
+
+ad_rec_t *
+ad_open(void)
+{
+ return ad_open_sps(DEFAULT_SAMPLES_PER_SEC);
+}
+
+
+int32
+ad_start_rec(ad_rec_t * r)
+{
+ return -1;
+}
+
+
+int32
+ad_stop_rec(ad_rec_t * r)
+{
+ return -1;
+}
+
+
+int32
+ad_read(ad_rec_t * r, int16 * buf, int32 max)
+{
+ return -1;
+}
+
+
+int32
+ad_close(ad_rec_t * r)
+{
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/* Sphinx II libad (Linux)
+ * ^^^^^^^^^^^^^^^^^^^^^^^
+ * $Id: ad_oss.c,v 1.9 2004/07/16 00:57:12 egouvea Exp $
+ *
+ * John G. Dorsey (jd5q+@andrew.cmu.edu)
+ * Engineering Design Research Center
+ * Carnegie Mellon University
+ * ********************************************************************
+ *
+ * REVISION HISTORY
+ *
+ * 09-Aug-1999 Kevin Lenzo (lenzo@cs.cmu.edu) at Cernegie Mellon University.
+ * Incorporated nickr@cs.cmu.edu's changes (marked below) and
+ * SPS_EPSILON to allow for sample rates that are "close enough".
+ *
+ * 15-Jun-1999 M. K. Ravishankar (rkm@cs.cmu.edu) Consolidated all ad functions into
+ * this one file. Added ad_open_sps().
+ * Other cosmetic changes for consistency (e.g., use of err.h).
+ *
+ * 18-May-1999 Kevin Lenzo (lenzo@cs.cmu.edu) added <errno.h>.
+ */
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/soundcard.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <config.h>
+
+#include "prim_type.h"
+#include "ad.h"
+
+#define AUDIO_FORMAT AFMT_S16_LE /* 16-bit signed, little endian */
+#define INPUT_GAIN (80)
+
+#define SPS_EPSILON 200
+#define SAMPLERATE_TOLERANCE 0.01
+
+ad_rec_t *
+ad_open_dev(const char *dev, int32 sps)
+{
+ ad_rec_t *handle;
+ int32 dspFD, mixerFD;
+ int32 nonBlocking = 1, sourceMic = SOUND_MASK_MIC, inputGain =
+ INPUT_GAIN, devMask = 0;
+ int32 audioFormat = AUDIO_FORMAT;
+ int32 dspCaps = 0;
+ int32 sampleRate;
+ int32 numberChannels = 1;
+
+ sampleRate = sps;
+
+ if (dev == NULL)
+ dev = DEFAULT_DEVICE;
+
+ /* Used to have O_NDELAY. */
+ if ((dspFD = open(dev, O_RDONLY)) < 0) {
+ if (errno == EBUSY)
+ fprintf(stderr, "%s(%d): Audio device(%s) busy\n",
+ __FILE__, __LINE__, dev);
+ else
+ fprintf(stderr,
+ "%s(%d): Failed to open audio device(%s): %s\n",
+ __FILE__, __LINE__, dev, strerror(errno));
+ return NULL;
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_SYNC, 0) < 0) {
+ fprintf(stderr, "Audio ioctl(SYNC) failed: %s\n", strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_RESET, 0) < 0) {
+ fprintf(stderr, "Audio ioctl(RESET) failed: %s\n",
+ strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_SETFMT, &audioFormat) < 0) {
+ fprintf(stderr, "Audio ioctl(SETFMT 0x%x) failed: %s\n",
+ audioFormat, strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+ if (audioFormat != AUDIO_FORMAT) {
+ fprintf(stderr,
+ "Audio ioctl(SETFMT): 0x%x, expected: 0x%x\n",
+ audioFormat, AUDIO_FORMAT);
+ close(dspFD);
+ return NULL;
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_SPEED, &sampleRate) < 0) {
+ fprintf(stderr, "Audio ioctl(SPEED %d) failed %s\n",
+ sampleRate, strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+ if (sampleRate != sps) {
+ if (abs(sampleRate - sps) <= (sampleRate * SAMPLERATE_TOLERANCE)) {
+ fprintf(stderr,
+ "Audio ioctl(SPEED) not perfect, but is acceptable. "
+ "(Wanted %d, but got %d)\n", sampleRate, sps);
+ }
+ else {
+ fprintf(stderr,
+ "Audio ioctl(SPEED): %d, expected: %d\n",
+ sampleRate, sps);
+ close(dspFD);
+ return NULL;
+ }
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_CHANNELS, &numberChannels) < 0) {
+ fprintf(stderr, "Audio ioctl(CHANNELS %d) failed %s\n",
+ numberChannels, strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_NONBLOCK, &nonBlocking) < 0) {
+ fprintf(stderr, "ioctl(NONBLOCK) failed: %s\n", strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+
+ if (ioctl(dspFD, SNDCTL_DSP_GETCAPS, &dspCaps) < 0) {
+ fprintf(stderr, "ioctl(GETCAPS) failed: %s\n", strerror(errno));
+ close(dspFD);
+ return NULL;
+ }
+#if 0
+ printf("DSP Revision %d:\n", dspCaps & DSP_CAP_REVISION);
+ printf("DSP %s duplex capability.\n",
+ (dspCaps & DSP_CAP_DUPLEX) ? "has" : "does not have");
+ printf("DSP %s real time capability.\n",
+ (dspCaps & DSP_CAP_REALTIME) ? "has" : "does not have");
+ printf("DSP %s batch capability.\n",
+ (dspCaps & DSP_CAP_BATCH) ? "has" : "does not have");
+ printf("DSP %s coprocessor capability.\n",
+ (dspCaps & DSP_CAP_COPROC) ? "has" : "does not have");
+ printf("DSP %s trigger capability.\n",
+ (dspCaps & DSP_CAP_TRIGGER) ? "has" : "does not have");
+ printf("DSP %s memory map capability.\n",
+ (dspCaps & DSP_CAP_MMAP) ? "has" : "does not have");
+#endif
+
+ if ((dspCaps & DSP_CAP_DUPLEX)
+ && (ioctl(dspFD, SNDCTL_DSP_SETDUPLEX, 0) < 0))
+ fprintf(stderr, "ioctl(SETDUPLEX) failed: %s\n", strerror(errno));
+
+ /* Patched by N. Roy (nickr@ri.cmu.edu), 99/7/23.
+ Previously, mixer was set through dspFD. This is incorrect. Should
+ be set through mixerFD, /dev/mixer.
+ Also, only the left channel volume was being set.
+ */
+
+ if ((mixerFD = open("/dev/mixer", O_RDONLY)) < 0) {
+ if (errno == EBUSY) {
+ fprintf(stderr, "%s %d: mixer device busy.\n",
+ __FILE__, __LINE__);
+ fprintf(stderr, "%s %d: Using current setting.\n",
+ __FILE__, __LINE__);
+ }
+ else {
+ fprintf(stderr, "%s %d: %s\n", __FILE__, __LINE__,
+ strerror(errno));
+ exit(1);
+ }
+ }
+
+ if (mixerFD >= 0) {
+ if (ioctl(mixerFD, SOUND_MIXER_WRITE_RECSRC, &sourceMic) < 0) {
+ if (errno == ENXIO)
+ fprintf(stderr,
+ "%s %d: can't set mic source for this device.\n",
+ __FILE__, __LINE__);
+ else {
+ fprintf(stderr,
+ "%s %d: mixer set to mic: %s\n",
+ __FILE__, __LINE__, strerror(errno));
+ exit(1);
+ }
+ }
+
+ /* Set the same gain for left and right channels. */
+ inputGain = inputGain << 8 | inputGain;
+
+ /* Some OSS devices have no input gain control, but do have a
+ recording level control. Find out if this is one of them and
+ adjust accordingly. */
+ if (ioctl(mixerFD, SOUND_MIXER_READ_DEVMASK, &devMask) < 0) {
+ fprintf(stderr,
+ "%s %d: failed to read device mask: %s\n",
+ __FILE__, __LINE__, strerror(errno));
+ exit(1); /* FIXME: not a well-behaved-library thing to do! */
+ }
+ if (devMask & SOUND_MASK_IGAIN) {
+ if (ioctl(mixerFD, SOUND_MIXER_WRITE_IGAIN, &inputGain) < 0) {
+ fprintf(stderr,
+ "%s %d: mixer input gain to %d: %s\n",
+ __FILE__, __LINE__, inputGain, strerror(errno));
+ exit(1);
+ }
+ }
+ else if (devMask & SOUND_MASK_RECLEV) {
+ if (ioctl(mixerFD, SOUND_MIXER_WRITE_RECLEV, &inputGain) < 0) {
+ fprintf(stderr,
+ "%s %d: mixer record level to %d: %s\n",
+ __FILE__, __LINE__, inputGain, strerror(errno));
+ exit(1);
+ }
+ }
+ else {
+ fprintf(stderr,
+ "%s %d: can't set input gain/recording level for this device.\n",
+ __FILE__, __LINE__);
+ }
+
+ close(mixerFD);
+ }
+
+ if ((handle = (ad_rec_t *) calloc(1, sizeof(ad_rec_t))) == NULL) {
+ fprintf(stderr, "calloc(%ld) failed\n", sizeof(ad_rec_t));
+ abort();
+ }
+
+ handle->dspFD = dspFD;
+ handle->recording = 0;
+ handle->sps = sps;
+ handle->bps = sizeof(int16);
+
+ return (handle);
+}
+
+ad_rec_t *
+ad_open_sps(int32 sps)
+{
+ return ad_open_dev(DEFAULT_DEVICE, sps);
+}
+
+ad_rec_t *
+ad_open(void)
+{
+ return ad_open_sps(DEFAULT_SAMPLES_PER_SEC);
+}
+
+int32
+ad_close(ad_rec_t * handle)
+{
+ if (handle->dspFD < 0)
+ return AD_ERR_NOT_OPEN;
+
+ if (handle->recording) {
+ if (ad_stop_rec(handle) < 0)
+ return AD_ERR_GEN;
+ }
+
+ close(handle->dspFD);
+ free(handle);
+
+ return (0);
+}
+
+int32
+ad_start_rec(ad_rec_t * handle)
+{
+ if (handle->dspFD < 0)
+ return AD_ERR_NOT_OPEN;
+
+ if (handle->recording)
+ return AD_ERR_GEN;
+
+ /* Sample rate, format, input mix settings, &c. are configured
+ * with ioctl(2) calls under Linux. It makes more sense to handle
+ * these at device open time and consider the state of the device
+ * to be fixed until closed.
+ */
+
+ handle->recording = 1;
+
+ /* rkm@cs: This doesn't actually do anything. How do we turn recording on/off? */
+
+ return (0);
+}
+
+int32
+ad_stop_rec(ad_rec_t * handle)
+{
+ if (handle->dspFD < 0)
+ return AD_ERR_NOT_OPEN;
+
+ if (!handle->recording)
+ return AD_ERR_GEN;
+
+ if (ioctl(handle->dspFD, SNDCTL_DSP_SYNC, 0) < 0) {
+ fprintf(stderr, "Audio ioctl(SYNC) failed: %s\n", strerror(errno));
+ return AD_ERR_GEN;
+ }
+
+ handle->recording = 0;
+
+ return (0);
+}
+
+int32
+ad_read(ad_rec_t * handle, int16 * buf, int32 max)
+{
+ int32 length;
+
+ length = max * handle->bps; /* #samples -> #bytes */
+
+ if ((length = read(handle->dspFD, buf, length)) > 0) {
+#if 0
+ if ((length % handle->bps) != 0)
+ fprintf(stderr,
+ "Audio read returned non-integral #sample bytes (%d)\n",
+ length);
+#endif
+ length /= handle->bps;
+ }
+
+ if (length < 0) {
+ if (errno != EAGAIN) {
+ fprintf(stderr, "Audio read error");
+ return AD_ERR_GEN;
+ }
+ else {
+ length = 0;
+ }
+ }
+
+ if ((length == 0) && (!handle->recording))
+ return AD_EOF;
+
+ return length;
+}
--- /dev/null
+/*
+ This file is part of the imp project.
+ Copyright (C) 2009 Università degli Studi di Bergamo, Politecnico di Milano
+ Authors:
+ Cristian Gatti, gatti DOT kris AT gmail DOT com
+ Silvio Moioli, silvio AT moioli DOT net, <http://www.moioli.net>
+ */
+
+#include "config.h"
+
+#if defined(AD_BACKEND_S60)
+
+/*
+ S60 Sphinx audio backend.
+ Currently it is limited to recording 8kHz PCM16 mono audio data.
+ */
+
+//Symbian includes must go first
+#include <e32base.h>
+#include <e32msgqueue.h>
+#include <e32debug.h>
+#include <MdaAudioInputStream.h>
+#include <mda/common/audio.h>
+
+#include "ad.h"
+
+/*
+ * Implementation notes
+ * Since Symbian uses a callback system based on Active Objects to carry out asynchronous
+ * operations we must make use of a helper thread, which is also useful for priority reasons.
+ *
+ * Sphinxbase functions are implemented through the CAudioDevice class that communicates
+ * with the helper thread, which is encapsulated in CHelperThreadHost. Threads use:
+ * - a synchronized temporaryBuffer and
+ * - Symbian thread-safe queues (RMsgQueues)
+ * to communicate.
+ */
+
+//constants
+
+/*
+ * Messages sent through RMsgQueues.
+ */
+enum TMessage {
+ ENullMessage = 0,
+ EInited,
+ EStartRecording,
+ ERecordingStarted,
+ EStopRecording,
+ ERecordingStopped,
+ EClose,
+ EClosed
+};
+
+/*
+ * Max RMsgQueue size (will block if full).
+ */
+const TInt KQueueLength = 10;
+
+/*
+ * Only PCM16 is supported at the moment.
+ */
+const TInt KBytesPerSample = 2;
+
+/*
+ * Only 16kHz audio is supported at the moment.
+ */
+const TInt KSampleRate = 16000;
+
+/*
+ * Temporary buffer length in milliseconds. The temporary buffer is filled
+ * by the OS and then copied to the main buffer where it is read by Sphinxbase
+ * functions.
+ */
+const TInt KTemporaryBufferTime = 150;
+
+/*
+ * Temporary buffer length in bytes.
+ */
+const TInt KTemporaryBufferSize = (KTemporaryBufferTime * KSampleRate * KBytesPerSample) / 1000;
+
+/*
+ * Helper thread name.
+ */
+_LIT(KHelperThreadName, "HelperThread");
+
+/*
+ * Possible helper thread states.
+ */
+enum THelperThreadState {EPaused = 0, ERecording, EClosing};
+
+//classes
+
+/*
+ * Helper thread wrapper class.
+ */
+class CHelperThreadHost : public MMdaAudioInputStreamCallback {
+ public:
+ CHelperThreadHost(CBufSeg*, RFastLock*, RMsgQueue<TInt>*, RMsgQueue<TInt>*);
+ virtual ~CHelperThreadHost();
+ static TInt ThreadFunction(TAny*);
+ void InitializeL();
+ void DestroyL();
+
+ virtual void MaiscOpenComplete(TInt);
+ virtual void MaiscBufferCopied(TInt, const TDesC8&);
+ virtual void MaiscRecordComplete(TInt);
+
+ private:
+ CMdaAudioInputStream* iStream;
+ TMdaAudioDataSettings iStreamSettings;
+ THelperThreadState iState;
+
+ RBuf8 iTemporaryBuffer;
+
+ CBufSeg* iBuffer;
+ RFastLock* iBufferLock;
+
+ RMsgQueue<TInt>* iCommandQueue;
+ RMsgQueue<TInt>* iNotificationQueue;
+};
+
+/*
+ * Class used to invoke Symbian functions from Sphinx functions.
+ */
+class CAudioDevice {
+ public:
+ CAudioDevice();
+ void ConstructL();
+ static CAudioDevice* NewL();
+ virtual ~CAudioDevice();
+
+ void ResumeRecording();
+ void PauseRecording();
+ TInt ReadSamples(TAny*, TInt);
+
+ private:
+ RThread iThread;
+ CHelperThreadHost* iThreadHost;
+
+ CBufSeg* iBuffer;
+ RFastLock iBufferLock;
+
+ RMsgQueue<TInt> iCommandQueue;
+ RMsgQueue<TInt> iNotificationQueue;
+};
+
+CAudioDevice::CAudioDevice(){
+ iCommandQueue.CreateLocal(KQueueLength);
+ iNotificationQueue.CreateLocal(KQueueLength);
+}
+
+void CAudioDevice::ConstructL(){
+ iBuffer = CBufSeg::NewL(KTemporaryBufferSize);
+ iBufferLock.CreateLocal();
+
+ iThreadHost = new (ELeave) CHelperThreadHost(iBuffer, &(iBufferLock), &(iCommandQueue), &(iNotificationQueue));
+ iThread.Create(KHelperThreadName, CHelperThreadHost::ThreadFunction, KDefaultStackSize, NULL, iThreadHost);
+ iThread.Resume(); //new thread starts at ThreadFunction
+
+ //wait until init is done
+ TInt message = ENullMessage;
+ iNotificationQueue.ReceiveBlocking(message);
+ if(message != EInited){
+ RDebug::Print(_L("expecting %d, got %d"), EInited, message);
+ }
+}
+
+CAudioDevice* CAudioDevice::NewL(){
+ CAudioDevice* self = new (ELeave) CAudioDevice();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+/*
+ * Request to record samples.
+ */
+void CAudioDevice::ResumeRecording(){
+ iCommandQueue.SendBlocking(EStartRecording);
+
+ TInt message = ENullMessage;
+ iNotificationQueue.ReceiveBlocking(message);
+ if(message != ERecordingStarted){
+ RDebug::Print(_L("expecting %d, got %d"), ERecordingStarted, message);
+ }
+}
+
+/*
+ * Request to stop recording samples. Note that actually we don't stop the recording,
+ * but just discard incoming data until ResumeRecording is called again.
+ */
+void CAudioDevice::PauseRecording(){
+ iCommandQueue.SendBlocking(EStopRecording);
+
+ TInt message = ENullMessage;
+ iNotificationQueue.ReceiveBlocking(message);
+ if(message != ERecordingStopped){
+ RDebug::Print(_L("expecting %d, got %d"), ERecordingStopped, message);
+ }
+}
+
+/*
+ * Reads at most maxSamples samples into destinationBuffer, returning
+ * the actual number of samples read.
+ */
+TInt CAudioDevice::ReadSamples(TAny* aDestinationBuffer, TInt aMaxSamples){
+ iBufferLock.Wait();
+ TInt availableSamples = iBuffer->Size() / KBytesPerSample;
+ TInt samplesToCopy = aMaxSamples;
+ if (availableSamples < aMaxSamples){
+ samplesToCopy = availableSamples;
+ }
+ TInt bytesToCopy = samplesToCopy * KBytesPerSample;
+ iBuffer->Read(0, aDestinationBuffer, bytesToCopy);
+ iBuffer->Delete(0, bytesToCopy);
+ iBufferLock.Signal();
+
+ return samplesToCopy;
+}
+
+CAudioDevice::~CAudioDevice(){
+ //tell the thread to stop operations
+ iCommandQueue.SendBlocking(EClose);
+
+ TInt message = ENullMessage;
+ iNotificationQueue.ReceiveBlocking(message);
+ if(message != EClosed){
+ RDebug::Print(_L("expecting %d, got %d"), EClosed, message);
+ }
+
+ //join thread
+ TRequestStatus status;
+ iThread.Logon(status);
+ User::WaitForRequest(status);
+
+ //destroy fields
+ delete iThreadHost;
+ iThread.Close();
+ iBufferLock.Close();
+ delete iBuffer;
+ iNotificationQueue.Close();
+ iCommandQueue.Close();
+}
+
+CHelperThreadHost::CHelperThreadHost(CBufSeg* aBuffer, RFastLock* aBufferLock, RMsgQueue<TInt>* aCommandQueue, RMsgQueue<TInt>* aNotificationQueue){
+ iBuffer = aBuffer;
+ iBufferLock = aBufferLock;
+ iCommandQueue = aCommandQueue;
+ iNotificationQueue = aNotificationQueue;
+ iState = EPaused;
+}
+
+TInt CHelperThreadHost::ThreadFunction(TAny* aParam){
+ CHelperThreadHost* host = (CHelperThreadHost*) aParam;
+
+ //add cleanup stack support
+ CTrapCleanup* cleanupStack = CTrapCleanup::New();
+
+ //add active objects suppport
+ TRAPD(error,
+ CActiveScheduler* activeScheduler = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(activeScheduler);
+ CActiveScheduler::Install(activeScheduler);
+
+ //init multimedia system
+ host->InitializeL();
+
+ //run active scheduler
+ CActiveScheduler::Start();
+
+ //thread execution ended
+ CleanupStack::PopAndDestroy(activeScheduler);
+ );
+ if(error != KErrNone){
+ RDebug::Print(_L("thread error: %d"), error);
+ }
+
+ delete cleanupStack;
+ return KErrNone;
+}
+
+/*
+ * Inits iStream and iTemporaryBuffer.
+ */
+void CHelperThreadHost::InitializeL(){
+ iStream = CMdaAudioInputStream::NewL(*this, EMdaPriorityMax, EMdaPriorityPreferenceTime);
+ iStream->Open(&(iStreamSettings)); //calls MaiscOpenComplete asynchronously
+ iTemporaryBuffer.CreateL(KTemporaryBufferSize);
+}
+
+/*
+ * Destroys iStream and iTemporaryBuffer.
+ */
+void CHelperThreadHost::DestroyL(){
+ iTemporaryBuffer.Close();
+#if defined(__WINSCW__)
+ iStream->Stop();
+ CMdaAudioInputStream::Delete(iStream);
+#else
+ delete iStream;
+#endif
+}
+
+/*
+ * Called by the OS when iStream has been opened.
+ */
+void CHelperThreadHost::MaiscOpenComplete(TInt aError){
+ if (aError == KErrNone){
+ iNotificationQueue->SendBlocking(EInited);
+
+ iStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate16000Hz, TMdaAudioDataSettings::EChannelsMono);
+ iStream->SetGain(iStream->MaxGain());
+
+ iStream->ReadL(iTemporaryBuffer); //calls MaiscBufferCopied asynchronously
+ }
+ else{
+ RDebug::Print(_L("error %d in MaiscOpenComplete"), aError);
+ }
+}
+
+/*
+ * Called by the OS when iTemporaryBuffer has been filled.
+ */
+void CHelperThreadHost::MaiscBufferCopied(TInt aError, const TDesC8 &aBuffer){
+ if (aError == KErrNone){
+ //if needed, record data
+ if(iState == ERecording){
+ TInt availableBytes = aBuffer.Size();
+ iBufferLock->Wait();
+ TInt bufferSize = iBuffer->Size();
+ iBuffer->ExpandL(bufferSize, availableBytes);
+ iBuffer->Write(bufferSize, aBuffer, availableBytes);
+ iBufferLock->Signal();
+ }
+
+ //empty buffer
+ iTemporaryBuffer.Zero();
+
+ //process pending messages
+ TInt message = ENullMessage;
+ TInt result = iCommandQueue->Receive(message);
+ if (result == KErrNone){
+ if(message == EStartRecording){
+ iState = ERecording;
+ iNotificationQueue->SendBlocking(ERecordingStarted);
+ }
+ else if(message == EStopRecording){
+ iState = EPaused;
+ iNotificationQueue->SendBlocking(ERecordingStopped);
+ }
+ else if(message == EClose){
+ iState = EClosing;
+ iStream->Stop(); //calls MaiscRecordComplete asynchronously
+ this->DestroyL();
+ iNotificationQueue->SendBlocking(EClosed);
+ User::Exit(0);
+ }
+ else{
+ RDebug::Print(_L("received unexpected %d"), message);
+ }
+ }
+
+ //unless stopping, request filling the next buffer
+ if (iState != EClosing){
+ iStream->ReadL(iTemporaryBuffer); //calls MaiscBufferCopied asynchronously
+ }
+ }
+ else if (aError == KErrAbort){
+ //sent when discarding data during close, nothing to do here
+ }
+ else{
+ RDebug::Print(_L("error %d in MaiscBufferCopied"), aError);
+ }
+}
+
+/*
+ * Should be called by the OS when the recording is finished.
+ * Due to a bug, this method never gets called.
+ * http://carbidehelp.nokia.com/help/index.jsp?topic=/S60_5th_Edition_Cpp_Developers_Library/GUID-441D327D-D737-42A2-BCEA-FE89FBCA2F35/AudioStreamExample/doc/index.html
+ */
+void CHelperThreadHost::MaiscRecordComplete(TInt aError){
+ //nothing to do here
+}
+
+CHelperThreadHost::~CHelperThreadHost(){
+ //nothing to do here
+}
+
+//Sphinxbase methods
+
+ad_rec_t* ad_open(void){
+ ad_rec_t* result = new ad_rec_t;
+ result->recorder = CAudioDevice::NewL();
+ result->recording = FALSE;
+ result->sps = KSampleRate;
+ result->bps = KBytesPerSample;
+ return result;
+}
+
+ad_rec_t* ad_open_dev(const char* dev, int32 sps){
+ //dummy
+ return ad_open();
+}
+
+ad_rec_t* ad_open_sps(int32 sps){
+ //dummy
+ return ad_open();
+}
+
+ad_rec_t* ad_open_sps_bufsize(int32 sps, int32 bufsize_msec){
+ //dummy
+ return ad_open();
+}
+
+int32 ad_start_rec(ad_rec_t* r){
+ ((CAudioDevice*)r->recorder)->ResumeRecording();
+ r->recording = TRUE;
+ return AD_OK;
+}
+
+int32 ad_read(ad_rec_t* r, int16* buf, int32 max){
+ int32 result = (int32) ((CAudioDevice*)r->recorder)->ReadSamples((TAny*) buf, (TInt)max);
+ if(result == 0 && r->recording == FALSE){
+ result = AD_EOF;
+ }
+ return result;
+}
+
+int32 ad_stop_rec(ad_rec_t* r){
+ ((CAudioDevice*)r->recorder)->PauseRecording();
+ r->recording = FALSE;
+ return AD_OK;
+}
+
+int32 ad_close(ad_rec_t* r){
+ delete ((CAudioDevice*)r->recorder);
+ delete r;
+ return AD_OK;
+}
+
+#endif //defined(AD_BACKEND_S60)
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cont_ad.c -- Continuous A/D listening and silence filtering module.
+ *
+ * HISTORY
+ *
+ * $Log: cont_ad_base.c,v $
+ * Revision 1.14 2005/07/02 03:51:32 rkm
+ * Slowed down power histogram decay rate
+ *
+ * Revision 1.13 2005/06/30 00:27:17 rkm
+ * Fixed silence handling in rawmode; added extra state variables
+ *
+ *
+ * 28-Jun-2005 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * - Changed rawmode handling to simply copy data even for silence
+ * segments.
+ * - Moved definitions of CONT_AD_STATE_{SIL,SPEECH} from .c to .h.
+ *
+ * Revision 1.12 2005/06/29 23:48:04 egouvea
+ * Revert changes: variables defined in cont_ad_base.c should not be accessible by the application
+ *
+ * Revision 1.10 2005/02/13 01:29:48 rkm
+ * Fixed cont_ad_read to never cross sil/speech boundary, and rawmode
+ *
+ * Revision 1.9 2005/02/01 22:21:19 rkm
+ * Added raw data logging, and raw data pass-through mode to cont_ad
+ *
+ * Revision 1.8 2004/07/23 23:36:34 egouvea
+ * Ravi's merge, with the latest fixes in the FSG code, and making the log files generated by FSG, LM, and allphone have the same 'look and feel', with the backtrace information presented consistently
+ *
+ * 23-Jul-2004 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed default adapt_rate from 0.5 to 0.2.
+ *
+ * Revision 1.7 2004/07/16 00:57:12 egouvea
+ * Added Ravi's implementation of FSG support.
+ *
+ * Revision 1.2 2004/06/23 20:31:18 rkm
+ * Added adapt_rate parameter; restructured frame processing to include threshold update
+ *
+ *
+ * 23-Oct-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Small change in the way the noiselevel is updated in find_thresh().
+ *
+ * 26-Aug-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Separated computation of "frame power" into a separate low-level
+ * function.
+ *
+ * 13-Jul-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Modified to allow frame size to depend on audio sampling rate.
+ *
+ * 01-Jul-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed CONT_AD_DELTA_SPEECH back to 20.
+ *
+ * 30-Jun-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed CONT_AD_DELTA_SPEECH from 10 to 15.
+ * Added FILE* argument to cont_ad_powhist_dump().
+ *
+ * 19-Jun-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed CONT_AD_DELTA_SPEECH from 20 to 10, to increase sensitivity
+ * to very short utterances.
+ *
+ * 16-Jan-98 Paul Placeway (pwp@cs.cmu.edu) at Carnegie Mellon University
+ * Changed to use dB instead of the weird power measure.
+ * Changed analysis window size, tuned default settings of most
+ * parameters to make the system less sensitive to noise, changed
+ * the histogram update frequency and decay to make the system
+ * adapt more rapidly to changes in the environment.
+ * Added cont_ad_set_params() and cont_ad_get_params().
+ *
+ * 28-Jul-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added FRMPOW2SIGLVL, max_siglvl(), and cont_ad_t.siglvl.
+ * Changed min signal energy/frame to CONT_AD_SPF.
+ *
+ * 27-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added the option for cont_ad_read to return -1 on EOF.
+ *
+ * 21-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added cont_ad_set_thresh().
+ * Bugfix: n_other is recomputed after updating thresholds.
+ *
+ * 20-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Separated thresholds for speech and silence.
+ * Fixed bug in moving analysis window upon transition to speech state.
+ *
+ * 17-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created, based loosely on Steve Reed's original implementation.
+ */
+
+/*
+ * This module is intended to be interposed as a filter between any raw A/D source and the
+ * application to remove silence regions. It is initialized with a raw A/D source function
+ * (during the cont_ad_init call). Filtered A/D data can be read by the application using
+ * the cont_ad_read function. This module assumes that the A/D source function supplies an
+ * endless stream of data. The application is responsible for setting up the A/D source,
+ * turning recording on and off as it desires. It is also responsible for invoking the
+ * cont_ad_read function frequently enough to avoid buffer overruns and dropping A/D data.
+ * This continuous listening module has an internal buffer of about 4 sec.
+ *
+ * This module must be initialized and calibrated at first (cont_ad_init and cont_ad_calib
+ * functions). Raw samples are grouped into frames, the signal power in each frame is
+ * computed and accumulated in a histogram. The module is always in one of two states:
+ * SILENCE or SPEECH. Transitions between the two states are detected by looking for a
+ * contiguous window of several frames that is predominantly of the other type. The type
+ * is determined by comparing frame power to either of two thresholds, thresh_sil and
+ * thresh_speech, as appropriate for the current state. These thresholds are set from the
+ * first peak in the low-end of the power histogram, and are updated every few seconds.
+ * Separate thresholds are used to provide some hysteresis.
+ *
+ * The module maintains a linked list of speech (non-silence) segments not yet read by the
+ * application. The cont_ad_read function returns speech data, if any available, by
+ * following this list. It also updates an "absolute" timestamp at the end of the
+ * cont_ad_read operation. The timestamp indicates the total #samples of A/D data read
+ * until this point, including data discarded as silence frames. The application is
+ * responsible for using this timestamp to make any policy decisions regarding utterance
+ * boundaries or whatever.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4305)
+#endif
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/ad.h"
+#include "sphinxbase/cont_ad.h"
+#include "sphinxbase/err.h"
+
+
+#ifndef _ABS
+#define _ABS(x) ((x) >= 0 ? (x) : -(x))
+#endif
+
+
+/* Various parameters, including defaults for many cont_ad_t member variables */
+
+#define CONT_AD_ADFRMSIZE 256 /* #Frames of internal A/D buffer maintained */
+
+#define CONT_AD_POWHISTSIZE 98 /* #Powhist bins: ~ FRMPOW(65536^2*CONT_AD_SPF) */
+/* Maximum level is 96.3 dB full-scale; 97 for safety, plus 1 for zero-based */
+
+#define CONT_AD_CALIB_FRAMES (CONT_AD_POWHISTSIZE * 2)
+
+#define CONT_AD_THRESH_UPDATE 100 /* Update thresholds approx every so many frames */
+ /* PWP: update was 200 frames, or 3.2 seconds. Now about every 1.6 sec. */
+
+#define CONT_AD_ADAPT_RATE 0.2 /* Interpolation of new and old noiselevel */
+
+#define CONT_AD_SPS 16000
+
+#define CONT_AD_DEFAULT_NOISE 30 /* Default background noise power level */
+#define CONT_AD_DELTA_SIL 10 /* Initial default for cont_ad_t.delta_sil */
+#define CONT_AD_DELTA_SPEECH 17 /* Initial default for cont_ad_t.delta_speech */
+#define CONT_AD_MIN_NOISE 2 /* Expected minimum background noise level */
+#define CONT_AD_MAX_NOISE 70 /* Maximum background noise level */
+
+#define CONT_AD_HIST_INERTIA 3 /* Used in decaying the power histogram */
+
+#define CONT_AD_WINSIZE 21 /* Analysis window for state transitions */
+ /* rkm had 16 */
+
+#define CONT_AD_SPEECH_ONSET 9 /* Min #speech frames in analysis window for
+ SILENCE -> SPEECH state transition */
+/*
+ * SReed had 100 ms == 6.25 fr contiguous; rkm had 9 (out of 16+10) with a
+ * lower threshold.
+ */
+
+#define CONT_AD_SIL_ONSET 18 /* Min #silence frames in analysis window for
+ SPEECH -> SILENCE state transition
+ MUST BE <= CONT_AD_WINSIZE */
+/*
+ * SReed had 400 ms == 25 fr contiguous; rkm had 14 out of 16
+ */
+
+#define CONT_AD_LEADER 5 /* On transition to SPEECH state, so many frames
+ BEFORE window included in speech data (>0) */
+ /* SReed had 200 ms == 12.5 fr; rkm had 5 */
+
+#define CONT_AD_TRAILER 10 /* On transition to SILENCE state, so many frames
+ of silence included in speech data (>0).
+ NOTE: Ensure (0 < TRAILER+LEADER <= WINSIZE) */
+ /* SReed had 100 ms == 6.25 fr; rkm had 10 */
+
+
+void
+cont_ad_powhist_dump(FILE * fp, cont_ad_t * r)
+{
+ int32 i, j;
+
+ fprintf(fp, "PowHist:\n");
+ for (i = 0, j = 0; i < CONT_AD_POWHISTSIZE; i++) {
+ if (r->pow_hist[i] > 0) {
+ fprintf(fp, "\t%3d %6d\n", i, r->pow_hist[i]);
+ j = i;
+ }
+ }
+
+ fprintf(fp, "PH[%7.2f]:",
+ (double) (r->tot_frm * r->spf) / (double) (r->sps));
+ for (i = 0; i <= j; i++)
+ fprintf(fp, " %2d", r->pow_hist[i]);
+ fprintf(fp, "\n");
+
+ fflush(fp);
+}
+
+
+/*
+ * Compute frame power. Interface deliberately kept low level to allow arbitrary
+ * users to call this function with appropriate data.
+ */
+int32
+cont_ad_frame_pow(int16 * buf, int32 * prev, int32 spf)
+{
+ double sumsq, v;
+ int32 i;
+ int32 p;
+
+ sumsq = 0.0;
+ p = *prev;
+ for (i = 0; i < spf; i++) {
+ /* Note: pre-emphasis done to remove low-frequency noise. */
+ v = (double) (buf[i] - p);
+ sumsq += v * v;
+ p = buf[i];
+ }
+ *prev = p;
+
+ if (sumsq < spf) /* Make sure FRMPOW(sumsq) >= 0 */
+ sumsq = spf;
+
+ /*
+ * PWP: Units changed to dB
+ *
+ * Now the units of measurement of an input sample are volts (really!),
+ * so the power in dB is p = 20*log10(samp). Further, we want the RMS
+ * (root-mean-squared) average power across the frame.
+ *
+ * "sumsq" is the sum of the sum of the squares, so we want
+ *
+ * i = 20 * log10( sqrt ( sumsq / n_samps) )
+ *
+ * (Stephen Reed's code actually had
+ * i = 20 * log10( sqrt (sumsq) / n_samps )
+ * but this only produced an additive error.)
+ *
+ * i = 20 * log10( sqrt ( sumsq / n_samps) )
+ * = 20 * log10( ( sumsq / n_samps) ^ 0.5 )
+ * = 20 * log10( ( sumsq / n_samps) ) * 0.5 )
+ * = 10 * log10( ( sumsq / n_samps) )
+ * = 10 * ( log10( sumsq) - log10(n_samps) )
+ */
+ i = (int32) ((10.0 * (log10(sumsq) - log10((double) spf))) + 0.5);
+ if (i < 0)
+ i = 0; /* trim lower bound again to be safe. */
+ assert(i < 97);
+
+ return (i);
+}
+
+
+/*
+ * Classify frame (id=frm, starting at sample position s) as sil/nonsil. Classification
+ * done in isolation, independent of any other frame, based only on power histogram.
+ */
+static void
+compute_frame_pow(cont_ad_t * r, int32 frm)
+{
+ int32 i;
+
+ i = cont_ad_frame_pow(r->adbuf + (frm * r->spf), &(r->prev_sample),
+ r->spf);
+
+ r->frm_pow[frm] = (char) i;
+ (r->pow_hist[i])++;
+ r->thresh_update--;
+}
+
+
+/* PWP: $$$ check this */
+/*
+ * PWP: in SReed's code, decay was done by zeroing the histogram,
+ * i.e. no history.
+ */
+static void
+decay_hist(cont_ad_t * r)
+{
+ int32 i;
+
+ for (i = 0; i < CONT_AD_POWHISTSIZE; i++)
+ r->pow_hist[i] -= (r->pow_hist[i] >> CONT_AD_HIST_INERTIA);
+}
+
+
+/*
+ * Find silence threshold from power histogram.
+ */
+static int32
+find_thresh(cont_ad_t * r)
+{
+ int32 i, j, max, th;
+ int32 old_noise_level, old_thresh_sil, old_thresh_speech;
+
+ if (!r->auto_thresh)
+ return 0;
+
+ /*
+ * Find smallest non-zero histogram entry, but starting at some minimum power.
+ * Power lower than CONT_AD_MIN_NOISE indicates bad A/D input (eg, mic off...).
+ * Too high a minimum power is also bad.
+ */
+ for (i = r->min_noise;
+ (i < CONT_AD_POWHISTSIZE) && (r->pow_hist[i] == 0); i++);
+ if (i > r->max_noise) /* Bad signal? */
+ return -1;
+
+ /* PWP: Hmmmmm.... SReed's code looks over the lower 20 dB */
+ /* PWP: 1/14/98 Made to work like Stephen Reed's code */
+
+ /* This method of detecting the noise level is VERY unsatisfactory */
+ max = 0;
+ for (j = i, th = i; (j < CONT_AD_POWHISTSIZE) && (j < i + 20); j++) { /* PWP: was i+6, which was 9 dB */
+ if (max < r->pow_hist[j]) {
+ max = r->pow_hist[j];
+ th = j;
+ }
+ }
+
+ /* "Don't change the threshold too fast" */
+ old_noise_level = r->noise_level;
+ old_thresh_sil = r->thresh_sil;
+ old_thresh_speech = r->thresh_speech;
+ /* r->noise_level = (int32) (th * r->adapt_rate + r->noise_level * (1.0 - r->adapt_rate)); */
+ r->noise_level =
+ (int32) (r->noise_level +
+ r->adapt_rate * (th - r->noise_level) + 0.5);
+
+ /* update thresholds */
+ r->thresh_sil = r->noise_level + r->delta_sil;
+ r->thresh_speech = r->noise_level + r->delta_speech;
+
+ if (r->logfp) {
+ fprintf(r->logfp,
+ "%7.2fs %8df: NoisePeak: %d, Noiselevel: %d -> %d, Th-Sil: %d -> %d, Th-Sp: %d -> %d\n",
+ (double) (r->tot_frm * r->spf) / (double) (r->sps),
+ r->tot_frm, th, old_noise_level, r->noise_level,
+ old_thresh_sil, r->thresh_sil, old_thresh_speech,
+ r->thresh_speech);
+
+ cont_ad_powhist_dump(r->logfp, r);
+
+ fflush(r->logfp);
+ }
+
+ /*
+ * PWP: in SReed's original, he cleared the histogram here.
+ * I can't fathom why.
+ */
+
+ return 0;
+}
+
+
+/*
+ * Silence to speech transition
+ */
+static void
+sil2speech_transition(cont_ad_t *r, int frm)
+{
+ spseg_t *seg;
+
+ /* Speech detected; create speech segment description */
+ seg = malloc(sizeof(*seg));
+
+ seg->startfrm = r->win_startfrm - r->leader;
+ if (seg->startfrm < 0)
+ seg->startfrm += CONT_AD_ADFRMSIZE;
+ seg->nfrm = r->leader + r->winsize;
+ seg->next = NULL;
+
+ if (!r->spseg_head)
+ r->spseg_head = seg;
+ else
+ r->spseg_tail->next = seg;
+ r->spseg_tail = seg;
+
+ r->tail_state = CONT_AD_STATE_SPEECH;
+
+ if (r->logfp) {
+ int32 n;
+
+ /* Where (in absolute time) this speech segment starts */
+ n = frm - seg->startfrm;
+ if (n < 0)
+ n += CONT_AD_ADFRMSIZE;
+ n = r->tot_frm - n - 1;
+
+ fprintf(r->logfp,
+ "%7.2fs %8d[%3d]f: Sil -> Sp detect; seg start: %7.2fs %8d\n",
+ (double) (r->tot_frm *
+ r->spf) /
+ (double) (r->sps),
+ r->tot_frm, frm,
+ (double) (n * r->spf) / (double) (r->sps), n);
+ }
+
+ /* Now in SPEECH state; want to look for silence from end of this window */
+ r->win_validfrm = 1;
+ r->win_startfrm = frm;
+
+ /* Count #sil frames remaining in reduced window (of 1 frame) */
+ r->n_other = (r->frm_pow[frm] <= r->thresh_sil) ? 1 : 0;
+}
+
+/*
+ * Speech to silence transition
+ */
+static void
+speech2sil_transition(cont_ad_t *r, int frm)
+{
+ int f;
+
+ /* End of speech detected; speech->sil transition */
+ r->spseg_tail->nfrm += r->trailer;
+
+ r->tail_state = CONT_AD_STATE_SIL;
+
+ if (r->logfp) {
+ int32 n;
+
+ /* Where (in absolute time) this speech segment ends */
+ n = r->spseg_tail->startfrm + r->spseg_tail->nfrm - 1;
+ if (n >= CONT_AD_ADFRMSIZE)
+ n -= CONT_AD_ADFRMSIZE;
+ n = frm - n;
+ if (n < 0)
+ n += CONT_AD_ADFRMSIZE;
+ n = r->tot_frm - n;
+
+ fprintf(r->logfp,
+ "%7.2fs %8d[%3d]f: Sp -> Sil detect; seg end: %7.2fs %8d\n",
+ (double) (r->tot_frm * r->spf) /
+ (double) (r->sps), r->tot_frm, frm,
+ (double) (n * r->spf) / (double) (r->sps), n);
+ }
+
+ /* Now in SILENCE state; start looking for speech trailer+leader frames later */
+ r->win_validfrm -= (r->trailer + r->leader - 1);
+ r->win_startfrm += (r->trailer + r->leader - 1);
+ if (r->win_startfrm >= CONT_AD_ADFRMSIZE)
+ r->win_startfrm -= CONT_AD_ADFRMSIZE;
+
+ /* Count #speech frames remaining in reduced window */
+ r->n_other = 0;
+ for (f = r->win_startfrm;;) {
+ if (r->frm_pow[f] >= r->thresh_speech)
+ r->n_other++;
+
+ if (f == frm)
+ break;
+
+ f++;
+ if (f >= CONT_AD_ADFRMSIZE)
+ f = 0;
+ }
+}
+
+
+/*
+ * Main silence/speech region detection routine. If currently in
+ * SILENCE state, switch to SPEECH state if a window (r->winsize)
+ * of frames is mostly non-silence. If in SPEECH state, switch to
+ * SILENCE state if the window is mostly silence.
+ */
+static void
+boundary_detect(cont_ad_t * r, int32 frm)
+{
+ assert(r->n_other >= 0);
+
+ r->win_validfrm++;
+ if (r->tail_state == CONT_AD_STATE_SIL) {
+ if (r->frm_pow[frm] >= r->thresh_speech)
+ r->n_other++;
+ }
+ else {
+ if (r->frm_pow[frm] <= r->thresh_sil)
+ r->n_other++;
+ }
+
+ if (r->logfp) {
+ fprintf(r->logfp,
+ "%7.2fs %8d[%3d]f: P: %2d, N: %2d, T+: %2d, T-: %2d, #O: %2d, %s\n",
+ (double) (r->tot_frm * r->spf) / (double) (r->sps),
+ r->tot_frm, frm, r->frm_pow[frm], r->noise_level,
+ r->thresh_speech, r->thresh_sil, r->n_other,
+ (r->tail_state == CONT_AD_STATE_SIL) ? "--" : "Sp");
+ }
+
+ if (r->win_validfrm < r->winsize) /* Not reached full analysis window size */
+ return;
+ assert(r->win_validfrm == r->winsize);
+
+ if (r->tail_state == CONT_AD_STATE_SIL) { /* Currently in SILENCE state */
+ if (r->n_frm >= r->winsize + r->leader
+ && r->n_other >= r->speech_onset) {
+ sil2speech_transition(r, frm);
+ }
+ }
+ else {
+ if (r->n_other >= r->sil_onset) {
+ speech2sil_transition(r, frm);
+ }
+ else {
+ /* In speech state, and staying there; add this frame to segment */
+ r->spseg_tail->nfrm++;
+ }
+ }
+
+ /*
+ * Get rid of oldest frame in analysis window. Not quite correct;
+ * thresholds could have changed over the window; should preserve
+ * the original speech/silence label for the frame and undo it. Later..
+ */
+ if (r->tail_state == CONT_AD_STATE_SIL) {
+ if (r->frm_pow[r->win_startfrm] >= r->thresh_speech) {
+ if (r->n_other > 0)
+ r->n_other--;
+ }
+ }
+ else {
+ if (r->frm_pow[r->win_startfrm] <= r->thresh_sil) {
+ if (r->n_other > 0)
+ r->n_other--;
+ }
+ }
+ r->win_validfrm--;
+ r->win_startfrm++;
+ if (r->win_startfrm >= CONT_AD_ADFRMSIZE)
+ r->win_startfrm = 0;
+
+ if (r->logfp)
+ fflush(r->logfp);
+}
+
+
+static int32
+max_siglvl(cont_ad_t * r, int32 startfrm, int32 nfrm)
+{
+ int32 siglvl, i, f;
+
+ siglvl = 0;
+ if (nfrm > 0) {
+ for (i = 0, f = startfrm; i < nfrm; i++, f++) {
+ if (f >= CONT_AD_ADFRMSIZE)
+ f -= CONT_AD_ADFRMSIZE;
+ if (r->frm_pow[f] > siglvl)
+ siglvl = r->frm_pow[f];
+ }
+ }
+ return siglvl;
+}
+
+
+#if 0
+/*
+ * RKM(2005/01/31): Where did this come from? If needed, it should be called
+ * cont_ad_get_audio_data.
+ */
+void
+get_audio_data(cont_ad_t * r, int16 * buf, int32 max)
+{
+}
+#endif
+
+
+static void
+cont_ad_read_log(cont_ad_t * r, int32 retval)
+{
+ spseg_t *seg;
+
+ fprintf(r->logfp, "return from cont_ad_read() -> %d:\n", retval);
+ fprintf(r->logfp, "\tstate: %d\n", r->state);
+ fprintf(r->logfp, "\tread_ts: %d (%.2fs)\n",
+ r->read_ts, (float32) r->read_ts / (float32) r->sps);
+ fprintf(r->logfp, "\tseglen: %d (%.2fs)\n",
+ r->seglen, (float32) r->seglen / (float32) r->sps);
+ fprintf(r->logfp, "\tsiglvl: %d\n", r->siglvl);
+ fprintf(r->logfp, "\theadfrm: %d\n", r->headfrm);
+ fprintf(r->logfp, "\tn_frm: %d\n", r->n_frm);
+ fprintf(r->logfp, "\tn_sample: %d\n", r->n_sample);
+ fprintf(r->logfp, "\twin_startfrm: %d\n", r->win_startfrm);
+ fprintf(r->logfp, "\twin_validfrm: %d\n", r->win_validfrm);
+ fprintf(r->logfp, "\tnoise_level: %d\n", r->noise_level);
+ fprintf(r->logfp, "\tthresh_sil: %d\n", r->thresh_sil);
+ fprintf(r->logfp, "\tthresh_speech: %d\n", r->thresh_speech);
+ fprintf(r->logfp, "\tn_other: %d\n", r->n_other);
+ fprintf(r->logfp, "\ttail_state: %d\n", r->tail_state);
+ fprintf(r->logfp, "\ttot_frm: %d\n", r->tot_frm);
+
+ fprintf(r->logfp, "\tspseg:");
+ for (seg = r->spseg_head; seg; seg = seg->next)
+ fprintf(r->logfp, " %d[%d]", seg->startfrm, seg->nfrm);
+ fprintf(r->logfp, "\n");
+
+ fflush(r->logfp);
+}
+
+
+/*
+ * Copy data from r->adbuf[sf], for nf frames, into buf.
+ * All length checks must have been completed before this call; hence, this
+ * function will copy exactly the specified number of frames.
+ *
+ * Return value: Index of frame just after the segment copied, possibly wrapped
+ * around to 0.
+ */
+static int32
+buf_copy(cont_ad_t * r, int32 sf, int32 nf, int16 * buf)
+{
+ int32 f, l;
+
+ assert((sf >= 0) && (sf < CONT_AD_ADFRMSIZE));
+ assert(nf >= 0);
+
+ if (sf + nf > CONT_AD_ADFRMSIZE) {
+ /* Amount to be copied wraps around adbuf; copy in two stages */
+ f = CONT_AD_ADFRMSIZE - sf;
+ l = (f * r->spf);
+ memcpy(buf, r->adbuf + (sf * r->spf), l * sizeof(int16));
+
+ if (r->logfp) {
+ fprintf(r->logfp,
+ "return %d speech frames [%d..%d]; %d samples\n",
+ f, sf, sf + f - 1, l);
+ }
+
+ buf += l;
+ sf = 0;
+ nf -= f;
+ }
+
+ if (nf > 0) {
+ l = (nf * r->spf);
+ memcpy(buf, r->adbuf + (sf * r->spf), l * sizeof(int16));
+
+ if (r->logfp) {
+ fprintf(r->logfp,
+ "return %d speech frames [%d..%d]; %d samples\n",
+ nf, sf, sf + nf - 1, l);
+ }
+ }
+
+ if ((sf + nf) >= CONT_AD_ADFRMSIZE) {
+ assert((sf + nf) == CONT_AD_ADFRMSIZE);
+ return 0;
+ }
+ else
+ return (sf + nf);
+}
+
+int32
+cont_ad_buffer_space(cont_ad_t *r)
+{
+ return r->adbufsize - r->n_sample;
+}
+
+/*
+ * Read as much data as possible from r->adfunc into r->adbuf.
+ */
+static int32
+cont_ad_read_internal(cont_ad_t *r, int16 *buf, int32 max)
+{
+ int32 head, tail, len, l;
+
+ /*
+ * First read as much of raw A/D as possible and available. adbuf is not
+ * really a circular buffer, so may have to read in two steps for wrapping
+ * around.
+ */
+ head = r->headfrm * r->spf;
+ tail = head + r->n_sample;
+ len = r->n_sample - (r->n_frm * r->spf); /* #partial frame samples at the tail */
+ assert((len >= 0) && (len < r->spf));
+
+ if ((tail < r->adbufsize) && (!r->eof)) {
+ if (r->adfunc) {
+ if ((l =
+ (*(r->adfunc)) (r->ad, r->adbuf + tail,
+ r->adbufsize - tail)) < 0) {
+ r->eof = 1;
+ l = 0;
+ }
+ }
+ else {
+ l = r->adbufsize - tail;
+ if (l > max) {
+ l = max;
+ max = 0;
+ }
+ else {
+ max -= l;
+ }
+ memcpy(r->adbuf + tail, buf, l * sizeof(int16));
+ buf += l;
+ }
+ if ((l > 0) && r->rawfp) {
+ fwrite(r->adbuf + tail, sizeof(int16), l, r->rawfp);
+ fflush(r->rawfp);
+ }
+
+ tail += l;
+ len += l;
+ r->n_sample += l;
+ }
+ if ((tail >= r->adbufsize) && (!r->eof)) {
+ tail -= r->adbufsize;
+ if (tail < head) {
+ if (r->adfunc) {
+ if ((l =
+ (*(r->adfunc)) (r->ad,
+ r->adbuf + tail, head - tail)) < 0) {
+ r->eof = 1;
+ l = 0;
+ }
+ }
+ else {
+ l = head - tail;
+ if (l > max)
+ l = max;
+ memcpy(r->adbuf + tail, buf, l * sizeof(int16));
+ }
+ if ((l > 0) && r->rawfp) {
+ fwrite(r->adbuf + tail, sizeof(int16), l, r->rawfp);
+ fflush(r->rawfp);
+ }
+
+ tail += l;
+ len += l;
+ r->n_sample += l;
+ }
+ }
+
+ return len;
+}
+
+/*
+ * Classify incoming frames as silence or speech.
+ */
+int32
+cont_ad_classify(cont_ad_t *r, int32 len)
+{
+ int32 tailfrm;
+
+ tailfrm = (r->headfrm + r->n_frm); /* Next free frame slot to be filled */
+ if (tailfrm >= CONT_AD_ADFRMSIZE)
+ tailfrm -= CONT_AD_ADFRMSIZE;
+
+ for (; len >= r->spf; len -= r->spf) {
+ compute_frame_pow(r, tailfrm);
+ r->n_frm++;
+ r->tot_frm++;
+
+ /*
+ * Find speech/sil state change, if any. Also, if staying in speech state
+ * add this frame to current speech segment.
+ */
+ boundary_detect(r, tailfrm);
+
+ if (++tailfrm >= CONT_AD_ADFRMSIZE)
+ tailfrm = 0;
+
+ /* Update thresholds if time to do so */
+ if (r->thresh_update <= 0) {
+ int32 i, f;
+ find_thresh(r);
+ decay_hist(r);
+ r->thresh_update = CONT_AD_THRESH_UPDATE;
+
+#if 1
+ /*
+ * Since threshold has been updated, recompute r->n_other.
+ * (RKM: Is this really necessary? Comment out??)
+ */
+ r->n_other = 0;
+ if (r->tail_state == CONT_AD_STATE_SIL) {
+ for (i = r->win_validfrm, f = r->win_startfrm; i > 0; --i) {
+ if (r->frm_pow[f] >= r->thresh_speech)
+ r->n_other++;
+
+ f++;
+ if (f >= CONT_AD_ADFRMSIZE)
+ f = 0;
+ }
+ }
+ else {
+ for (i = r->win_validfrm, f = r->win_startfrm; i > 0; --i) {
+ if (r->frm_pow[f] <= r->thresh_sil)
+ r->n_other++;
+
+ f++;
+ if (f >= CONT_AD_ADFRMSIZE)
+ f = 0;
+ }
+ }
+#endif
+ }
+ }
+
+ return r->tail_state;
+}
+
+/*
+ * Main function called by the application to filter out silence regions.
+ * Maintains a linked list of speech segments pointing into r->adbuf and feeds
+ * data to application from them.
+ */
+int32
+cont_ad_read(cont_ad_t * r, int16 * buf, int32 max)
+{
+ int32 flen, len, retval, newstate;
+ spseg_t *seg;
+
+ if ((r == NULL) || (buf == NULL))
+ return -1;
+
+ if (max < r->spf) {
+ E_ERROR
+ ("cont_ad_read requires buffer of at least %d samples\n",
+ r->spf);
+ return -1;
+ }
+
+ if (r->logfp) {
+ fprintf(r->logfp, "cont_ad_read(,, %d)\n", max);
+ fflush(r->logfp);
+ }
+
+ /* Read data from adfunc or from buf. */
+ len = cont_ad_read_internal(r, buf, max);
+
+ /* Compute frame power for unprocessed+new data and find speech/silence boundaries */
+ cont_ad_classify(r, len);
+
+ /*
+ * If eof on input data source, cleanup the final segment.
+ */
+ if (r->eof) {
+ if (r->tail_state == CONT_AD_STATE_SPEECH) {
+ /*
+ * Still inside a speech segment when input data got over. Absort any
+ * remaining frames into the final speech segment.
+ */
+ assert(r->spseg_tail != NULL);
+
+ /* Absorb frames still in analysis window into final speech seg */
+ assert((r->win_validfrm >= 0)
+ && (r->win_validfrm < r->winsize));
+ r->spseg_tail->nfrm += r->win_validfrm;
+
+ r->tail_state = CONT_AD_STATE_SIL;
+ }
+
+ r->win_startfrm += r->win_validfrm;
+ if (r->win_startfrm >= CONT_AD_ADFRMSIZE)
+ r->win_startfrm -= CONT_AD_ADFRMSIZE;
+ r->win_validfrm = 0;
+ r->n_other = 0;
+ }
+
+ /*
+ * At last ready to copy speech data, if any, into caller's buffer. Raw
+ * speech data is segmented into alternating speech and silence segments.
+ * But any single call to cont_ad_read will never cross a speech/silence
+ * boundary.
+ */
+ seg = r->spseg_head; /* first speech segment available, if any */
+
+ if ((seg == NULL) || (r->headfrm != seg->startfrm)) {
+ /*
+ * Either no speech data available, or inside a silence segment. Find
+ * length of silence segment.
+ */
+ if (seg == NULL) {
+ assert(r->tail_state == CONT_AD_STATE_SIL);
+
+ flen =
+ (r->eof) ? r->n_frm : r->n_frm - (r->winsize +
+ r->leader - 1);
+ if (flen < 0)
+ flen = 0;
+ }
+ else {
+ flen = seg->startfrm - r->headfrm;
+ if (flen < 0)
+ flen += CONT_AD_ADFRMSIZE;
+ }
+
+ if (r->rawmode) {
+ /* Restrict silence segment to user buffer size, integral #frames */
+ int32 f = max / r->spf;
+ if (flen > f)
+ flen = f;
+ }
+
+ newstate = CONT_AD_STATE_SIL;
+ }
+ else {
+ flen = max / r->spf; /* truncate read-size to integral #frames */
+ if (flen > seg->nfrm)
+ flen = seg->nfrm; /* truncate further to this segment size */
+
+ newstate = CONT_AD_STATE_SPEECH;
+ }
+
+ len = flen * r->spf; /* #samples being consumed */
+
+ r->siglvl = max_siglvl(r, r->headfrm, flen);
+
+ if ((newstate == CONT_AD_STATE_SIL) && (!r->rawmode)) {
+ /* Skip silence data */
+ r->headfrm += flen;
+ if (r->headfrm >= CONT_AD_ADFRMSIZE)
+ r->headfrm -= CONT_AD_ADFRMSIZE;
+
+ retval = 0; /* #samples being copied/returned */
+ }
+ else {
+ /* Copy speech/silence(in rawmode) data */
+ r->headfrm = buf_copy(r, r->headfrm, flen, buf);
+
+ retval = len; /* #samples being copied/returned */
+ }
+
+ r->n_frm -= flen;
+ r->n_sample -= len;
+ assert((r->n_frm >= 0) && (r->n_sample >= 0));
+ assert(r->win_validfrm <= r->n_frm);
+
+ if (r->state == newstate)
+ r->seglen += len;
+ else
+ r->seglen = len;
+ r->state = newstate;
+
+ if (newstate == CONT_AD_STATE_SPEECH) {
+ seg->startfrm = r->headfrm;
+ assert(seg->startfrm >= 0);
+ seg->nfrm -= flen;
+
+ /* Free seg if empty and not recording into it */
+ if ((seg->nfrm == 0)
+ && (seg->next || (r->tail_state == CONT_AD_STATE_SIL))) {
+ r->spseg_head = seg->next;
+ if (seg->next == NULL)
+ r->spseg_tail = NULL;
+ free(seg);
+ }
+ }
+
+ /* Update timestamp. Total raw A/D read - those remaining to be consumed */
+ r->read_ts = (r->tot_frm - r->n_frm) * r->spf;
+
+ if (retval == 0)
+ retval = (r->eof && (r->spseg_head == NULL)) ? -1 : 0;
+
+ if (r->logfp)
+ cont_ad_read_log(r, retval);
+
+ return retval;
+}
+
+
+/*
+ * Calibrate input channel for silence threshold.
+ */
+int32
+cont_ad_calib(cont_ad_t * r)
+{
+ int32 i, s, k, len, tailfrm;
+
+ if (r == NULL)
+ return -1;
+
+ /* clear histogram */
+ for (i = 0; i < CONT_AD_POWHISTSIZE; i++)
+ r->pow_hist[i] = 0;
+ tailfrm = r->headfrm + r->n_frm;
+ if (tailfrm >= CONT_AD_ADFRMSIZE)
+ tailfrm -= CONT_AD_ADFRMSIZE;
+ s = (tailfrm * r->spf);
+
+ for (r->n_calib_frame = 0;
+ r->n_calib_frame < CONT_AD_CALIB_FRAMES;
+ ++r->n_calib_frame) {
+ len = r->spf;
+ while (len > 0) {
+ /*Trouble */
+ if ((k = (*(r->adfunc)) (r->ad, r->adbuf + s, len)) < 0)
+ return -1;
+ len -= k;
+ s += k;
+ }
+ s -= r->spf;
+
+ compute_frame_pow(r, tailfrm);
+ }
+
+ r->thresh_update = CONT_AD_THRESH_UPDATE;
+ return find_thresh(r);
+}
+
+int32
+cont_ad_calib_size(cont_ad_t *r)
+{
+ return r->spf * CONT_AD_CALIB_FRAMES;
+}
+
+int32
+cont_ad_calib_loop(cont_ad_t * r, int16 * buf, int32 max)
+{
+ int32 i, s, len, tailfrm;
+
+ if (r->n_calib_frame == CONT_AD_CALIB_FRAMES) {
+ /* If calibration previously succeeded, then this is a
+ * recalibration, so start again. */
+ r->n_calib_frame = 0;
+ /* clear histogram */
+ for (i = 0; i < CONT_AD_POWHISTSIZE; i++)
+ r->pow_hist[i] = 0;
+ }
+
+ tailfrm = r->headfrm + r->n_frm;
+ if (tailfrm >= CONT_AD_ADFRMSIZE)
+ tailfrm -= CONT_AD_ADFRMSIZE;
+ s = (tailfrm * r->spf);
+
+ len = r->spf;
+ for (; r->n_calib_frame < CONT_AD_CALIB_FRAMES;
+ ++r->n_calib_frame) {
+ if (max < len)
+ return 1;
+ memcpy(r->adbuf + s, buf, len * sizeof(int16));
+ max -= len;
+ buf += len;
+ compute_frame_pow(r, tailfrm);
+ }
+
+ r->thresh_update = CONT_AD_THRESH_UPDATE;
+ return find_thresh(r);
+}
+
+
+/* PWP 1/14/98 -- modified for compatibility with old code */
+int32
+cont_ad_set_thresh(cont_ad_t * r, int32 sil, int32 speech)
+{
+ if (r == NULL)
+ return -1;
+
+ if ((sil < 0) || (speech < 0)) {
+ fprintf(stderr,
+ "cont_ad_set_thresh: invalid threshold arguments: %d, %d\n",
+ sil, speech);
+ return -1;
+ }
+ r->delta_sil = (3 * sil) / 2;
+ r->delta_speech = (3 * speech) / 2;
+
+ return 0;
+}
+
+
+/*
+ * PWP 1/14/98 -- set the changable params.
+ *
+ * delta_sil, delta_speech, min_noise, and max_noise are in dB,
+ * winsize, speech_onset, sil_onset, leader and trailer are in frames of
+ * 16 ms length (256 samples @ 16kHz sampling).
+ */
+int32
+cont_ad_set_params(cont_ad_t * r, int32 delta_sil,
+ int32 delta_speech, int32 min_noise,
+ int32 max_noise, int32 winsize,
+ int32 speech_onset, int32 sil_onset, int32 leader,
+ int32 trailer, float32 adapt_rate)
+{
+ if ((delta_sil < 0) || (delta_speech < 0) || (min_noise < 0)
+ || (max_noise < 0)) {
+ E_ERROR("threshold arguments: "
+ "%d, %d, %d, %d must all be >=0\n", delta_sil,
+ delta_speech, min_noise, max_noise);
+ return -1;
+ }
+
+ if ((speech_onset > winsize) || (speech_onset <= 0)
+ || (winsize <= 0)) {
+ E_ERROR
+ ("speech_onset, %d, must be <= winsize, %d, and both >0\n",
+ speech_onset, winsize);
+ return -1;
+ }
+
+ if ((sil_onset > winsize) || (sil_onset <= 0) || (winsize <= 0)) {
+ E_ERROR
+ ("sil_onset, %d, must be <= winsize, %d, and both >0\n",
+ sil_onset, winsize);
+ return -1;
+ }
+
+ if (((leader + trailer) > winsize) || (leader <= 0)
+ || (trailer <= 0)) {
+ E_ERROR
+ ("leader, %d, plus trailer, %d, must be <= winsize, %d, and both >0\n",
+ leader, trailer, winsize);
+ return -1;
+ }
+
+ if ((adapt_rate < 0.0) || (adapt_rate > 1.0)) {
+ E_ERROR("adapt_rate, %e; must be in range 0..1\n", adapt_rate);
+ return -1;
+ }
+
+ if (r == NULL)
+ return -1;
+
+ r->delta_sil = delta_sil;
+ r->delta_speech = delta_speech;
+ r->min_noise = min_noise;
+ r->max_noise = max_noise;
+
+ r->winsize = winsize;
+ r->speech_onset = speech_onset;
+ r->sil_onset = sil_onset;
+ r->leader = leader;
+ r->trailer = trailer;
+
+ r->adapt_rate = adapt_rate;
+
+ if (r->win_validfrm >= r->winsize)
+ r->win_validfrm = r->winsize - 1;
+
+ return 0;
+}
+
+
+/*
+ * PWP 1/14/98 -- get the changable params.
+ *
+ * delta_sil, delta_speech, min_noise, and max_noise are in dB,
+ * winsize, speech_onset, sil_onset, leader and trailer are in frames of
+ * 16 ms length (256 samples @ 16kHz sampling).
+ */
+int32
+cont_ad_get_params(cont_ad_t * r, int32 * delta_sil,
+ int32 * delta_speech, int32 * min_noise,
+ int32 * max_noise, int32 * winsize,
+ int32 * speech_onset, int32 * sil_onset,
+ int32 * leader, int32 * trailer, float32 * adapt_rate)
+{
+ if (!delta_sil || !delta_speech || !min_noise || !max_noise
+ || !winsize || !speech_onset || !sil_onset || !leader
+ || !trailer || !adapt_rate) {
+ fprintf(stderr, "cont_ad_get_params: some param slots are NULL\n");
+ return (-1);
+ }
+
+ if (r == NULL)
+ return -1;
+
+ *delta_sil = r->delta_sil;
+ *delta_speech = r->delta_speech;
+ *min_noise = r->min_noise;
+ *max_noise = r->max_noise;
+
+ *winsize = r->winsize;
+ *speech_onset = r->speech_onset;
+ *sil_onset = r->sil_onset;
+ *leader = r->leader;
+ *trailer = r->trailer;
+
+ *adapt_rate = r->adapt_rate;
+
+ return 0;
+}
+
+
+/*
+ * Reset, discarded any accumulated speech.
+ */
+int32
+cont_ad_reset(cont_ad_t * r)
+{
+ spseg_t *seg;
+
+ if (r == NULL)
+ return -1;
+
+ while (r->spseg_head) {
+ seg = r->spseg_head;
+ r->spseg_head = seg->next;
+ free(seg);
+ }
+ r->spseg_tail = NULL;
+
+ r->headfrm = 0;
+ r->n_frm = 0;
+ r->n_sample = 0;
+ r->win_startfrm = 0;
+ r->win_validfrm = 0;
+ r->n_other = 0;
+
+ r->tail_state = CONT_AD_STATE_SIL;
+
+ return 0;
+}
+
+
+int32
+cont_ad_close(cont_ad_t * cont)
+{
+ if (cont == NULL)
+ return -1;
+
+ cont_ad_reset(cont); /* Frees any remaining speech segments */
+
+ free(cont->adbuf);
+ free(cont->pow_hist);
+ free(cont->frm_pow);
+ free(cont);
+
+ return 0;
+}
+
+
+int32
+cont_ad_detach(cont_ad_t * c)
+{
+ if (c == NULL)
+ return -1;
+
+ c->ad = NULL;
+ c->adfunc = NULL;
+ return 0;
+}
+
+
+int32
+cont_ad_attach(cont_ad_t * c, ad_rec_t * a,
+ int32(*func) (ad_rec_t *, int16 *, int32))
+{
+ if (c == NULL)
+ return -1;
+
+ c->ad = a;
+ c->adfunc = func;
+ c->eof = 0;
+
+ return 0;
+}
+
+
+int32
+cont_set_thresh(cont_ad_t * r, int32 silence, int32 speech)
+{
+ int32 i, f;
+
+ r->thresh_speech = speech;
+ r->thresh_sil = silence;
+
+ /* Since threshold has been updated, recompute r->n_other */
+ r->n_other = 0;
+ if (r->tail_state == CONT_AD_STATE_SIL) {
+ for (i = r->win_validfrm, f = r->win_startfrm; i > 0; --i) {
+ if (r->frm_pow[f] >= r->thresh_speech)
+ r->n_other++;
+
+ f++;
+ if (f >= CONT_AD_ADFRMSIZE)
+ f = 0;
+ }
+ }
+ else if (r->tail_state == CONT_AD_STATE_SPEECH) {
+ for (i = r->win_validfrm, f = r->win_startfrm; i > 0; --i) {
+ if (r->frm_pow[f] <= r->thresh_sil)
+ r->n_other++;
+
+ f++;
+ if (f >= CONT_AD_ADFRMSIZE)
+ f = 0;
+ }
+ }
+
+ return 0;
+}
+
+
+/*
+ * Set the file pointer for dumping the raw input audio stream.
+ */
+int32
+cont_ad_set_rawfp(cont_ad_t * r, FILE * fp)
+{
+ if (r == NULL)
+ return -1;
+
+ r->rawfp = fp;
+ return 0;
+}
+
+
+/*
+ * Set the file pointer for logging cont_ad progress.
+ */
+int32
+cont_ad_set_logfp(cont_ad_t * r, FILE * fp)
+{
+ if (r == NULL)
+ return -1;
+
+ r->logfp = fp;
+ return 0;
+}
+
+
+/*
+ * One-time initialization.
+ */
+cont_ad_t *
+cont_ad_init(ad_rec_t * a, int32(*func) (ad_rec_t *, int16 *, int32))
+{
+ cont_ad_t *r;
+
+ if ((r = malloc(sizeof(*r))) == NULL) {
+ E_ERROR_SYSTEM("allocation of cont_ad_t failed");
+ return NULL;
+ }
+
+ r->ad = a;
+ r->adfunc = func;
+ r->eof = 0;
+ r->rawmode = 0;
+
+ if (a != NULL)
+ r->sps = a->sps;
+ else
+ r->sps = CONT_AD_SPS;
+
+ /* Set samples/frame such that when sps=16000, spf=256 */
+ r->spf = (r->sps * 256) / CONT_AD_SPS;
+ r->adbufsize = CONT_AD_ADFRMSIZE * r->spf;
+
+ if ((r->adbuf = malloc(r->adbufsize * sizeof(*r->adbuf))) == NULL) {
+ E_ERROR_SYSTEM("allocation of audio buffer failed");
+ free(r);
+ return NULL;
+ }
+ if ((r->pow_hist =
+ calloc(CONT_AD_POWHISTSIZE, sizeof(*r->pow_hist))) == NULL) {
+ E_ERROR_SYSTEM("allocation of power history buffer failed");
+ free(r->adbuf);
+ free(r);
+ return NULL;
+ }
+ if ((r->frm_pow =
+ calloc(CONT_AD_ADFRMSIZE, sizeof(*r->frm_pow))) == NULL) {
+ E_ERROR_SYSTEM("allocation of frame power buffer failed");
+ free(r->pow_hist);
+ free(r->adbuf);
+ free(r);
+ return NULL;
+ }
+
+ r->state = CONT_AD_STATE_SIL;
+ r->read_ts = 0;
+ r->seglen = 0;
+ r->siglvl = 0;
+ r->prev_sample = 0;
+ r->tot_frm = 0;
+ r->noise_level = CONT_AD_DEFAULT_NOISE;
+
+ r->auto_thresh = 1;
+ r->delta_sil = CONT_AD_DELTA_SIL;
+ r->delta_speech = CONT_AD_DELTA_SPEECH;
+ r->min_noise = CONT_AD_MIN_NOISE;
+ r->max_noise = CONT_AD_MAX_NOISE;
+ r->winsize = CONT_AD_WINSIZE;
+ r->speech_onset = CONT_AD_SPEECH_ONSET;
+ r->sil_onset = CONT_AD_SIL_ONSET;
+ r->leader = CONT_AD_LEADER;
+ r->trailer = CONT_AD_TRAILER;
+
+ r->thresh_sil = r->noise_level + r->delta_sil;
+ r->thresh_speech = r->noise_level + r->delta_speech;
+ r->thresh_update = CONT_AD_THRESH_UPDATE;
+ r->adapt_rate = CONT_AD_ADAPT_RATE;
+
+ r->tail_state = CONT_AD_STATE_SIL;
+
+ r->spseg_head = NULL;
+ r->spseg_tail = NULL;
+
+ r->rawfp = NULL;
+ r->logfp = NULL;
+
+ r->n_calib_frame = 0;
+
+ cont_ad_reset(r);
+
+ return r;
+}
+
+
+cont_ad_t *
+cont_ad_init_rawmode(ad_rec_t * a,
+ int32(*func) (ad_rec_t *, int16 *, int32))
+{
+ cont_ad_t *r;
+
+ r = cont_ad_init(a, func);
+ r->rawmode = 1;
+
+ return r;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * HISTORY
+ *
+ * 17-Apr-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_open_play_sps(), and made ad_open_play() call it.
+ *
+ * 10-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_play_t type to all calls.
+ *
+ * 03-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+#include <windows.h>
+#include <mmsystem.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/ad.h"
+
+
+#define WO_BUFSIZE 3200 /* Samples/buf */
+#define N_WO_BUF 2 /* #Playback bufs */
+
+/* Silvio Moioli: using OutputDebugStringW instead of OutputDebugString */
+#ifdef _WIN32_WCE
+#include "ckd_alloc.h"
+static void
+waveout_error(char *src, int32 ret)
+{
+ TCHAR errbuf[512];
+ wchar_t* werrbuf;
+ size_t len;
+
+ waveOutGetErrorText(ret, errbuf, sizeof(errbuf));
+ len = mbstowcs(NULL, errbuf, 0) + 1;
+ werrbuf = ckd_calloc(len, sizeof(*werrbuf));
+ mbstowcs(werrbuf, errbuf, len);
+
+ OutputDebugStringW(werrbuf);
+ }
+
+#else
+static void
+waveout_error(char *src, int32 ret)
+{
+ char errbuf[1024];
+
+ waveOutGetErrorText(ret, errbuf, sizeof(errbuf));
+ fprintf(stderr, "%s error %d: %s\n", src, ret, errbuf);
+}
+#endif
+
+
+static void
+waveout_free_buf(ad_wbuf_t * b)
+{
+ GlobalUnlock(b->h_whdr);
+ GlobalFree(b->h_whdr);
+ GlobalUnlock(b->h_buf);
+ GlobalFree(b->h_buf);
+}
+
+
+static int32
+waveout_alloc_buf(ad_wbuf_t * b, int32 samples_per_buf)
+{
+ HGLOBAL h_buf;
+ LPSTR p_buf;
+ HGLOBAL h_whdr;
+ LPWAVEHDR p_whdr;
+
+ /* Allocate data buffer */
+ h_buf =
+ GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE,
+ samples_per_buf * sizeof(int16));
+ if (!h_buf) {
+ fprintf(stderr, "GlobalAlloc failed\n");
+ return -1;
+ }
+ if ((p_buf = GlobalLock(h_buf)) == NULL) {
+ GlobalFree(h_buf);
+ fprintf(stderr, "GlobalLock failed\n");
+ return -1;
+ }
+
+ /* Allocate WAVEHDR structure */
+ h_whdr = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, sizeof(WAVEHDR));
+ if (h_whdr == NULL) {
+ GlobalUnlock(h_buf);
+ GlobalFree(h_buf);
+
+ fprintf(stderr, "GlobalAlloc failed\n");
+ return -1;
+ }
+ if ((p_whdr = GlobalLock(h_whdr)) == NULL) {
+ GlobalUnlock(h_buf);
+ GlobalFree(h_buf);
+ GlobalFree(h_whdr);
+
+ fprintf(stderr, "GlobalLock failed\n");
+ return -1;
+ }
+
+ b->h_buf = h_buf;
+ b->p_buf = p_buf;
+ b->h_whdr = h_whdr;
+ b->p_whdr = p_whdr;
+
+ p_whdr->lpData = p_buf;
+ p_whdr->dwBufferLength = samples_per_buf * sizeof(int16);
+ p_whdr->dwUser = 0L;
+ p_whdr->dwFlags = 0L;
+ p_whdr->dwLoops = 0L;
+
+ return 0;
+}
+
+
+static int32
+waveout_enqueue_buf(HWAVEOUT h, LPWAVEHDR whdr)
+{
+ int32 st;
+
+ if ((st = waveOutPrepareHeader(h, whdr, sizeof(WAVEHDR))) != 0) {
+ waveout_error("waveOutPrepareHeader", st);
+ return -1;
+ }
+
+ if ((st = waveOutWrite(h, whdr, sizeof(WAVEHDR))) != 0) {
+ waveout_error("waveOutWrite", st);
+ return -1;
+ }
+
+ return 0;
+}
+
+
+static HWAVEOUT
+waveout_open(int32 samples_per_sec, int32 bytes_per_sample)
+{
+ WAVEFORMATEX wfmt;
+ int32 st;
+ HWAVEOUT h;
+
+ if (bytes_per_sample != sizeof(int16)) {
+ fprintf(stderr, "bytes/sample != %d\n", sizeof(int16));
+ return NULL;
+ }
+
+ wfmt.wFormatTag = WAVE_FORMAT_PCM;
+ wfmt.nChannels = 1;
+ wfmt.nSamplesPerSec = samples_per_sec;
+ wfmt.nAvgBytesPerSec = samples_per_sec * bytes_per_sample;
+ wfmt.nBlockAlign = bytes_per_sample;
+ wfmt.wBitsPerSample = 8 * bytes_per_sample;
+ wfmt.cbSize = 0;
+
+ /* There should be a check here for a device of the desired type; later... */
+
+ st = waveOutOpen((LPHWAVEOUT) & h, WAVE_MAPPER,
+ (LPWAVEFORMATEX) & wfmt, (DWORD) 0L, 0L,
+ (DWORD) CALLBACK_NULL);
+ if (st != 0) {
+ waveout_error("waveOutOpen", st);
+ return NULL;
+ }
+
+ return h;
+}
+
+
+static void
+waveout_mem_cleanup(ad_play_t * p, int32 n_buf)
+{
+ int32 i;
+
+ for (i = 0; i < n_buf; i++)
+ waveout_free_buf(&(p->wo_buf[i]));
+ if (p->wo_buf)
+ free(p->wo_buf);
+ if (p->busy)
+ free(p->busy);
+}
+
+
+static int32
+waveout_close(ad_play_t * p)
+{
+ int32 st;
+
+ waveout_mem_cleanup(p, N_WO_BUF);
+
+ if ((st = waveOutClose(p->h_waveout)) != 0) {
+ waveout_error("waveOutClose", st);
+ return -1;
+ }
+
+ free(p);
+
+ return 0;
+}
+
+
+ad_play_t *
+ad_open_play_sps(int32 sps)
+{
+ ad_play_t *p;
+ int32 i;
+ HWAVEOUT h;
+
+ if ((h = waveout_open(sps, sizeof(int16))) == NULL)
+ return NULL;
+
+ if ((p = (ad_play_t *) calloc(1, sizeof(ad_play_t))) == NULL) {
+ fprintf(stderr, "calloc(1,%d) failed\n", sizeof(ad_play_t));
+ waveOutClose(h);
+ return NULL;
+ }
+ if ((p->wo_buf =
+ (ad_wbuf_t *) calloc(N_WO_BUF, sizeof(ad_wbuf_t))) == NULL) {
+ fprintf(stderr, "calloc(%d,%d) failed\n", N_WO_BUF,
+ sizeof(ad_wbuf_t));
+ free(p);
+ waveOutClose(h);
+
+ return NULL;
+ }
+ if ((p->busy = (char *) calloc(N_WO_BUF, sizeof(char))) == NULL) {
+ fprintf(stderr, "calloc(%d,%d) failed\n", N_WO_BUF, sizeof(char));
+ waveout_mem_cleanup(p, 0);
+ free(p);
+ waveOutClose(h);
+
+ return NULL;
+ }
+ for (i = 0; i < N_WO_BUF; i++) {
+ if (waveout_alloc_buf(&(p->wo_buf[i]), WO_BUFSIZE) < 0) {
+ waveout_mem_cleanup(p, i);
+ free(p);
+ waveOutClose(h);
+
+ return NULL;
+ }
+ }
+
+ p->h_waveout = h;
+ p->playing = 0;
+ p->opened = 1;
+ p->nxtbuf = 0;
+ p->sps = sps;
+ p->bps = sizeof(int16); /* HACK!! Hardwired value for bytes/sec */
+
+ return p;
+}
+
+
+ad_play_t *
+ad_open_play(void)
+{
+ return (ad_open_play_sps(DEFAULT_SAMPLES_PER_SEC));
+}
+
+
+int32
+ad_close_play(ad_play_t * p)
+{
+ if (!p->opened)
+ return 0;
+
+ if (p->playing)
+ if (ad_stop_play(p) < 0)
+ return -1;
+
+ if (waveout_close(p) < 0)
+ return -1;
+
+ return 0;
+}
+
+
+int32
+ad_start_play(ad_play_t * p)
+{
+ int32 i;
+
+ if ((!p->opened) || p->playing)
+ return -1;
+
+ for (i = 0; i < N_WO_BUF; i++)
+ p->busy[i] = 0;
+ p->nxtbuf = 0;
+ p->playing = 1;
+
+ return 0;
+}
+
+
+int32
+ad_stop_play(ad_play_t * p)
+{
+ int32 i, st;
+ LPWAVEHDR whdr;
+
+ if ((!p->opened) || (!p->playing))
+ return -1;
+
+#if 0
+ whdr->dwUser = (plen <= 0) ? 1 : 0;
+#endif
+
+ /* Wait for all buffers to be emptied and unprepare them */
+ for (i = 0; i < N_WO_BUF; i++) {
+ whdr = p->wo_buf[i].p_whdr;
+
+ while (p->busy[i] && (!(whdr->dwFlags & WHDR_DONE)))
+ Sleep(100);
+
+ st = waveOutUnprepareHeader(p->h_waveout, whdr, sizeof(WAVEHDR));
+ if (st != 0) {
+ waveout_error("waveOutUnprepareHeader", st);
+ return -1;
+ }
+
+ p->busy[i] = 0;
+ }
+
+ return 0;
+}
+
+
+int32
+ad_write(ad_play_t * p, int16 * buf, int32 size)
+{
+ int32 i, k, len, st;
+ LPWAVEHDR whdr;
+
+ if ((!p->opened) || (!p->playing))
+ return -1;
+
+ len = 0;
+
+ for (i = 0; (i < N_WO_BUF) && (size > 0); i++) {
+ whdr = p->wo_buf[p->nxtbuf].p_whdr;
+
+ if (p->busy[p->nxtbuf]) {
+ if (!(whdr->dwFlags & WHDR_DONE))
+ return len;
+
+ st = waveOutUnprepareHeader(p->h_waveout, whdr,
+ sizeof(WAVEHDR));
+ if (st != 0) {
+ waveout_error("waveOutUnprepareHeader", st);
+ return -1;
+ }
+
+ p->busy[p->nxtbuf] = 0;
+ }
+
+ k = (size > WO_BUFSIZE) ? WO_BUFSIZE : size;
+
+ whdr->dwBufferLength = k * sizeof(int16);
+ memcpy(whdr->lpData, (LPSTR) buf, k * sizeof(int16));
+
+ if (waveout_enqueue_buf(p->h_waveout, whdr) < 0)
+ return -1;
+
+ buf += k;
+ size -= k;
+ len += k;
+
+ p->busy[(p->nxtbuf)++] = 1;
+ if (p->nxtbuf >= N_WO_BUF)
+ p->nxtbuf = 0;
+ }
+
+ return len;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/*
+ * rec.c -- low level audio recording for Windows NT/95.
+ *
+ * HISTORY
+ *
+ * 19-Jan-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added AD_ return codes. Added ad_open_sps_bufsize(), and
+ * ad_rec_t.n_buf.
+ *
+ * 07-Mar-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_open_sps(), and made ad_open() call it.
+ *
+ * 10-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ad_rec_t type to all calls.
+ *
+ * 03-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+#include <windows.h>
+#include <mmsystem.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/ad.h"
+
+
+#define DEFAULT_N_WI_BUF 32 /* #Recording bufs */
+#define WI_BUFSIZE 2500 /* Samples/buf (Why this specific value??
+ So that at reasonable sampling rates
+ data is returned frequently enough.) */
+
+/* Silvio Moioli: using OutputDebugStringW instead of OutputDebugString */
+#ifdef _WIN32_WCE
+#include "ckd_alloc.h"
+static void
+wavein_error(char *src, int32 ret)
+{
+ TCHAR errbuf[512];
+ wchar_t* werrbuf;
+ size_t len;
+
+ waveOutGetErrorText(ret, errbuf, sizeof(errbuf));
+ len = mbstowcs(NULL, errbuf, 0) + 1;
+ werrbuf = ckd_calloc(len, sizeof(*werrbuf));
+ mbstowcs(werrbuf, errbuf, len);
+
+ OutputDebugStringW(werrbuf);
+}
+
+#else
+static void
+wavein_error(char *src, int32 ret)
+{
+ char errbuf[1024];
+
+ waveInGetErrorText(ret, errbuf, sizeof(errbuf));
+ fprintf(stderr, "%s error %d: %s\n", src, ret, errbuf);
+}
+#endif
+
+
+static void
+wavein_free_buf(ad_wbuf_t * b)
+{
+ GlobalUnlock(b->h_whdr);
+ GlobalFree(b->h_whdr);
+ GlobalUnlock(b->h_buf);
+ GlobalFree(b->h_buf);
+}
+
+
+static int32
+wavein_alloc_buf(ad_wbuf_t * b, int32 samples_per_buf)
+{
+ HGLOBAL h_buf; /* handle to data buffer */
+ LPSTR p_buf; /* pointer to data buffer */
+ HGLOBAL h_whdr; /* handle to header */
+ LPWAVEHDR p_whdr; /* pointer to header */
+
+ /* Allocate data buffer */
+ h_buf =
+ GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE,
+ samples_per_buf * sizeof(int16));
+ if (!h_buf) {
+ fprintf(stderr, "GlobalAlloc failed\n");
+ return -1;
+ }
+ if ((p_buf = GlobalLock(h_buf)) == NULL) {
+ GlobalFree(h_buf);
+ fprintf(stderr, "GlobalLock failed\n");
+ return -1;
+ }
+
+ /* Allocate WAVEHDR structure */
+ h_whdr = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, sizeof(WAVEHDR));
+ if (h_whdr == NULL) {
+ GlobalUnlock(h_buf);
+ GlobalFree(h_buf);
+
+ fprintf(stderr, "GlobalAlloc failed\n");
+ return -1;
+ }
+ if ((p_whdr = GlobalLock(h_whdr)) == NULL) {
+ GlobalUnlock(h_buf);
+ GlobalFree(h_buf);
+ GlobalFree(h_whdr);
+
+ fprintf(stderr, "GlobalLock failed\n");
+ return -1;
+ }
+
+ b->h_buf = h_buf;
+ b->p_buf = p_buf;
+ b->h_whdr = h_whdr;
+ b->p_whdr = p_whdr;
+
+ p_whdr->lpData = p_buf;
+ p_whdr->dwBufferLength = samples_per_buf * sizeof(int16);
+ p_whdr->dwUser = 0L;
+ p_whdr->dwFlags = 0L;
+ p_whdr->dwLoops = 0L;
+
+ return 0;
+}
+
+
+static int32
+wavein_enqueue_buf(HWAVEIN h, LPWAVEHDR whdr)
+{
+ int32 st;
+
+ if ((st = waveInPrepareHeader(h, whdr, sizeof(WAVEHDR))) != 0) {
+ wavein_error("waveInPrepareHeader", st);
+ return -1;
+ }
+ if ((st = waveInAddBuffer(h, whdr, sizeof(WAVEHDR))) != 0) {
+ wavein_error("waveInAddBuffer", st);
+ return -1;
+ }
+
+ return 0;
+}
+
+
+static HWAVEIN
+wavein_open(int32 samples_per_sec, int32 bytes_per_sample)
+{
+ WAVEFORMATEX wfmt;
+ int32 st;
+ HWAVEIN h;
+
+ if (bytes_per_sample != sizeof(int16)) {
+ fprintf(stderr, "bytes/sample != %d\n", sizeof(int16));
+ return NULL;
+ }
+
+ wfmt.wFormatTag = WAVE_FORMAT_PCM;
+ wfmt.nChannels = 1;
+ wfmt.nSamplesPerSec = samples_per_sec;
+ wfmt.nAvgBytesPerSec = samples_per_sec * bytes_per_sample;
+ wfmt.nBlockAlign = bytes_per_sample;
+ wfmt.wBitsPerSample = 8 * bytes_per_sample;
+
+ /* There should be a check here for a device of the desired type; later... */
+
+ st = waveInOpen((LPHWAVEIN) & h, WAVE_MAPPER,
+ (LPWAVEFORMATEX) & wfmt, (DWORD) 0L, 0L,
+ (DWORD) CALLBACK_NULL);
+ if (st != 0) {
+ wavein_error("waveInOpen", st);
+ return NULL;
+ }
+
+ return h;
+}
+
+
+static int32
+wavein_close(ad_rec_t * r)
+{
+ int32 i, st;
+
+ /* Unprepare all buffers; multiple unprepares of the same buffer are benign */
+ for (i = 0; i < r->n_buf; i++) {
+ /* Unpreparing an unprepared buffer, on the other hand, fails
+ on Win98/WinME, though this is not documented - dhuggins@cs,
+ 2004-07-14 */
+ if (!(r->wi_buf[i].p_whdr->dwFlags & WHDR_PREPARED))
+ continue;
+ st = waveInUnprepareHeader(r->h_wavein,
+ r->wi_buf[i].p_whdr, sizeof(WAVEHDR));
+ if (st != 0) {
+ wavein_error("waveInUnprepareHeader", st);
+ return -1;
+ }
+ }
+
+ /* Free buffers */
+ for (i = 0; i < r->n_buf; i++)
+ wavein_free_buf(&(r->wi_buf[i]));
+ free(r->wi_buf);
+
+ if ((st = waveInClose(r->h_wavein)) != 0) {
+ wavein_error("waveInClose", st);
+ return -1;
+ }
+
+ free(r);
+
+ return 0;
+}
+
+
+ad_rec_t *
+ad_open_sps_bufsize(int32 sps, int32 bufsize_msec)
+{
+ ad_rec_t *r;
+ int32 i, j;
+ HWAVEIN h;
+
+ if ((h = wavein_open(sps, sizeof(int16))) == NULL)
+ return NULL;
+
+ if ((r = (ad_rec_t *) malloc(sizeof(ad_rec_t))) == NULL) {
+ fprintf(stderr, "malloc(%d) failed\n", sizeof(ad_rec_t));
+ waveInClose(h);
+ return NULL;
+ }
+
+ r->n_buf = ((sps * bufsize_msec) / 1000) / WI_BUFSIZE;
+ if (r->n_buf < DEFAULT_N_WI_BUF)
+ r->n_buf = DEFAULT_N_WI_BUF;
+ printf("Allocating %d buffers of %d samples each\n", r->n_buf,
+ WI_BUFSIZE);
+
+ if ((r->wi_buf =
+ (ad_wbuf_t *) calloc(r->n_buf, sizeof(ad_wbuf_t))) == NULL) {
+ fprintf(stderr, "calloc(%d,%d) failed\n", r->n_buf,
+ sizeof(ad_wbuf_t));
+ free(r);
+ waveInClose(h);
+
+ return NULL;
+ }
+ for (i = 0; i < r->n_buf; i++) {
+ if (wavein_alloc_buf(&(r->wi_buf[i]), WI_BUFSIZE) < 0) {
+ for (j = 0; j < i; j++)
+ wavein_free_buf(&(r->wi_buf[j]));
+ free(r->wi_buf);
+ free(r);
+ waveInClose(h);
+
+ return NULL;
+ }
+ }
+
+ r->h_wavein = h;
+ r->opened = 1;
+ r->recording = 0;
+ r->curbuf = r->n_buf - 1; /* current buffer with data for application */
+ r->curlen = 0; /* #samples in curbuf remaining to be consumed */
+ r->lastbuf = r->curbuf;
+ r->sps = sps;
+ r->bps = sizeof(int16); /* HACK!! Hardwired value for bytes/sec */
+
+ return r;
+}
+
+/* FIXME: Dummy function, doesn't actually use dev. */
+ad_rec_t *
+ad_open_dev(const char *dev, int32 sps)
+{
+ return (ad_open_sps_bufsize
+ (sps, WI_BUFSIZE * DEFAULT_N_WI_BUF * 1000 / sps));
+}
+
+
+ad_rec_t *
+ad_open_sps(int32 sps)
+{
+ return (ad_open_sps_bufsize
+ (sps, WI_BUFSIZE * DEFAULT_N_WI_BUF * 1000 / sps));
+}
+
+
+ad_rec_t *
+ad_open(void)
+{
+ return (ad_open_sps(DEFAULT_SAMPLES_PER_SEC)); /* HACK!! Rename this constant */
+}
+
+
+int32
+ad_close(ad_rec_t * r)
+{
+ if (!r->opened)
+ return AD_ERR_NOT_OPEN;
+
+ if (r->recording)
+ if (ad_stop_rec(r) < 0)
+ return AD_ERR_WAVE;
+
+ if (wavein_close(r) < 0)
+ return AD_ERR_WAVE;
+
+ return 0;
+}
+
+
+int32
+ad_start_rec(ad_rec_t * r)
+{
+ int32 i;
+
+ if ((!r->opened) || r->recording)
+ return -1;
+
+ for (i = 0; i < r->n_buf; i++)
+ if (wavein_enqueue_buf(r->h_wavein, r->wi_buf[i].p_whdr) < 0)
+ return AD_ERR_WAVE;
+ r->curbuf = r->n_buf - 1; /* current buffer with data for application */
+ r->curlen = 0; /* #samples in curbuf remaining to be consumed */
+
+ if (waveInStart(r->h_wavein) != 0)
+ return AD_ERR_WAVE;
+
+ r->recording = 1;
+
+ return 0;
+}
+
+
+int32
+ad_stop_rec(ad_rec_t * r)
+{
+ int32 i, st;
+
+ if ((!r->opened) || (!r->recording))
+ return -1;
+
+ if (waveInStop(r->h_wavein) != 0)
+ return AD_ERR_WAVE;
+
+ if ((st = waveInReset(r->h_wavein)) != 0) {
+ wavein_error("waveInReset", st);
+ return AD_ERR_WAVE;
+ }
+
+ /* Wait until all buffers marked done */
+ for (i = 0; i < r->n_buf; i++)
+ while (!(r->wi_buf[i].p_whdr->dwFlags & WHDR_DONE));
+
+ if ((r->lastbuf = r->curbuf - 1) < 0)
+ r->lastbuf = r->n_buf - 1;
+
+ r->recording = 0;
+
+ return 0;
+}
+
+
+int32
+ad_read(ad_rec_t * r, int16 * buf, int32 max)
+{
+ int32 t, st, len;
+ LPWAVEHDR whdr;
+ int16 *sysbufp;
+
+ if (!r->opened)
+ return AD_ERR_NOT_OPEN;
+
+ /* Check if all recorded data exhausted */
+ if ((!r->recording) && (r->curbuf == r->lastbuf)
+ && (r->curlen == 0))
+ return AD_EOF;
+
+ len = 0;
+ while (max > 0) {
+ /* Look for next buffer with recording data */
+ if (r->curlen == 0) {
+ /* No current buffer with data; get next buffer in sequence if available */
+ t = r->curbuf + 1;
+ if (t >= r->n_buf)
+ t = 0;
+
+ if (!(r->wi_buf[t].p_whdr->dwFlags & WHDR_DONE))
+ return len;
+
+ r->curbuf = t;
+ r->curlen = r->wi_buf[t].p_whdr->dwBytesRecorded >> 1;
+ r->curoff = 0;
+ }
+
+ /* Copy data from curbuf to buf */
+ whdr = r->wi_buf[r->curbuf].p_whdr;
+ t = (max < r->curlen) ? max : r->curlen; /* #Samples to copy */
+
+ if (t > 0) {
+ sysbufp = (int16 *) (whdr->lpData);
+ memcpy(buf, sysbufp + r->curoff, t * sizeof(int16));
+
+ buf += t;
+ max -= t;
+ r->curoff += t;
+ r->curlen -= t;
+ len += t;
+ }
+
+ /* If curbuf empty recycle it to system if still recording */
+ if (r->curlen == 0) {
+ if (r->recording) {
+ /* Return empty buffer to system */
+ st = waveInUnprepareHeader(r->h_wavein,
+ whdr, sizeof(WAVEHDR));
+ if (st != 0) {
+ wavein_error("waveInUnprepareHeader", st);
+ return AD_ERR_WAVE;
+ }
+
+ if (wavein_enqueue_buf(r->h_wavein, whdr) < 0)
+ return AD_ERR_WAVE;
+
+ }
+ else if (r->curbuf == r->lastbuf) {
+ return len;
+ }
+ }
+ }
+
+ return len;
+}
--- /dev/null
+SUBDIRS = util fe feat lm
+
+lib_LTLIBRARIES = libsphinxbase.la
+
+libsphinxbase_la_SOURCES =
+# Confusing libtool version info means:
+#
+# This is API version 2, software release 1, which also supports API version 1
+libsphinxbase_la_LDFLAGS = -version-info 2:1:1
+libsphinxbase_la_LIBADD = $(LTLIBICONV) \
+ util/libsphinxutil.la \
+ fe/libsphinxfe.la \
+ feat/libsphinxfeat.la \
+ lm/libsphinxlm.la
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libsphinxbase
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libsphinxbase_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ util/libsphinxutil.la fe/libsphinxfe.la feat/libsphinxfeat.la \
+ lm/libsphinxlm.la
+am_libsphinxbase_la_OBJECTS =
+libsphinxbase_la_OBJECTS = $(am_libsphinxbase_la_OBJECTS)
+libsphinxbase_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libsphinxbase_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libsphinxbase_la_SOURCES)
+DIST_SOURCES = $(libsphinxbase_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = util fe feat lm
+lib_LTLIBRARIES = libsphinxbase.la
+libsphinxbase_la_SOURCES =
+# Confusing libtool version info means:
+#
+# This is API version 2, software release 1, which also supports API version 1
+libsphinxbase_la_LDFLAGS = -version-info 2:1:1
+libsphinxbase_la_LIBADD = $(LTLIBICONV) \
+ util/libsphinxutil.la \
+ fe/libsphinxfe.la \
+ feat/libsphinxfeat.la \
+ lm/libsphinxlm.la
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libsphinxbase/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/libsphinxbase/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsphinxbase.la: $(libsphinxbase_la_OBJECTS) $(libsphinxbase_la_DEPENDENCIES)
+ $(libsphinxbase_la_LINK) -rpath $(libdir) $(libsphinxbase_la_OBJECTS) $(libsphinxbase_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(libdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-libLTLIBRARIES install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-libLTLIBRARIES
+
+# 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:
--- /dev/null
+noinst_LTLIBRARIES = libsphinxfe.la
+
+libsphinxfe_la_SOURCES = \
+ fe_interface.c \
+ fe_sigproc.c \
+ fe_warp_affine.c \
+ fe_warp.c \
+ fe_warp_inverse_linear.c \
+ fe_warp_piecewise_linear.c \
+ fixlog.c \
+ yin.c
+
+noinst_HEADERS = \
+ fe_internal.h \
+ fe_warp_affine.h \
+ fe_warp.h \
+ fe_warp_inverse_linear.h \
+ fe_warp_piecewise_linear.h
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LIBOBJS = @LIBOBJS@
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libsphinxbase/fe
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libsphinxfe_la_LIBADD =
+am_libsphinxfe_la_OBJECTS = fe_interface.lo fe_sigproc.lo \
+ fe_warp_affine.lo fe_warp.lo fe_warp_inverse_linear.lo \
+ fe_warp_piecewise_linear.lo fixlog.lo yin.lo
+libsphinxfe_la_OBJECTS = $(am_libsphinxfe_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libsphinxfe_la_SOURCES)
+DIST_SOURCES = $(libsphinxfe_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LTLIBRARIES = libsphinxfe.la
+libsphinxfe_la_SOURCES = \
+ fe_interface.c \
+ fe_sigproc.c \
+ fe_warp_affine.c \
+ fe_warp.c \
+ fe_warp_inverse_linear.c \
+ fe_warp_piecewise_linear.c \
+ fixlog.c \
+ yin.c
+
+noinst_HEADERS = \
+ fe_internal.h \
+ fe_warp_affine.h \
+ fe_warp.h \
+ fe_warp_inverse_linear.h \
+ fe_warp_piecewise_linear.h
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libsphinxbase/fe/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/libsphinxbase/fe/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsphinxfe.la: $(libsphinxfe_la_OBJECTS) $(libsphinxfe_la_DEPENDENCIES)
+ $(LINK) $(libsphinxfe_la_OBJECTS) $(libsphinxfe_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe_interface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe_sigproc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe_warp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe_warp_affine.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe_warp_inverse_linear.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe_warp_piecewise_linear.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fixlog.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yin.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1996-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <stdlib.h>
+#include <assert.h>
+#ifdef _WIN32_WCE
+#include <windows.h>
+#else
+#include <time.h>
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/byteorder.h"
+#include "sphinxbase/fixpoint.h"
+#include "sphinxbase/genrand.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/cmd_ln.h"
+#include "sphinxbase/ckd_alloc.h"
+
+#include "fe_internal.h"
+#include "fe_warp.h"
+
+static const arg_t fe_args[] = {
+ waveform_to_cepstral_command_line_macro(),
+ { NULL, 0, NULL, NULL }
+};
+
+int
+fe_parse_general_params(cmd_ln_t *config, fe_t * fe)
+{
+ int j;
+
+ fe->config = config;
+ fe->sampling_rate = cmd_ln_float32_r(config, "-samprate");
+ fe->frame_rate = (int16)cmd_ln_int32_r(config, "-frate");
+ if (cmd_ln_boolean_r(config, "-dither")) {
+ fe->dither = 1;
+ fe->seed = cmd_ln_int32_r(config, "-seed");
+ }
+#ifdef WORDS_BIGENDIAN
+ fe->swap = strcmp("big", cmd_ln_str_r(config, "-input_endian")) == 0 ? 0 : 1;
+#else
+ fe->swap = strcmp("little", cmd_ln_str_r(config, "-input_endian")) == 0 ? 0 : 1;
+#endif
+ fe->window_length = cmd_ln_float32_r(config, "-wlen");
+ fe->pre_emphasis_alpha = cmd_ln_float32_r(config, "-alpha");
+
+ fe->num_cepstra = (uint8)cmd_ln_int32_r(config, "-ncep");
+ fe->fft_size = (int16)cmd_ln_int32_r(config, "-nfft");
+
+ /* Check FFT size, compute FFT order (log_2(n)) */
+ for (j = fe->fft_size, fe->fft_order = 0; j > 1; j >>= 1, fe->fft_order++) {
+ if (((j % 2) != 0) || (fe->fft_size <= 0)) {
+ E_ERROR("fft: number of points must be a power of 2 (is %d)\n",
+ fe->fft_size);
+ return -1;
+ }
+ }
+ /* Verify that FFT size is greater or equal to window length. */
+ if (fe->fft_size < (int)(fe->window_length * fe->sampling_rate)) {
+ E_ERROR("FFT: Number of points must be greater or equal to frame size (%d samples)\n",
+ (int)(fe->window_length * fe->sampling_rate));
+ return -1;
+ }
+
+ fe->remove_dc = cmd_ln_boolean_r(config, "-remove_dc");
+
+ if (0 == strcmp(cmd_ln_str_r(config, "-transform"), "dct"))
+ fe->transform = DCT_II;
+ else if (0 == strcmp(cmd_ln_str_r(config, "-transform"), "legacy"))
+ fe->transform = LEGACY_DCT;
+ else if (0 == strcmp(cmd_ln_str_r(config, "-transform"), "htk"))
+ fe->transform = DCT_HTK;
+ else {
+ E_ERROR("Invalid transform type (values are 'dct', 'legacy', 'htk')\n");
+ return -1;
+ }
+
+ if (cmd_ln_boolean_r(config, "-logspec"))
+ fe->log_spec = RAW_LOG_SPEC;
+ if (cmd_ln_boolean_r(config, "-smoothspec"))
+ fe->log_spec = SMOOTH_LOG_SPEC;
+
+ return 0;
+}
+
+static int
+fe_parse_melfb_params(cmd_ln_t *config, fe_t *fe, melfb_t * mel)
+{
+ mel->sampling_rate = fe->sampling_rate;
+ mel->fft_size = fe->fft_size;
+ mel->num_cepstra = fe->num_cepstra;
+ mel->num_filters = cmd_ln_int32_r(config, "-nfilt");
+
+ if (fe->log_spec)
+ fe->feature_dimension = mel->num_filters;
+ else
+ fe->feature_dimension = fe->num_cepstra;
+
+ mel->upper_filt_freq = cmd_ln_float32_r(config, "-upperf");
+ mel->lower_filt_freq = cmd_ln_float32_r(config, "-lowerf");
+
+ mel->doublewide = cmd_ln_boolean_r(config, "-doublebw");
+
+ mel->warp_type = cmd_ln_str_r(config, "-warp_type");
+ mel->warp_params = cmd_ln_str_r(config, "-warp_params");
+ mel->lifter_val = cmd_ln_int32_r(config, "-lifter");
+
+ mel->unit_area = cmd_ln_boolean_r(config, "-unit_area");
+ mel->round_filters = cmd_ln_boolean_r(config, "-round_filters");
+
+ if (fe_warp_set(mel, mel->warp_type) != FE_SUCCESS) {
+ E_ERROR("Failed to initialize the warping function.\n");
+ return -1;
+ }
+ fe_warp_set_parameters(mel, mel->warp_params, mel->sampling_rate);
+ return 0;
+}
+
+void
+fe_print_current(fe_t const *fe)
+{
+ E_INFO("Current FE Parameters:\n");
+ E_INFO("\tSampling Rate: %f\n", fe->sampling_rate);
+ E_INFO("\tFrame Size: %d\n", fe->frame_size);
+ E_INFO("\tFrame Shift: %d\n", fe->frame_shift);
+ E_INFO("\tFFT Size: %d\n", fe->fft_size);
+ E_INFO("\tLower Frequency: %g\n",
+ fe->mel_fb->lower_filt_freq);
+ E_INFO("\tUpper Frequency: %g\n",
+ fe->mel_fb->upper_filt_freq);
+ E_INFO("\tNumber of filters: %d\n", fe->mel_fb->num_filters);
+ E_INFO("\tNumber of Overflow Samps: %d\n", fe->num_overflow_samps);
+ E_INFO("\tStart Utt Status: %d\n", fe->start_flag);
+ E_INFO("Will %sremove DC offset at frame level\n",
+ fe->remove_dc ? "" : "not ");
+ if (fe->dither) {
+ E_INFO("Will add dither to audio\n");
+ E_INFO("Dither seeded with %d\n", fe->seed);
+ }
+ else {
+ E_INFO("Will not add dither to audio\n");
+ }
+ if (fe->mel_fb->lifter_val) {
+ E_INFO("Will apply sine-curve liftering, period %d\n",
+ fe->mel_fb->lifter_val);
+ }
+ E_INFO("Will %snormalize filters to unit area\n",
+ fe->mel_fb->unit_area ? "" : "not ");
+ E_INFO("Will %sround filter frequencies to DFT points\n",
+ fe->mel_fb->round_filters ? "" : "not ");
+ E_INFO("Will %suse double bandwidth in mel filter\n",
+ fe->mel_fb->doublewide ? "" : "not ");
+}
+
+fe_t *
+fe_init_auto()
+{
+ return fe_init_auto_r(cmd_ln_retain(cmd_ln_get()));
+}
+
+fe_t *
+fe_init_auto_r(cmd_ln_t *config)
+{
+ fe_t *fe;
+
+ fe = ckd_calloc(1, sizeof(*fe));
+ fe->refcount = 1;
+
+ /* transfer params to front end */
+ if (fe_parse_general_params(config, fe) < 0) {
+ fe_free(fe);
+ return NULL;
+ }
+
+ /* compute remaining fe parameters */
+ /* We add 0.5 so approximate the float with the closest
+ * integer. E.g., 2.3 is truncate to 2, whereas 3.7 becomes 4
+ */
+ fe->frame_shift = (int32) (fe->sampling_rate / fe->frame_rate + 0.5);
+ fe->frame_size = (int32) (fe->window_length * fe->sampling_rate + 0.5);
+ fe->prior = 0;
+ fe->frame_counter = 0;
+
+ if (fe->frame_size > (fe->fft_size)) {
+ E_WARN
+ ("Number of FFT points has to be a power of 2 higher than %d\n",
+ (fe->frame_size));
+ fe_free(fe);
+ return (NULL);
+ }
+
+ if (fe->dither)
+ fe_init_dither(fe->seed);
+
+ /* establish buffers for overflow samps and hamming window */
+ fe->overflow_samps = ckd_calloc(fe->frame_size, sizeof(int16));
+ fe->hamming_window = ckd_calloc(fe->frame_size/2, sizeof(window_t));
+
+ /* create hamming window */
+ fe_create_hamming(fe->hamming_window, fe->frame_size);
+
+ /* init and fill appropriate filter structure */
+ fe->mel_fb = ckd_calloc(1, sizeof(*fe->mel_fb));
+
+ /* transfer params to mel fb */
+ fe_parse_melfb_params(config, fe, fe->mel_fb);
+ fe_build_melfilters(fe->mel_fb);
+ fe_compute_melcosine(fe->mel_fb);
+
+ /* Create temporary FFT, spectrum and mel-spectrum buffers. */
+ /* FIXME: Gosh there are a lot of these. */
+ fe->spch = ckd_calloc(fe->frame_size, sizeof(*fe->spch));
+ fe->frame = ckd_calloc(fe->fft_size, sizeof(*fe->frame));
+ fe->spec = ckd_calloc(fe->fft_size, sizeof(*fe->spec));
+ fe->mfspec = ckd_calloc(fe->mel_fb->num_filters, sizeof(*fe->mfspec));
+
+ /* create twiddle factors */
+ fe->ccc = ckd_calloc(fe->fft_size / 4, sizeof(*fe->ccc));
+ fe->sss = ckd_calloc(fe->fft_size / 4, sizeof(*fe->sss));
+ fe_create_twiddle(fe);
+
+ if (cmd_ln_boolean_r(config, "-verbose")) {
+ fe_print_current(fe);
+ }
+
+ /*** Z.A.B. ***/
+ /*** Initialize the overflow buffers ***/
+ fe_start_utt(fe);
+ return fe;
+}
+
+arg_t const *
+fe_get_args(void)
+{
+ return fe_args;
+}
+
+cmd_ln_t *
+fe_get_config(fe_t *fe)
+{
+ return fe->config;
+}
+
+void
+fe_init_dither(int32 seed)
+{
+ if (seed < 0) {
+ E_INFO("You are using the internal mechanism to generate the seed.\n");
+#ifdef _WIN32_WCE
+ s3_rand_seed(GetTickCount());
+#else
+ s3_rand_seed((long) time(0));
+#endif
+ }
+ else {
+ E_INFO("You are using %d as the seed.\n", seed);
+ s3_rand_seed(seed);
+ }
+}
+
+int32
+fe_start_utt(fe_t * fe)
+{
+ fe->num_overflow_samps = 0;
+ memset(fe->overflow_samps, 0, fe->frame_size * sizeof(int16));
+ fe->start_flag = 1;
+ fe->prior = 0;
+ return 0;
+}
+
+int
+fe_get_output_size(fe_t *fe)
+{
+ return (int)fe->feature_dimension;
+}
+
+void
+fe_get_input_size(fe_t *fe, int *out_frame_shift,
+ int *out_frame_size)
+{
+ if (out_frame_shift)
+ *out_frame_shift = fe->frame_shift;
+ if (out_frame_size)
+ *out_frame_size = fe->frame_size;
+}
+
+int32
+fe_process_frame(fe_t * fe, int16 const *spch, int32 nsamps, mfcc_t * fr_cep)
+{
+ fe_read_frame(fe, spch, nsamps);
+ return fe_write_frame(fe, fr_cep);
+}
+
+int
+fe_process_frames(fe_t *fe,
+ int16 const **inout_spch,
+ size_t *inout_nsamps,
+ mfcc_t **buf_cep,
+ int32 *inout_nframes)
+{
+ int32 frame_count;
+ int outidx, i, n, n_overflow, orig_n_overflow;
+ int16 const *orig_spch;
+
+ /* In the special case where there is no output buffer, return the
+ * maximum number of frames which would be generated. */
+ if (buf_cep == NULL) {
+ if (*inout_nsamps + fe->num_overflow_samps < (size_t)fe->frame_size)
+ *inout_nframes = 0;
+ else
+ *inout_nframes = 1
+ + ((*inout_nsamps + fe->num_overflow_samps - fe->frame_size)
+ / fe->frame_shift);
+ return *inout_nframes;
+ }
+
+ /* Are there not enough samples to make at least 1 frame? */
+ if (*inout_nsamps + fe->num_overflow_samps < (size_t)fe->frame_size) {
+ if (*inout_nsamps > 0) {
+ /* Append them to the overflow buffer. */
+ memcpy(fe->overflow_samps + fe->num_overflow_samps,
+ *inout_spch, *inout_nsamps * (sizeof(int16)));
+ fe->num_overflow_samps += *inout_nsamps;
+ /* Update input-output pointers and counters. */
+ *inout_spch += *inout_nsamps;
+ *inout_nsamps = 0;
+ }
+ /* We produced no frames of output, sorry! */
+ *inout_nframes = 0;
+ return 0;
+ }
+
+ /* Can't write a frame? Then do nothing! */
+ if (*inout_nframes < 1) {
+ *inout_nframes = 0;
+ return 0;
+ }
+
+ /* Keep track of the original start of the buffer. */
+ orig_spch = *inout_spch;
+ orig_n_overflow = fe->num_overflow_samps;
+ /* How many frames will we be able to get? */
+ frame_count = 1
+ + ((*inout_nsamps + fe->num_overflow_samps - fe->frame_size)
+ / fe->frame_shift);
+ /* Limit it to the number of output frames available. */
+ if (frame_count > *inout_nframes)
+ frame_count = *inout_nframes;
+ /* Index of output frame. */
+ outidx = 0;
+
+ /* Start processing, taking care of any incoming overflow. */
+ if (fe->num_overflow_samps) {
+ int offset = fe->frame_size - fe->num_overflow_samps;
+
+ /* Append start of spch to overflow samples to make a full frame. */
+ memcpy(fe->overflow_samps + fe->num_overflow_samps,
+ *inout_spch, offset * sizeof(**inout_spch));
+ fe_read_frame(fe, fe->overflow_samps, fe->frame_size);
+ assert(outidx < frame_count);
+ if ((n = fe_write_frame(fe, buf_cep[outidx])) < 0)
+ return -1;
+ outidx += n;
+ /* Update input-output pointers and counters. */
+ *inout_spch += offset;
+ *inout_nsamps -= offset;
+ fe->num_overflow_samps -= fe->frame_shift;
+ }
+ else {
+ fe_read_frame(fe, *inout_spch, fe->frame_size);
+ assert(outidx < frame_count);
+ if ((n = fe_write_frame(fe, buf_cep[outidx])) < 0)
+ return -1;
+ outidx += n;
+ /* Update input-output pointers and counters. */
+ *inout_spch += fe->frame_size;
+ *inout_nsamps -= fe->frame_size;
+ }
+
+ /* Process all remaining frames. */
+ for (i = 1; i < frame_count; ++i) {
+ assert(*inout_nsamps >= (size_t)fe->frame_shift);
+
+ fe_shift_frame(fe, *inout_spch, fe->frame_shift);
+ assert(outidx < frame_count);
+ if ((n = fe_write_frame(fe, buf_cep[outidx])) < 0)
+ return -1;
+ outidx += n;
+ /* Update input-output pointers and counters. */
+ *inout_spch += fe->frame_shift;
+ *inout_nsamps -= fe->frame_shift;
+ /* Amount of data behind the original input which is still needed. */
+ if (fe->num_overflow_samps > 0)
+ fe->num_overflow_samps -= fe->frame_shift;
+ }
+
+ /* How many relevant overflow samples are there left? */
+ if (fe->num_overflow_samps <= 0) {
+ /* Maximum number of overflow samples past *inout_spch to save. */
+ n_overflow = *inout_nsamps;
+ if (n_overflow > fe->frame_shift)
+ n_overflow = fe->frame_shift;
+ fe->num_overflow_samps = fe->frame_size - fe->frame_shift;
+ /* Make sure this isn't an illegal read! */
+ if (fe->num_overflow_samps > *inout_spch - orig_spch)
+ fe->num_overflow_samps = *inout_spch - orig_spch;
+ fe->num_overflow_samps += n_overflow;
+ if (fe->num_overflow_samps > 0) {
+ memcpy(fe->overflow_samps,
+ *inout_spch - (fe->frame_size - fe->frame_shift),
+ fe->num_overflow_samps * sizeof(**inout_spch));
+ /* Update the input pointer to cover this stuff. */
+ *inout_spch += n_overflow;
+ *inout_nsamps -= n_overflow;
+ }
+ }
+ else {
+ /* There is still some relevant data left in the overflow buffer. */
+ /* Shift existing data to the beginning. */
+ memmove(fe->overflow_samps,
+ fe->overflow_samps + orig_n_overflow - fe->num_overflow_samps,
+ fe->num_overflow_samps * sizeof(*fe->overflow_samps));
+ /* Copy in whatever we had in the original speech buffer. */
+ n_overflow = *inout_spch - orig_spch + *inout_nsamps;
+ if (n_overflow > fe->frame_size - fe->num_overflow_samps)
+ n_overflow = fe->frame_size - fe->num_overflow_samps;
+ memcpy(fe->overflow_samps + fe->num_overflow_samps,
+ orig_spch, n_overflow * sizeof(*orig_spch));
+ fe->num_overflow_samps += n_overflow;
+ /* Advance the input pointers. */
+ if (n_overflow > *inout_spch - orig_spch) {
+ n_overflow -= (*inout_spch - orig_spch);
+ *inout_spch += n_overflow;
+ *inout_nsamps -= n_overflow;
+ }
+ }
+
+ /* Finally update the frame counter with the number of frames we procesed. */
+ *inout_nframes = outidx; /* FIXME: Not sure why I wrote it this way... */
+ return 0;
+}
+
+int
+fe_process_utt(fe_t * fe, int16 const * spch, size_t nsamps,
+ mfcc_t *** cep_block, int32 * nframes)
+{
+ mfcc_t **cep;
+ int rv;
+
+ /* Figure out how many frames we will need. */
+ fe_process_frames(fe, NULL, &nsamps, NULL, nframes);
+ /* Create the output buffer (it has to exist, even if there are no output frames). */
+ if (*nframes)
+ cep = (mfcc_t **)ckd_calloc_2d(*nframes, fe->feature_dimension, sizeof(**cep));
+ else
+ cep = (mfcc_t **)ckd_calloc_2d(1, fe->feature_dimension, sizeof(**cep));
+ /* Now just call fe_process_frames() with the allocated buffer. */
+ rv = fe_process_frames(fe, &spch, &nsamps, cep, nframes);
+ *cep_block = cep;
+
+ return rv;
+}
+
+
+int32
+fe_end_utt(fe_t * fe, mfcc_t * cepvector, int32 * nframes)
+{
+ /* Process any remaining data. */
+ if (fe->num_overflow_samps > 0) {
+ fe_read_frame(fe, fe->overflow_samps, fe->num_overflow_samps);
+ *nframes = fe_write_frame(fe, cepvector);
+ }
+ else {
+ *nframes = 0;
+ }
+
+ /* reset overflow buffers... */
+ fe->num_overflow_samps = 0;
+ fe->start_flag = 0;
+
+ return 0;
+}
+
+fe_t *
+fe_retain(fe_t *fe)
+{
+ ++fe->refcount;
+ return fe;
+}
+
+int
+fe_free(fe_t * fe)
+{
+ if (fe == NULL)
+ return 0;
+ if (--fe->refcount > 0)
+ return fe->refcount;
+
+ /* kill FE instance - free everything... */
+ if (fe->mel_fb) {
+ if (fe->mel_fb->mel_cosine)
+ fe_free_2d((void *) fe->mel_fb->mel_cosine);
+ ckd_free(fe->mel_fb->lifter);
+ ckd_free(fe->mel_fb->spec_start);
+ ckd_free(fe->mel_fb->filt_start);
+ ckd_free(fe->mel_fb->filt_width);
+ ckd_free(fe->mel_fb->filt_coeffs);
+ ckd_free(fe->mel_fb);
+ }
+ ckd_free(fe->spch);
+ ckd_free(fe->frame);
+ ckd_free(fe->ccc);
+ ckd_free(fe->sss);
+ ckd_free(fe->spec);
+ ckd_free(fe->mfspec);
+ ckd_free(fe->overflow_samps);
+ ckd_free(fe->hamming_window);
+ cmd_ln_free_r(fe->config);
+ ckd_free(fe);
+
+ return 0;
+}
+
+/**
+ * Convert a block of mfcc_t to float32 (can be done in-place)
+ **/
+int32
+fe_mfcc_to_float(fe_t * fe,
+ mfcc_t ** input, float32 ** output, int32 nframes)
+{
+ int32 i;
+
+#ifndef FIXED_POINT
+ if ((void *) input == (void *) output)
+ return nframes * fe->feature_dimension;
+#endif
+ for (i = 0; i < nframes * fe->feature_dimension; ++i)
+ output[0][i] = MFCC2FLOAT(input[0][i]);
+
+ return i;
+}
+
+/**
+ * Convert a block of float32 to mfcc_t (can be done in-place)
+ **/
+int32
+fe_float_to_mfcc(fe_t * fe,
+ float32 ** input, mfcc_t ** output, int32 nframes)
+{
+ int32 i;
+
+#ifndef FIXED_POINT
+ if ((void *) input == (void *) output)
+ return nframes * fe->feature_dimension;
+#endif
+ for (i = 0; i < nframes * fe->feature_dimension; ++i)
+ output[0][i] = FLOAT2MFCC(input[0][i]);
+
+ return i;
+}
+
+int32
+fe_logspec_to_mfcc(fe_t * fe, const mfcc_t * fr_spec, mfcc_t * fr_cep)
+{
+#ifdef FIXED_POINT
+ fe_spec2cep(fe, fr_spec, fr_cep);
+#else /* ! FIXED_POINT */
+ powspec_t *powspec;
+ int32 i;
+
+ powspec = ckd_malloc(fe->mel_fb->num_filters * sizeof(powspec_t));
+ for (i = 0; i < fe->mel_fb->num_filters; ++i)
+ powspec[i] = (powspec_t) fr_spec[i];
+ fe_spec2cep(fe, powspec, fr_cep);
+ ckd_free(powspec);
+#endif /* ! FIXED_POINT */
+ return 0;
+}
+
+int32
+fe_logspec_dct2(fe_t * fe, const mfcc_t * fr_spec, mfcc_t * fr_cep)
+{
+#ifdef FIXED_POINT
+ fe_dct2(fe, fr_spec, fr_cep, 0);
+#else /* ! FIXED_POINT */
+ powspec_t *powspec;
+ int32 i;
+
+ powspec = ckd_malloc(fe->mel_fb->num_filters * sizeof(powspec_t));
+ for (i = 0; i < fe->mel_fb->num_filters; ++i)
+ powspec[i] = (powspec_t) fr_spec[i];
+ fe_dct2(fe, powspec, fr_cep, 0);
+ ckd_free(powspec);
+#endif /* ! FIXED_POINT */
+ return 0;
+}
+
+int32
+fe_mfcc_dct3(fe_t * fe, const mfcc_t * fr_cep, mfcc_t * fr_spec)
+{
+#ifdef FIXED_POINT
+ fe_dct3(fe, fr_cep, fr_spec);
+#else /* ! FIXED_POINT */
+ powspec_t *powspec;
+ int32 i;
+
+ powspec = ckd_malloc(fe->mel_fb->num_filters * sizeof(powspec_t));
+ fe_dct3(fe, fr_cep, powspec);
+ for (i = 0; i < fe->mel_fb->num_filters; ++i)
+ fr_spec[i] = (mfcc_t) powspec[i];
+ ckd_free(powspec);
+#endif /* ! FIXED_POINT */
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1996-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef __FE_INTERNAL_H__
+#define __FE_INTERNAL_H__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "sphinxbase/fe.h"
+#include "sphinxbase/fixpoint.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#ifdef FIXED16
+/* Q15 format */
+typedef int16 frame_t;
+typedef int16 window_t;
+typedef int32 powspec_t;
+typedef struct { int16 r, i; } complex;
+#elif defined(FIXED_POINT)
+typedef fixed32 frame_t;
+typedef int32 powspec_t;
+typedef fixed32 window_t;
+typedef struct { fixed32 r, i; } complex;
+#else /* FIXED_POINT */
+typedef float64 frame_t;
+typedef float64 powspec_t;
+typedef float64 window_t;
+typedef struct { float64 r, i; } complex;
+#endif /* FIXED_POINT */
+
+/* Values for the 'logspec' field. */
+enum {
+ RAW_LOG_SPEC = 1,
+ SMOOTH_LOG_SPEC = 2
+};
+
+/* Values for the 'transform' field. */
+enum {
+ LEGACY_DCT = 0,
+ DCT_II = 1,
+ DCT_HTK = 2
+};
+
+typedef struct melfb_s melfb_t;
+/** Base Struct to hold all structure for MFCC computation. */
+struct melfb_s {
+ float32 sampling_rate;
+ int32 num_cepstra;
+ int32 num_filters;
+ int32 fft_size;
+ float32 lower_filt_freq;
+ float32 upper_filt_freq;
+ /* DCT coefficients. */
+ mfcc_t **mel_cosine;
+ /* Filter coefficients. */
+ mfcc_t *filt_coeffs;
+ int16 *spec_start;
+ int16 *filt_start;
+ int16 *filt_width;
+ /* Luxury mobile home. */
+ int32 doublewide;
+ char const *warp_type;
+ char const *warp_params;
+ uint32 warp_id;
+ /* Precomputed normalization constants for unitary DCT-II/DCT-III */
+ mfcc_t sqrt_inv_n, sqrt_inv_2n;
+ /* Value and coefficients for HTK-style liftering */
+ int32 lifter_val;
+ mfcc_t *lifter;
+ /* Normalize filters to unit area */
+ int32 unit_area;
+ /* Round filter frequencies to DFT points (hurts accuracy, but is
+ useful for legacy purposes) */
+ int32 round_filters;
+};
+
+/* sqrt(1/2), also used for unitary DCT-II/DCT-III */
+#define SQRT_HALF FLOAT2MFCC(0.707106781186548)
+
+/** Structure for the front-end computation. */
+struct fe_s {
+ cmd_ln_t *config;
+ int refcount;
+
+ float32 sampling_rate;
+ int16 frame_rate;
+ int16 frame_shift;
+
+ float32 window_length;
+ int16 frame_size;
+ int16 fft_size;
+
+ uint8 fft_order;
+ uint8 feature_dimension;
+ uint8 num_cepstra;
+ uint8 remove_dc;
+ uint8 log_spec;
+ uint8 swap;
+ uint8 dither;
+ uint8 transform;
+
+ float32 pre_emphasis_alpha;
+ int32 seed;
+
+ int16 frame_counter;
+ uint8 start_flag;
+ uint8 reserved;
+
+ /* Twiddle factors for FFT. */
+ frame_t *ccc, *sss;
+ /* Mel filter parameters. */
+ melfb_t *mel_fb;
+ /* Half of a Hamming Window. */
+ window_t *hamming_window;
+
+ /* Temporary buffers for processing. */
+ /* FIXME: too many of these. */
+ int16 *spch;
+ frame_t *frame;
+ powspec_t *spec, *mfspec;
+ int16 *overflow_samps;
+ int16 num_overflow_samps;
+ int16 prior;
+};
+
+#define BB_SAMPLING_RATE 16000
+#define DEFAULT_BB_FFT_SIZE 512
+#define DEFAULT_BB_FRAME_SHIFT 160
+#define DEFAULT_BB_NUM_FILTERS 40
+#define DEFAULT_BB_LOWER_FILT_FREQ 133.33334
+#define DEFAULT_BB_UPPER_FILT_FREQ 6855.4976
+
+#define NB_SAMPLING_RATE 8000
+#define DEFAULT_NB_FFT_SIZE 256
+#define DEFAULT_NB_FRAME_SHIFT 80
+#define DEFAULT_NB_NUM_FILTERS 31
+#define DEFAULT_NB_LOWER_FILT_FREQ 200
+#define DEFAULT_NB_UPPER_FILT_FREQ 3500
+
+void fe_init_dither(int32 seed);
+
+/* Apply 1/2 bit noise to a buffer of audio. */
+int32 fe_dither(int16 *buffer, int32 nsamps);
+
+/* Load a frame of data into the fe. */
+int fe_read_frame(fe_t *fe, int16 const *in, int32 len);
+
+/* Shift the input buffer back and read more data. */
+int fe_shift_frame(fe_t *fe, int16 const *in, int32 len);
+
+/* Process a frame of data into features. */
+int32 fe_write_frame(fe_t *fe, mfcc_t *fea);
+
+/* Initialization functions. */
+int32 fe_build_melfilters(melfb_t *MEL_FB);
+int32 fe_compute_melcosine(melfb_t *MEL_FB);
+void fe_create_hamming(window_t *in, int32 in_len);
+void fe_create_twiddle(fe_t *fe);
+
+/* Miscellaneous processing functions. */
+void fe_spec2cep(fe_t * fe, const powspec_t * mflogspec, mfcc_t * mfcep);
+void fe_dct2(fe_t *fe, const powspec_t *mflogspec, mfcc_t *mfcep, int htk);
+void fe_dct3(fe_t *fe, const mfcc_t *mfcep, powspec_t *mflogspec);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __FE_INTERNAL_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1996-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4244)
+#endif
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/byteorder.h"
+#include "sphinxbase/fixpoint.h"
+#include "sphinxbase/fe.h"
+#include "sphinxbase/genrand.h"
+#include "sphinxbase/libutil.h"
+#include "sphinxbase/err.h"
+
+#include "fe_internal.h"
+#include "fe_warp.h"
+
+/* Use extra precision for cosines, Hamming window, pre-emphasis
+ * coefficient, twiddle factors. */
+#ifdef FIXED_POINT
+#define FLOAT2COS(x) FLOAT2FIX_ANY(x,30)
+#define COSMUL(x,y) FIXMUL_ANY(x,y,30)
+#else
+#define FLOAT2COS(x) (x)
+#define COSMUL(x,y) ((x)*(y))
+#endif
+
+#ifdef FIXED_POINT
+/* Internal log-addition table for natural log with radix point at 8
+ * bits. Each entry is 256 * log(1 + e^{-n/256}). This is used in the
+ * log-add computation:
+ *
+ * e^z = e^x + e^y
+ * e^z = e^x(1 + e^{y-x}) = e^y(1 + e^{x-y})
+ * z = x + log(1 + e^{y-x}) = y + log(1 + e^{x-y})
+ *
+ * So when y > x, z = y + logadd_table[-(x-y)]
+ * when x > y, z = x + logadd_table[-(y-x)]
+ */
+static const unsigned char fe_logadd_table[] = {
+177, 177, 176, 176, 175, 175, 174, 174, 173, 173,
+172, 172, 172, 171, 171, 170, 170, 169, 169, 168,
+168, 167, 167, 166, 166, 165, 165, 164, 164, 163,
+163, 162, 162, 161, 161, 161, 160, 160, 159, 159,
+158, 158, 157, 157, 156, 156, 155, 155, 155, 154,
+154, 153, 153, 152, 152, 151, 151, 151, 150, 150,
+149, 149, 148, 148, 147, 147, 147, 146, 146, 145,
+145, 144, 144, 144, 143, 143, 142, 142, 141, 141,
+141, 140, 140, 139, 139, 138, 138, 138, 137, 137,
+136, 136, 136, 135, 135, 134, 134, 134, 133, 133,
+132, 132, 131, 131, 131, 130, 130, 129, 129, 129,
+128, 128, 128, 127, 127, 126, 126, 126, 125, 125,
+124, 124, 124, 123, 123, 123, 122, 122, 121, 121,
+121, 120, 120, 119, 119, 119, 118, 118, 118, 117,
+117, 117, 116, 116, 115, 115, 115, 114, 114, 114,
+113, 113, 113, 112, 112, 112, 111, 111, 110, 110,
+110, 109, 109, 109, 108, 108, 108, 107, 107, 107,
+106, 106, 106, 105, 105, 105, 104, 104, 104, 103,
+103, 103, 102, 102, 102, 101, 101, 101, 100, 100,
+100, 99, 99, 99, 98, 98, 98, 97, 97, 97,
+96, 96, 96, 96, 95, 95, 95, 94, 94, 94,
+93, 93, 93, 92, 92, 92, 92, 91, 91, 91,
+90, 90, 90, 89, 89, 89, 89, 88, 88, 88,
+87, 87, 87, 87, 86, 86, 86, 85, 85, 85,
+85, 84, 84, 84, 83, 83, 83, 83, 82, 82,
+82, 82, 81, 81, 81, 80, 80, 80, 80, 79,
+79, 79, 79, 78, 78, 78, 78, 77, 77, 77,
+77, 76, 76, 76, 75, 75, 75, 75, 74, 74,
+74, 74, 73, 73, 73, 73, 72, 72, 72, 72,
+71, 71, 71, 71, 71, 70, 70, 70, 70, 69,
+69, 69, 69, 68, 68, 68, 68, 67, 67, 67,
+67, 67, 66, 66, 66, 66, 65, 65, 65, 65,
+64, 64, 64, 64, 64, 63, 63, 63, 63, 63,
+62, 62, 62, 62, 61, 61, 61, 61, 61, 60,
+60, 60, 60, 60, 59, 59, 59, 59, 59, 58,
+58, 58, 58, 58, 57, 57, 57, 57, 57, 56,
+56, 56, 56, 56, 55, 55, 55, 55, 55, 54,
+54, 54, 54, 54, 53, 53, 53, 53, 53, 52,
+52, 52, 52, 52, 52, 51, 51, 51, 51, 51,
+50, 50, 50, 50, 50, 50, 49, 49, 49, 49,
+49, 49, 48, 48, 48, 48, 48, 48, 47, 47,
+47, 47, 47, 47, 46, 46, 46, 46, 46, 46,
+45, 45, 45, 45, 45, 45, 44, 44, 44, 44,
+44, 44, 43, 43, 43, 43, 43, 43, 43, 42,
+42, 42, 42, 42, 42, 41, 41, 41, 41, 41,
+41, 41, 40, 40, 40, 40, 40, 40, 40, 39,
+39, 39, 39, 39, 39, 39, 38, 38, 38, 38,
+38, 38, 38, 37, 37, 37, 37, 37, 37, 37,
+37, 36, 36, 36, 36, 36, 36, 36, 35, 35,
+35, 35, 35, 35, 35, 35, 34, 34, 34, 34,
+34, 34, 34, 34, 33, 33, 33, 33, 33, 33,
+33, 33, 32, 32, 32, 32, 32, 32, 32, 32,
+32, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+30, 30, 30, 30, 30, 30, 30, 30, 30, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 27, 27,
+27, 27, 27, 27, 27, 27, 27, 27, 26, 26,
+26, 26, 26, 26, 26, 26, 26, 26, 25, 25,
+25, 25, 25, 25, 25, 25, 25, 25, 25, 24,
+24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+23, 23, 22, 22, 22, 22, 22, 22, 22, 22,
+22, 22, 22, 22, 21, 21, 21, 21, 21, 21,
+21, 21, 21, 21, 21, 21, 21, 20, 20, 20,
+20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
+19, 19, 19, 19, 18, 18, 18, 18, 18, 18,
+18, 18, 18, 18, 18, 18, 18, 18, 18, 17,
+17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+17, 17, 17, 17, 16, 16, 16, 16, 16, 16,
+16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+16, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 13, 13, 13,
+13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+13, 13, 13, 13, 13, 13, 13, 12, 12, 12,
+12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+12, 12, 12, 12, 12, 12, 12, 12, 12, 11,
+11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+11, 11, 11, 10, 10, 10, 10, 10, 10, 10,
+10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+10, 10, 10, 10, 10, 10, 10, 10, 10, 9,
+9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+9, 9, 9, 9, 9, 9, 9, 9, 8, 8,
+8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
+6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+6, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 4, 4, 4, 4, 4, 4, 4,
+4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+4, 4, 4, 4, 4, 4, 4, 4, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+1, 1, 1, 1, 1, 1, 1, 0
+};
+static const int fe_logadd_table_size = sizeof(fe_logadd_table) / sizeof(fe_logadd_table[0]);
+
+static fixed32
+fe_log_add(fixed32 x, fixed32 y)
+{
+ fixed32 d, r;
+
+ if (x > y) {
+ d = (x - y) >> (DEFAULT_RADIX - 8);
+ r = x;
+ }
+ else {
+ d = (y - x) >> (DEFAULT_RADIX - 8);
+ r = y;
+ }
+ if (d > fe_logadd_table_size)
+ return r;
+ else {
+ r += ((fixed32)fe_logadd_table[d] << (DEFAULT_RADIX - 8));
+/*
+ printf("%d + %d = %d | %f + %f = %f | %f + %f = %f\n",
+ x, y, r, FIX2FLOAT(x), FIX2FLOAT(y), FIX2FLOAT(r),
+ exp(FIX2FLOAT(x)), exp(FIX2FLOAT(y)), exp(FIX2FLOAT(r)));
+*/
+ return r;
+ }
+}
+
+static fixed32
+fe_log(float32 x)
+{
+ if (x <= 0) {
+ return MIN_FIXLOG;
+ }
+ else {
+ return FLOAT2FIX(log(x));
+ }
+}
+#endif
+
+static float32
+fe_mel(melfb_t *mel, float32 x)
+{
+ float32 warped = fe_warp_unwarped_to_warped(mel, x);
+
+ return (float32) (2595.0 * log10(1.0 + warped / 700.0));
+}
+
+static float32
+fe_melinv(melfb_t *mel, float32 x)
+{
+ float32 warped = (float32) (700.0 * (pow(10.0, x / 2595.0) - 1.0));
+ return fe_warp_warped_to_unwarped(mel, warped);
+}
+
+int32
+fe_build_melfilters(melfb_t *mel_fb)
+{
+ float32 melmin, melmax, melbw, fftfreq;
+ int n_coeffs, i, j;
+
+ /* Filter coefficient matrix, in flattened form. */
+ mel_fb->spec_start = ckd_malloc(mel_fb->num_filters * sizeof(*mel_fb->spec_start));
+ mel_fb->filt_start = ckd_malloc(mel_fb->num_filters * sizeof(*mel_fb->filt_start));
+ mel_fb->filt_width = ckd_malloc(mel_fb->num_filters * sizeof(*mel_fb->filt_width));
+
+ /* First calculate the widths of each filter. */
+ /* Minimum and maximum frequencies in mel scale. */
+ melmin = fe_mel(mel_fb, mel_fb->lower_filt_freq);
+ melmax = fe_mel(mel_fb, mel_fb->upper_filt_freq);
+
+ /* Width of filters in mel scale */
+ melbw = (melmax - melmin) / (mel_fb->num_filters + 1);
+ if (mel_fb->doublewide) {
+ melmin -= melbw;
+ melmax += melbw;
+ if ((fe_melinv(mel_fb, melmin) < 0) ||
+ (fe_melinv(mel_fb, melmax) > mel_fb->sampling_rate / 2)) {
+ E_WARN
+ ("Out of Range: low filter edge = %f (%f)\n",
+ fe_melinv(mel_fb, melmin), 0.0);
+ E_WARN
+ (" high filter edge = %f (%f)\n",
+ fe_melinv(mel_fb, melmax), mel_fb->sampling_rate / 2);
+ return FE_INVALID_PARAM_ERROR;
+ }
+ }
+
+ /* DFT point spacing */
+ fftfreq = mel_fb->sampling_rate / (float32) mel_fb->fft_size;
+
+ /* Count and place filter coefficients. */
+ n_coeffs = 0;
+ for (i = 0; i < mel_fb->num_filters; ++i) {
+ float32 freqs[3];
+
+ /* Left, center, right frequencies in Hertz */
+ for (j = 0; j < 3; ++j) {
+ if (mel_fb->doublewide)
+ freqs[j] = fe_melinv(mel_fb, (i + j * 2) * melbw + melmin);
+ else
+ freqs[j] = fe_melinv(mel_fb, (i + j) * melbw + melmin);
+ /* Round them to DFT points if requested */
+ if (mel_fb->round_filters)
+ freqs[j] = ((int)(freqs[j] / fftfreq + 0.5)) * fftfreq;
+ }
+
+ /* spec_start is the start of this filter in the power spectrum. */
+ mel_fb->spec_start[i] = -1;
+ /* There must be a better way... */
+ for (j = 0; j < mel_fb->fft_size/2+1; ++j) {
+ float32 hz = j * fftfreq;
+ if (hz < freqs[0])
+ continue;
+ else if (hz > freqs[2] || j == mel_fb->fft_size/2) {
+ /* filt_width is the width in DFT points of this filter. */
+ mel_fb->filt_width[i] = j - mel_fb->spec_start[i];
+ /* filt_start is the start of this filter in the filt_coeffs array. */
+ mel_fb->filt_start[i] = n_coeffs;
+ n_coeffs += mel_fb->filt_width[i];
+ break;
+ }
+ if (mel_fb->spec_start[i] == -1)
+ mel_fb->spec_start[i] = j;
+ }
+ }
+
+ /* Now go back and allocate the coefficient array. */
+ mel_fb->filt_coeffs = ckd_malloc(n_coeffs * sizeof(*mel_fb->filt_coeffs));
+
+ /* And now generate the coefficients. */
+ n_coeffs = 0;
+ for (i = 0; i < mel_fb->num_filters; ++i) {
+ float32 freqs[3];
+
+ /* Left, center, right frequencies in Hertz */
+ for (j = 0; j < 3; ++j) {
+ if (mel_fb->doublewide)
+ freqs[j] = fe_melinv(mel_fb, (i + j * 2) * melbw + melmin);
+ else
+ freqs[j] = fe_melinv(mel_fb, (i + j) * melbw + melmin);
+ /* Round them to DFT points if requested */
+ if (mel_fb->round_filters)
+ freqs[j] = ((int)(freqs[j] / fftfreq + 0.5)) * fftfreq;
+ }
+
+ for (j = 0; j < mel_fb->filt_width[i]; ++j) {
+ float32 hz, loslope, hislope;
+
+ hz = (mel_fb->spec_start[i] + j) * fftfreq;
+ if (hz < freqs[0] || hz > freqs[2]) {
+ E_FATAL("WTF, %f < %f > %f\n", freqs[0], hz, freqs[2]);
+ }
+ loslope = (hz - freqs[0]) / (freqs[1] - freqs[0]);
+ hislope = (freqs[2] - hz) / (freqs[2] - freqs[1]);
+ if (mel_fb->unit_area) {
+ loslope *= 2 / (freqs[2] - freqs[0]);
+ hislope *= 2 / (freqs[2] - freqs[0]);
+ }
+ if (loslope < hislope) {
+#ifdef FIXED_POINT
+ mel_fb->filt_coeffs[n_coeffs] = fe_log(loslope);
+#else
+ mel_fb->filt_coeffs[n_coeffs] = loslope;
+#endif
+ }
+ else {
+#ifdef FIXED_POINT
+ mel_fb->filt_coeffs[n_coeffs] = fe_log(hislope);
+#else
+ mel_fb->filt_coeffs[n_coeffs] = hislope;
+#endif
+ }
+ ++n_coeffs;
+ }
+ }
+
+
+ return FE_SUCCESS;
+}
+
+int32
+fe_compute_melcosine(melfb_t * mel_fb)
+{
+
+ float64 freqstep;
+ int32 i, j;
+
+ mel_fb->mel_cosine =
+ (mfcc_t **) ckd_calloc_2d(mel_fb->num_cepstra,
+ mel_fb->num_filters,
+ sizeof(mfcc_t));
+
+ freqstep = M_PI / mel_fb->num_filters;
+ /* NOTE: The first row vector is actually unnecessary but we leave
+ * it in to avoid confusion. */
+ for (i = 0; i < mel_fb->num_cepstra; i++) {
+ for (j = 0; j < mel_fb->num_filters; j++) {
+ float64 cosine;
+
+ cosine = cos(freqstep * i * (j + 0.5));
+ mel_fb->mel_cosine[i][j] = FLOAT2COS(cosine);
+ }
+ }
+
+ /* Also precompute normalization constants for unitary DCT. */
+ mel_fb->sqrt_inv_n = FLOAT2COS(sqrt(1.0 / mel_fb->num_filters));
+ mel_fb->sqrt_inv_2n = FLOAT2COS(sqrt(2.0 / mel_fb->num_filters));
+
+ /* And liftering weights */
+ if (mel_fb->lifter_val) {
+ mel_fb->lifter = calloc(mel_fb->num_cepstra, sizeof(*mel_fb->lifter));
+ for (i = 0; i < mel_fb->num_cepstra; ++i) {
+ mel_fb->lifter[i] = FLOAT2MFCC(1 + mel_fb->lifter_val / 2
+ * sin(i * M_PI / mel_fb->lifter_val));
+ }
+ }
+
+ return (0);
+}
+
+static void
+fe_pre_emphasis(int16 const *in, frame_t * out, int32 len,
+ float32 factor, int16 prior)
+{
+ int i;
+
+#if defined(FIXED16)
+ int16 fxd_alpha = (int16)(factor * 0x8000);
+ int32 tmp1, tmp2;
+
+ tmp1 = (int32)in[0] << 15;
+ tmp2 = (int32)prior * fxd_alpha;
+ out[0] = (int16)((tmp1 - tmp2) >> 15);
+ for (i = 1; i < len; ++i) {
+ tmp1 = (int32)in[i] << 15;
+ tmp2 = (int32)in[i-1] * fxd_alpha;
+ out[i] = (int16)((tmp1 - tmp2) >> 15);
+ }
+#elif defined(FIXED_POINT)
+ fixed32 fxd_alpha = FLOAT2FIX(factor);
+ out[0] = ((fixed32)in[0] << DEFAULT_RADIX) - (prior * fxd_alpha);
+ for (i = 1; i < len; ++i)
+ out[i] = ((fixed32)in[i] << DEFAULT_RADIX)
+ - (fixed32)in[i-1] * fxd_alpha;
+#else
+ out[0] = (frame_t) in[0] - (frame_t) prior * factor;
+ for (i = 1; i < len; i++)
+ out[i] = (frame_t) in[i] - (frame_t) in[i-1] * factor;
+#endif
+}
+
+static void
+fe_short_to_frame(int16 const *in, frame_t * out, int32 len)
+{
+ int i;
+
+#if defined(FIXED16)
+ memcpy(out, in, len * sizeof(*out));
+#elif defined(FIXED_POINT)
+ for (i = 0; i < len; i++)
+ out[i] = (int32) in[i] << DEFAULT_RADIX;
+#else /* FIXED_POINT */
+ for (i = 0; i < len; i++)
+ out[i] = (frame_t) in[i];
+#endif /* FIXED_POINT */
+}
+
+void
+fe_create_hamming(window_t * in, int32 in_len)
+{
+ int i;
+
+ /* Symmetric, so we only create the first half of it. */
+ for (i = 0; i < in_len / 2; i++) {
+ float64 hamm;
+ hamm = (0.54 - 0.46 * cos(2 * M_PI * i /
+ ((float64) in_len - 1.0)));
+#ifdef FIXED16
+ in[i] = (int16)(hamm * 0x8000);
+#else
+ in[i] = FLOAT2COS(hamm);
+#endif
+ }
+}
+
+static void
+fe_hamming_window(frame_t * in, window_t * window, int32 in_len, int32 remove_dc)
+{
+ int i;
+
+ if (remove_dc) {
+#ifdef FIXED16
+ int32 mean = 0; /* Use int32 to avoid possibility of overflow */
+#else
+ frame_t mean = 0;
+#endif
+
+ for (i = 0; i < in_len; i++)
+ mean += in[i];
+ mean /= in_len;
+ for (i = 0; i < in_len; i++)
+ in[i] -= (frame_t)mean;
+ }
+
+#ifdef FIXED16
+ for (i = 0; i < in_len/2; i++) {
+ int32 tmp1, tmp2;
+
+ tmp1 = (int32)in[i] * window[i];
+ tmp2 = (int32)in[in_len-1-i] * window[i];
+ in[i] = (int16)(tmp1 >> 15);
+ in[in_len-1-i] = (int16)(tmp2 >> 15);
+ }
+#else
+ for (i = 0; i < in_len/2; i++) {
+ in[i] = COSMUL(in[i], window[i]);
+ in[in_len-1-i] = COSMUL(in[in_len-1-i], window[i]);
+ }
+#endif
+}
+
+static int
+fe_spch_to_frame(fe_t *fe, int len)
+{
+ /* Copy to the frame buffer. */
+ if (fe->pre_emphasis_alpha != 0.0) {
+ fe_pre_emphasis(fe->spch, fe->frame, len,
+ fe->pre_emphasis_alpha, fe->prior);
+ if (len >= fe->frame_shift)
+ fe->prior = fe->spch[fe->frame_shift - 1];
+ else
+ fe->prior = fe->spch[len - 1];
+ }
+ else
+ fe_short_to_frame(fe->spch, fe->frame, len);
+
+ /* Zero pad up to FFT size. */
+ memset(fe->frame + len, 0,
+ (fe->fft_size - len) * sizeof(*fe->frame));
+
+ /* Window. */
+ fe_hamming_window(fe->frame, fe->hamming_window, fe->frame_size,
+ fe->remove_dc);
+
+ return len;
+}
+
+int
+fe_read_frame(fe_t *fe, int16 const *in, int32 len)
+{
+ int i;
+
+ if (len > fe->frame_size)
+ len = fe->frame_size;
+
+ /* Read it into the raw speech buffer. */
+ memcpy(fe->spch, in, len * sizeof(*in));
+ /* Swap and dither if necessary. */
+ if (fe->swap)
+ for (i = 0; i < len; ++i)
+ SWAP_INT16(&fe->spch[i]);
+ if (fe->dither)
+ for (i = 0; i < len; ++i)
+ fe->spch[i] += (int16) ((!(s3_rand_int31() % 4)) ? 1 : 0);
+
+ return fe_spch_to_frame(fe, len);
+}
+
+int
+fe_shift_frame(fe_t *fe, int16 const *in, int32 len)
+{
+ int offset, i;
+
+ if (len > fe->frame_shift)
+ len = fe->frame_shift;
+ offset = fe->frame_size - fe->frame_shift;
+
+ /* Shift data into the raw speech buffer. */
+ memmove(fe->spch, fe->spch + fe->frame_shift,
+ offset * sizeof(*fe->spch));
+ memcpy(fe->spch + offset, in, len * sizeof(*fe->spch));
+ /* Swap and dither if necessary. */
+ if (fe->swap)
+ for (i = 0; i < len; ++i)
+ SWAP_INT16(&fe->spch[offset + i]);
+ if (fe->dither)
+ for (i = 0; i < len; ++i)
+ fe->spch[offset + i]
+ += (int16) ((!(s3_rand_int31() % 4)) ? 1 : 0);
+
+ return fe_spch_to_frame(fe, offset + len);
+}
+
+/**
+ * Create arrays of twiddle factors.
+ */
+void
+fe_create_twiddle(fe_t *fe)
+{
+ int i;
+
+ for (i = 0; i < fe->fft_size / 4; ++i) {
+ float64 a = 2 * M_PI * i / fe->fft_size;
+#ifdef FIXED16
+ fe->ccc[i] = (int16)(cos(a) * 0x8000);
+ fe->sss[i] = (int16)(sin(a) * 0x8000);
+#elif defined(FIXED_POINT)
+ fe->ccc[i] = FLOAT2COS(cos(a));
+ fe->sss[i] = FLOAT2COS(sin(a));
+#else
+ fe->ccc[i] = cos(a);
+ fe->sss[i] = sin(a);
+#endif
+ }
+}
+
+/* Translated from the FORTRAN (obviously) from "Real-Valued Fast
+ * Fourier Transform Algorithms" by Henrik V. Sorensen et al., IEEE
+ * Transactions on Acoustics, Speech, and Signal Processing, vol. 35,
+ * no.6. The 16-bit version does a version of "block floating
+ * point" in order to avoid rounding errors.
+ */
+#if defined(FIXED16)
+static int
+fe_fft_real(fe_t *fe)
+{
+ int i, j, k, m, n, lz;
+ frame_t *x, xt, max;
+
+ x = fe->frame;
+ m = fe->fft_order;
+ n = fe->fft_size;
+
+ /* Bit-reverse the input. */
+ j = 0;
+ for (i = 0; i < n - 1; ++i) {
+ if (i < j) {
+ xt = x[j];
+ x[j] = x[i];
+ x[i] = xt;
+ }
+ k = n / 2;
+ while (k <= j) {
+ j -= k;
+ k /= 2;
+ }
+ j += k;
+ }
+ /* Determine how many bits of dynamic range are in the input. */
+ max = 0;
+ for (i = 0; i < n; ++i)
+ if (abs(x[i]) > max)
+ max = abs(x[i]);
+ /* The FFT has a gain of M bits, so we need to attenuate the input
+ * by M bits minus the number of leading zeroes in the input's
+ * range in order to avoid overflows. */
+ for (lz = 0; lz < m; ++lz)
+ if (max & (1 << (15-lz)))
+ break;
+
+ /* Basic butterflies (2-point FFT, real twiddle factors):
+ * x[i] = x[i] + 1 * x[i+1]
+ * x[i+1] = x[i] + -1 * x[i+1]
+ */
+ /* The quantization error introduced by attenuating the input at
+ * any given stage of the FFT has a cascading effect, so we hold
+ * off on it until it's absolutely necessary. */
+ for (i = 0; i < n; i += 2) {
+ int atten = (lz == 0);
+ xt = x[i] >> atten;
+ x[i] = xt + (x[i + 1] >> atten);
+ x[i + 1] = xt - (x[i + 1] >> atten);
+ }
+
+ /* The rest of the butterflies, in stages from 1..m */
+ for (k = 1; k < m; ++k) {
+ int n1, n2, n4;
+ /* Start attenuating once we hit the number of leading zeros. */
+ int atten = (k >= lz);
+
+ n4 = k - 1;
+ n2 = k;
+ n1 = k + 1;
+ /* Stride over each (1 << (k+1)) points */
+ for (i = 0; i < n; i += (1 << n1)) {
+ /* Basic butterfly with real twiddle factors:
+ * x[i] = x[i] + 1 * x[i + (1<<k)]
+ * x[i + (1<<k)] = x[i] + -1 * x[i + (1<<k)]
+ */
+ xt = x[i] >> atten;
+ x[i] = xt + (x[i + (1 << n2)] >> atten);
+ x[i + (1 << n2)] = xt - (x[i + (1 << n2)] >> atten);
+
+ /* The other ones with real twiddle factors:
+ * x[i + (1<<k) + (1<<(k-1))]
+ * = 0 * x[i + (1<<k-1)] + -1 * x[i + (1<<k) + (1<<k-1)]
+ * x[i + (1<<(k-1))]
+ * = 1 * x[i + (1<<k-1)] + 0 * x[i + (1<<k) + (1<<k-1)]
+ */
+ x[i + (1 << n2) + (1 << n4)] = -x[i + (1 << n2) + (1 << n4)] >> atten;
+ x[i + (1 << n4)] = x[i + (1 << n4)] >> atten;
+
+ /* Butterflies with complex twiddle factors.
+ * There are (1<<k-1) of them.
+ */
+ for (j = 1; j < (1 << n4); ++j) {
+ frame_t cc, ss, t1, t2;
+ int i1, i2, i3, i4;
+
+ i1 = i + j;
+ i2 = i + (1 << n2) - j;
+ i3 = i + (1 << n2) + j;
+ i4 = i + (1 << n2) + (1 << n2) - j;
+
+ /*
+ * cc = real(W[j * n / (1<<(k+1))])
+ * ss = imag(W[j * n / (1<<(k+1))])
+ */
+ cc = fe->ccc[j << (m - n1)];
+ ss = fe->sss[j << (m - n1)];
+
+ /* There are some symmetry properties which allow us
+ * to get away with only four multiplications here. */
+ {
+ int32 tmp1, tmp2;
+ tmp1 = (int32)x[i3] * cc + (int32)x[i4] * ss;
+ tmp2 = (int32)x[i3] * ss - (int32)x[i4] * cc;
+ t1 = (int16)(tmp1 >> 15) >> atten;
+ t2 = (int16)(tmp2 >> 15) >> atten;
+ }
+
+ x[i4] = (x[i2] >> atten) - t2;
+ x[i3] = (-x[i2] >> atten) - t2;
+ x[i2] = (x[i1] >> atten) - t1;
+ x[i1] = (x[i1] >> atten) + t1;
+ }
+ }
+ }
+
+ /* Return the residual scaling factor. */
+ return lz;
+}
+#else /* !FIXED16 */
+static int
+fe_fft_real(fe_t *fe)
+{
+ int i, j, k, m, n;
+ frame_t *x, xt;
+
+ x = fe->frame;
+ m = fe->fft_order;
+ n = fe->fft_size;
+
+ /* Bit-reverse the input. */
+ j = 0;
+ for (i = 0; i < n - 1; ++i) {
+ if (i < j) {
+ xt = x[j];
+ x[j] = x[i];
+ x[i] = xt;
+ }
+ k = n / 2;
+ while (k <= j) {
+ j -= k;
+ k /= 2;
+ }
+ j += k;
+ }
+
+ /* Basic butterflies (2-point FFT, real twiddle factors):
+ * x[i] = x[i] + 1 * x[i+1]
+ * x[i+1] = x[i] + -1 * x[i+1]
+ */
+ for (i = 0; i < n; i += 2) {
+ xt = x[i];
+ x[i] = (xt + x[i + 1]);
+ x[i + 1] = (xt - x[i + 1]);
+ }
+
+ /* The rest of the butterflies, in stages from 1..m */
+ for (k = 1; k < m; ++k) {
+ int n1, n2, n4;
+
+ n4 = k - 1;
+ n2 = k;
+ n1 = k + 1;
+ /* Stride over each (1 << (k+1)) points */
+ for (i = 0; i < n; i += (1 << n1)) {
+ /* Basic butterfly with real twiddle factors:
+ * x[i] = x[i] + 1 * x[i + (1<<k)]
+ * x[i + (1<<k)] = x[i] + -1 * x[i + (1<<k)]
+ */
+ xt = x[i];
+ x[i] = (xt + x[i + (1 << n2)]);
+ x[i + (1 << n2)] = (xt - x[i + (1 << n2)]);
+
+ /* The other ones with real twiddle factors:
+ * x[i + (1<<k) + (1<<(k-1))]
+ * = 0 * x[i + (1<<k-1)] + -1 * x[i + (1<<k) + (1<<k-1)]
+ * x[i + (1<<(k-1))]
+ * = 1 * x[i + (1<<k-1)] + 0 * x[i + (1<<k) + (1<<k-1)]
+ */
+ x[i + (1 << n2) + (1 << n4)] = -x[i + (1 << n2) + (1 << n4)];
+ x[i + (1 << n4)] = x[i + (1 << n4)];
+
+ /* Butterflies with complex twiddle factors.
+ * There are (1<<k-1) of them.
+ */
+ for (j = 1; j < (1 << n4); ++j) {
+ frame_t cc, ss, t1, t2;
+ int i1, i2, i3, i4;
+
+ i1 = i + j;
+ i2 = i + (1 << n2) - j;
+ i3 = i + (1 << n2) + j;
+ i4 = i + (1 << n2) + (1 << n2) - j;
+
+ /*
+ * cc = real(W[j * n / (1<<(k+1))])
+ * ss = imag(W[j * n / (1<<(k+1))])
+ */
+ cc = fe->ccc[j << (m - n1)];
+ ss = fe->sss[j << (m - n1)];
+
+ /* There are some symmetry properties which allow us
+ * to get away with only four multiplications here. */
+ t1 = COSMUL(x[i3], cc) + COSMUL(x[i4], ss);
+ t2 = COSMUL(x[i3], ss) - COSMUL(x[i4], cc);
+
+ x[i4] = (x[i2] - t2);
+ x[i3] = (-x[i2] - t2);
+ x[i2] = (x[i1] - t1);
+ x[i1] = (x[i1] + t1);
+ }
+ }
+ }
+
+ /* This isn't used, but return it for completeness. */
+ return m;
+}
+#endif /* !FIXED16 */
+
+static void
+fe_spec_magnitude(fe_t *fe)
+{
+ frame_t *fft;
+ powspec_t *spec;
+ int32 j, scale, fftsize;
+
+ /* Do FFT and get the scaling factor back (only actually used in
+ * fixed-point). Note the scaling factor is expressed in bits. */
+ scale = fe_fft_real(fe);
+
+ /* Convenience pointers to make things less awkward below. */
+ fft = fe->frame;
+ spec = fe->spec;
+ fftsize = fe->fft_size;
+
+ /* We need to scale things up the rest of the way to N. */
+ scale = fe->fft_order - scale;
+
+ /* The first point (DC coefficient) has no imaginary part */
+ {
+#ifdef FIXED16
+ spec[0] = fixlog(abs(fft[0]) << scale) * 2;
+#elif defined(FIXED_POINT)
+ spec[0] = FIXLN(abs(fft[0]) << scale) * 2;
+#else
+ spec[0] = fft[0] * fft[0];
+#endif
+ }
+
+ for (j = 1; j <= fftsize / 2; j++) {
+#ifdef FIXED16
+ int32 rr = fixlog(abs(fft[j]) << scale) * 2;
+ int32 ii = fixlog(abs(fft[fftsize - j]) << scale) * 2;
+ spec[j] = fe_log_add(rr, ii);
+#elif defined(FIXED_POINT)
+ int32 rr = FIXLN(abs(fft[j]) << scale) * 2;
+ int32 ii = FIXLN(abs(fft[fftsize - j]) << scale) * 2;
+ spec[j] = fe_log_add(rr, ii);
+#else
+ spec[j] = fft[j] * fft[j] + fft[fftsize - j] * fft[fftsize - j];
+#endif
+ }
+}
+
+static void
+fe_mel_spec(fe_t * fe)
+{
+ int whichfilt;
+ powspec_t *spec, *mfspec;
+
+ /* Convenience poitners. */
+ spec = fe->spec;
+ mfspec = fe->mfspec;
+
+ for (whichfilt = 0; whichfilt < fe->mel_fb->num_filters; whichfilt++) {
+ int spec_start, filt_start, i;
+
+ spec_start = fe->mel_fb->spec_start[whichfilt];
+ filt_start = fe->mel_fb->filt_start[whichfilt];
+
+#ifdef FIXED_POINT
+ mfspec[whichfilt] = spec[spec_start] + fe->mel_fb->filt_coeffs[filt_start];
+ for (i = 1; i < fe->mel_fb->filt_width[whichfilt]; i++) {
+ mfspec[whichfilt] = fe_log_add(mfspec[whichfilt],
+ spec[spec_start + i] +
+ fe->mel_fb->filt_coeffs[filt_start + i]);
+ }
+#else /* !FIXED_POINT */
+ mfspec[whichfilt] = 0;
+ for (i = 0; i < fe->mel_fb->filt_width[whichfilt]; i++)
+ mfspec[whichfilt] +=
+ spec[spec_start + i] * fe->mel_fb->filt_coeffs[filt_start + i];
+#endif /* !FIXED_POINT */
+ }
+}
+
+static void
+fe_mel_cep(fe_t * fe, mfcc_t *mfcep)
+{
+ int32 i;
+ powspec_t *mfspec;
+
+ /* Convenience pointer. */
+ mfspec = fe->mfspec;
+
+ for (i = 0; i < fe->mel_fb->num_filters; ++i) {
+#ifndef FIXED_POINT /* It's already in log domain for fixed point */
+ if (mfspec[i] > 0)
+ mfspec[i] = log(mfspec[i]);
+ else /* This number should be smaller than anything
+ * else, but not too small, so as to avoid
+ * infinities in the inverse transform (this is
+ * the frequency-domain equivalent of
+ * dithering) */
+ mfspec[i] = -10.0;
+#endif /* !FIXED_POINT */
+ }
+
+ /* If we are doing LOG_SPEC, then do nothing. */
+ if (fe->log_spec == RAW_LOG_SPEC) {
+ for (i = 0; i < fe->feature_dimension; i++) {
+ mfcep[i] = (mfcc_t) mfspec[i];
+ }
+ }
+ /* For smoothed spectrum, do DCT-II followed by (its inverse) DCT-III */
+ else if (fe->log_spec == SMOOTH_LOG_SPEC) {
+ /* FIXME: This is probably broken for fixed-point. */
+ fe_dct2(fe, mfspec, mfcep, 0);
+ fe_dct3(fe, mfcep, mfspec);
+ for (i = 0; i < fe->feature_dimension; i++) {
+ mfcep[i] = (mfcc_t) mfspec[i];
+ }
+ }
+ else if (fe->transform == DCT_II)
+ fe_dct2(fe, mfspec, mfcep, FALSE);
+ else if (fe->transform == DCT_HTK)
+ fe_dct2(fe, mfspec, mfcep, TRUE);
+ else
+ fe_spec2cep(fe, mfspec, mfcep);
+
+ return;
+}
+
+void
+fe_spec2cep(fe_t * fe, const powspec_t * mflogspec, mfcc_t * mfcep)
+{
+ int32 i, j, beta;
+
+ /* Compute C0 separately (its basis vector is 1) to avoid
+ * costly multiplications. */
+ mfcep[0] = mflogspec[0] / 2; /* beta = 0.5 */
+ for (j = 1; j < fe->mel_fb->num_filters; j++)
+ mfcep[0] += mflogspec[j]; /* beta = 1.0 */
+ mfcep[0] /= (frame_t) fe->mel_fb->num_filters;
+
+ for (i = 1; i < fe->num_cepstra; ++i) {
+ mfcep[i] = 0;
+ for (j = 0; j < fe->mel_fb->num_filters; j++) {
+ if (j == 0)
+ beta = 1; /* 0.5 */
+ else
+ beta = 2; /* 1.0 */
+ mfcep[i] += COSMUL(mflogspec[j],
+ fe->mel_fb->mel_cosine[i][j]) * beta;
+ }
+ /* Note that this actually normalizes by num_filters, like the
+ * original Sphinx front-end, due to the doubled 'beta' factor
+ * above. */
+ mfcep[i] /= (frame_t) fe->mel_fb->num_filters * 2;
+ }
+}
+
+void
+fe_dct2(fe_t * fe, const powspec_t * mflogspec, mfcc_t * mfcep, int htk)
+{
+ int32 i, j;
+
+ /* Compute C0 separately (its basis vector is 1) to avoid
+ * costly multiplications. */
+ mfcep[0] = mflogspec[0];
+ for (j = 1; j < fe->mel_fb->num_filters; j++)
+ mfcep[0] += mflogspec[j];
+ if (htk)
+ mfcep[0] = COSMUL(mfcep[0], fe->mel_fb->sqrt_inv_2n);
+ else /* sqrt(1/N) = sqrt(2/N) * 1/sqrt(2) */
+ mfcep[0] = COSMUL(mfcep[0], fe->mel_fb->sqrt_inv_n);
+
+ for (i = 1; i < fe->num_cepstra; ++i) {
+ mfcep[i] = 0;
+ for (j = 0; j < fe->mel_fb->num_filters; j++) {
+ mfcep[i] += COSMUL(mflogspec[j],
+ fe->mel_fb->mel_cosine[i][j]);
+ }
+ mfcep[i] = COSMUL(mfcep[i], fe->mel_fb->sqrt_inv_2n);
+ }
+}
+
+void
+fe_lifter(fe_t *fe, mfcc_t *mfcep)
+{
+ int32 i;
+
+ if (fe->mel_fb->lifter_val == 0)
+ return;
+
+ for (i = 0; i < fe->num_cepstra; ++i) {
+ mfcep[i] = MFCCMUL(mfcep[i], fe->mel_fb->lifter[i]);
+ }
+}
+
+void
+fe_dct3(fe_t * fe, const mfcc_t * mfcep, powspec_t * mflogspec)
+{
+ int32 i, j;
+
+ for (i = 0; i < fe->mel_fb->num_filters; ++i) {
+ mflogspec[i] = COSMUL(mfcep[0], SQRT_HALF);
+ for (j = 1; j < fe->num_cepstra; j++) {
+ mflogspec[i] += COSMUL(mfcep[j],
+ fe->mel_fb->mel_cosine[j][i]);
+ }
+ mflogspec[i] = COSMUL(mflogspec[i], fe->mel_fb->sqrt_inv_2n);
+ }
+}
+
+int32
+fe_write_frame(fe_t * fe, mfcc_t * fea)
+{
+ fe_spec_magnitude(fe);
+ fe_mel_spec(fe);
+ fe_mel_cep(fe, fea);
+ fe_lifter(fe, fea);
+
+ return 1;
+}
+
+void *
+fe_create_2d(int32 d1, int32 d2, int32 elem_size)
+{
+ return (void *)ckd_calloc_2d(d1, d2, elem_size);
+}
+
+void
+fe_free_2d(void *arr)
+{
+ ckd_free_2d((void **)arr);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: fe_warp.c
+ *
+ * Description:
+ * Allows a caller to choose a warping function.
+ *********************************************************************/
+
+/* static char rcsid[] = "@(#)$Id: fe_warp.c,v 1.2 2006/02/17 00:31:34 egouvea Exp $";*/
+\f
+#include "fe_warp_inverse_linear.h"
+#include "fe_warp_affine.h"
+#include "fe_warp_piecewise_linear.h"
+#include "fe_warp.h"
+
+#include "sphinxbase/err.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+
+/* This is for aliases for each of the entries below. Currently not
+ used.
+*/
+static char *__name2id[] = {
+ "inverse",
+ "linear",
+ "piecewise",
+ NULL
+};
+
+static char *name2id[] = {
+ "inverse_linear",
+ "affine",
+ "piecewise_linear",
+ NULL
+};
+\f
+static fe_warp_conf_t fe_warp_conf[FE_WARP_ID_MAX + 1] = {
+ {fe_warp_inverse_linear_set_parameters,
+ fe_warp_inverse_linear_doc,
+ fe_warp_inverse_linear_id,
+ fe_warp_inverse_linear_n_param,
+ fe_warp_inverse_linear_warped_to_unwarped,
+ fe_warp_inverse_linear_unwarped_to_warped,
+ fe_warp_inverse_linear_print}, /* Inverse linear warping */
+ {fe_warp_affine_set_parameters,
+ fe_warp_affine_doc,
+ fe_warp_affine_id,
+ fe_warp_affine_n_param,
+ fe_warp_affine_warped_to_unwarped,
+ fe_warp_affine_unwarped_to_warped,
+ fe_warp_affine_print}, /* Affine warping */
+ {fe_warp_piecewise_linear_set_parameters,
+ fe_warp_piecewise_linear_doc,
+ fe_warp_piecewise_linear_id,
+ fe_warp_piecewise_linear_n_param,
+ fe_warp_piecewise_linear_warped_to_unwarped,
+ fe_warp_piecewise_linear_unwarped_to_warped,
+ fe_warp_piecewise_linear_print}, /* Piecewise_Linear warping */
+};
+
+int
+fe_warp_set(melfb_t *mel, const char *id_name)
+{
+ uint32 i;
+
+ for (i = 0; name2id[i]; i++) {
+ if (strcmp(id_name, name2id[i]) == 0) {
+ mel->warp_id = i;
+ break;
+ }
+ }
+
+ if (name2id[i] == NULL) {
+ for (i = 0; __name2id[i]; i++) {
+ if (strcmp(id_name, __name2id[i]) == 0) {
+ mel->warp_id = i;
+ break;
+ }
+ }
+ if (__name2id[i] == NULL) {
+ E_ERROR("Unimplemented warping function %s\n", id_name);
+ E_ERROR("Implemented functions are:\n");
+ for (i = 0; name2id[i]; i++) {
+ fprintf(stderr, "\t%s\n", name2id[i]);
+ }
+ mel->warp_id = FE_WARP_ID_NONE;
+
+ return FE_START_ERROR;
+ }
+ }
+
+ return FE_SUCCESS;
+}
+\f
+void
+fe_warp_set_parameters(melfb_t *mel, char const *param_str, float sampling_rate)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ fe_warp_conf[mel->warp_id].set_parameters(param_str, sampling_rate);
+ }
+ else if (mel->warp_id == FE_WARP_ID_NONE) {
+ E_FATAL("feat module must be configured w/ a valid ID\n");
+ }
+ else {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+}
+\f
+const char *
+fe_warp_doc(melfb_t *mel)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ return fe_warp_conf[mel->warp_id].doc();
+ }
+ else if (mel->warp_id == FE_WARP_ID_NONE) {
+ E_FATAL("fe_warp module must be configured w/ a valid ID\n");
+ }
+ else {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+
+ return NULL;
+}
+\f
+uint32
+fe_warp_id(melfb_t *mel)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ assert(mel->warp_id == fe_warp_conf[mel->warp_id].id());
+ return mel->warp_id;
+ }
+ else if (mel->warp_id != FE_WARP_ID_NONE) {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+
+ return FE_WARP_ID_NONE;
+}
+\f
+uint32
+fe_warp_n_param(melfb_t *mel)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ return fe_warp_conf[mel->warp_id].n_param();
+ }
+ else if (mel->warp_id == FE_WARP_ID_NONE) {
+ E_FATAL("fe_warp module must be configured w/ a valid ID\n");
+ }
+ else {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+
+ return 0;
+}
+\f
+float
+fe_warp_warped_to_unwarped(melfb_t *mel, float nonlinear)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ return fe_warp_conf[mel->warp_id].warped_to_unwarped(nonlinear);
+ }
+ else if (mel->warp_id == FE_WARP_ID_NONE) {
+ E_FATAL("fe_warp module must be configured w/ a valid ID\n");
+ }
+ else {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+
+ return 0;
+}
+\f
+float
+fe_warp_unwarped_to_warped(melfb_t *mel,float linear)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ return fe_warp_conf[mel->warp_id].unwarped_to_warped(linear);
+ }
+ else if (mel->warp_id == FE_WARP_ID_NONE) {
+ E_FATAL("fe_warp module must be configured w/ a valid ID\n");
+ }
+ else {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+
+ return 0;
+}
+\f
+void
+fe_warp_print(melfb_t *mel, const char *label)
+{
+ if (mel->warp_id <= FE_WARP_ID_MAX) {
+ fe_warp_conf[mel->warp_id].print(label);
+ }
+ else if (mel->warp_id == FE_WARP_ID_NONE) {
+ E_FATAL("fe_warp module must be configured w/ a valid ID\n");
+ }
+ else {
+ E_FATAL
+ ("fe_warp module misconfigured with invalid fe_warp_id %u\n",
+ mel->warp_id);
+ }
+}
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp.c,v $
+ * Revision 1.2 2006/02/17 00:31:34 egouvea
+ * Removed switch -melwarp. Changed the default for window length to
+ * 0.025625 from 0.256 (so that a window at 16kHz sampling rate has
+ * exactly 410 samples). Cleaned up include's. Replaced some E_FATAL()
+ * with E_WARN() and return.
+ *
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+\f
+#ifndef FE_WARP_H
+#define FE_WARP_H
+
+#include "fe_internal.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#define FE_WARP_ID_INVERSE_LINEAR 0
+#define FE_WARP_ID_AFFINE 1
+#define FE_WARP_ID_PIECEWISE_LINEAR 2
+#define FE_WARP_ID_EIDE_GISH 3
+#define FE_WARP_ID_MAX 2
+#define FE_WARP_ID_NONE 0xffffffff
+
+typedef struct {
+ void (*set_parameters)(char const *param_str, float sampling_rate);
+ const char * (*doc)(void);
+ uint32 (*id)(void);
+ uint32 (*n_param)(void);
+ float (*warped_to_unwarped)(float nonlinear);
+ float (*unwarped_to_warped)(float linear);
+ void (*print)(const char *label);
+} fe_warp_conf_t;
+
+int fe_warp_set(melfb_t *mel, const char *id_name);
+
+uint32 fe_warp_id(melfb_t *mel);
+
+const char * fe_warp_doc(melfb_t *mel);
+
+void fe_warp_set_parameters(melfb_t *mel, char const *param_str, float sampling_rate);
+
+uint32 fe_warp_n_param(melfb_t *mel);
+
+float fe_warp_warped_to_unwarped(melfb_t *mel, float nonlinear);
+
+float fe_warp_unwarped_to_warped(melfb_t *mel, float linear);
+
+void fe_warp_print(melfb_t *mel, const char *label);
+
+#define FE_WARP_NO_SIZE 0xffffffff
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* FE_WARP_H */
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp.h,v $
+ * Revision 1.2 2006/02/17 00:31:34 egouvea
+ * Removed switch -melwarp. Changed the default for window length to
+ * 0.025625 from 0.256 (so that a window at 16kHz sampling rate has
+ * exactly 410 samples). Cleaned up include's. Replaced some E_FATAL()
+ * with E_WARN() and return.
+ *
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: fe_warp_affine.c
+ *
+ * Description:
+ * Warp the frequency axis according to an affine function, i.e.:
+ *
+ * w' = a * w + b
+ *
+ *********************************************************************/
+
+/* static char rcsid[] = "@(#)$Id: fe_warp_affine.c,v 1.2 2006/02/17 00:31:34 egouvea Exp $"; */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/err.h"
+
+#include "fe_warp.h"
+#include "fe_warp_affine.h"
+
+#define N_PARAM 2
+#define YES 1
+#define NO 0
+
+/*
+ * params[0] : a
+ * params[1] : b
+ */
+static float params[N_PARAM] = { 1.0f, 0.0f };
+static int32 is_neutral = YES;
+static char p_str[256] = "";
+static float nyquist_frequency = 0.0f;
+\f
+
+const char *
+fe_warp_affine_doc()
+{
+ return "affine :== < w' = a * x + b >";
+}
+\f
+uint32
+fe_warp_affine_id()
+{
+ return FE_WARP_ID_AFFINE;
+}
+\f
+uint32
+fe_warp_affine_n_param()
+{
+ return N_PARAM;
+}
+\f
+void
+fe_warp_affine_set_parameters(char const *param_str, float sampling_rate)
+{
+ char *tok;
+ char *seps = " \t";
+ char temp_param_str[256];
+ int param_index = 0;
+
+ nyquist_frequency = sampling_rate / 2;
+ if (param_str == NULL) {
+ is_neutral = YES;
+ return;
+ }
+ /* The new parameters are the same as the current ones, so do nothing. */
+ if (strcmp(param_str, p_str) == 0) {
+ return;
+ }
+ is_neutral = NO;
+ strcpy(temp_param_str, param_str);
+ memset(params, 0, N_PARAM * sizeof(float));
+ strcpy(p_str, param_str);
+ /* FIXME: strtok() is not re-entrant... */
+ tok = strtok(temp_param_str, seps);
+ while (tok != NULL) {
+ params[param_index++] = (float) atof_c(tok);
+ tok = strtok(NULL, seps);
+ if (param_index >= N_PARAM) {
+ break;
+ }
+ }
+ if (tok != NULL) {
+ E_INFO
+ ("Affine warping takes up to two arguments, %s ignored.\n",
+ tok);
+ }
+ if (params[0] == 0) {
+ is_neutral = YES;
+ E_INFO
+ ("Affine warping cannot have slope zero, warping not applied.\n");
+ }
+}
+\f
+float
+fe_warp_affine_warped_to_unwarped(float nonlinear)
+{
+ if (is_neutral) {
+ return nonlinear;
+ }
+ else {
+ /* linear = (nonlinear - b) / a */
+ float temp = nonlinear - params[1];
+ temp /= params[0];
+ if (temp > nyquist_frequency) {
+ E_WARN
+ ("Warp factor %g results in frequency (%.1f) higher than Nyquist (%.1f)\n",
+ params[0], temp, nyquist_frequency);
+ }
+ return temp;
+ }
+}
+\f
+float
+fe_warp_affine_unwarped_to_warped(float linear)
+{
+ if (is_neutral) {
+ return linear;
+ }
+ else {
+ /* nonlinear = a * linear - b */
+ float temp = linear * params[0];
+ temp += params[1];
+ return temp;
+ }
+}
+\f
+void
+fe_warp_affine_print(const char *label)
+{
+ uint32 i;
+
+ for (i = 0; i < N_PARAM; i++) {
+ printf("%s[%04u]: %6.3f ", label, i, params[i]);
+ }
+ printf("\n");
+}
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp_affine.c,v $
+ * Revision 1.2 2006/02/17 00:31:34 egouvea
+ * Removed switch -melwarp. Changed the default for window length to
+ * 0.025625 from 0.256 (so that a window at 16kHz sampling rate has
+ * exactly 410 samples). Cleaned up include's. Replaced some E_FATAL()
+ * with E_WARN() and return.
+ *
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef FE_WARP_AFFINE_H
+#define FE_WARP_AFFINE_H
+
+#include "sphinxbase/fe.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+const char *
+fe_warp_affine_doc(void);
+
+uint32
+fe_warp_affine_id(void);
+
+uint32
+fe_warp_affine_n_param(void);
+
+void
+fe_warp_affine_set_parameters(char const *param_str, float sampling_rate);
+
+float
+fe_warp_affine_warped_to_unwarped(float nonlinear);
+
+float
+fe_warp_affine_unwarped_to_warped(float linear);
+
+void
+fe_warp_affine_print(const char *label);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* FE_WARP_AFFINE_H */
+
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp_affine.h,v $
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: fe_warp_inverse_linear.c
+ *
+ * Description:
+ * Warp the frequency axis according to an inverse_linear function, i.e.:
+ *
+ * w' = w / a
+ *
+ *********************************************************************/
+
+/* static char rcsid[] = "@(#)$Id: fe_warp_inverse_linear.c,v 1.3 2006/02/23 19:40:11 eht Exp $"; */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/err.h"
+
+#include "fe_warp.h"
+#include "fe_warp_inverse_linear.h"
+
+#define N_PARAM 1
+#define YES 1
+#define NO 0
+
+/*
+ * params[0] : a
+ */
+static float params[N_PARAM] = { 1.0f };
+static int32 is_neutral = YES;
+static char p_str[256] = "";
+static float nyquist_frequency = 0.0f;
+\f
+
+const char *
+fe_warp_inverse_linear_doc()
+{
+ return "inverse_linear :== < w' = x / a >";
+}
+\f
+uint32
+fe_warp_inverse_linear_id()
+{
+ return FE_WARP_ID_INVERSE_LINEAR;
+}
+\f
+uint32
+fe_warp_inverse_linear_n_param()
+{
+ return N_PARAM;
+}
+\f
+void
+fe_warp_inverse_linear_set_parameters(char const *param_str, float sampling_rate)
+{
+ char *tok;
+ char *seps = " \t";
+ char temp_param_str[256];
+ int param_index = 0;
+
+ nyquist_frequency = sampling_rate / 2;
+ if (param_str == NULL) {
+ is_neutral = YES;
+ return;
+ }
+ /* The new parameters are the same as the current ones, so do nothing. */
+ if (strcmp(param_str, p_str) == 0) {
+ return;
+ }
+ is_neutral = NO;
+ strcpy(temp_param_str, param_str);
+ memset(params, 0, N_PARAM * sizeof(float));
+ strcpy(p_str, param_str);
+ /* FIXME: strtok() is not re-entrant... */
+ tok = strtok(temp_param_str, seps);
+ while (tok != NULL) {
+ params[param_index++] = (float) atof_c(tok);
+ tok = strtok(NULL, seps);
+ if (param_index >= N_PARAM) {
+ break;
+ }
+ }
+ if (tok != NULL) {
+ E_INFO
+ ("Inverse linear warping takes only one argument, %s ignored.\n",
+ tok);
+ }
+ if (params[0] == 0) {
+ is_neutral = YES;
+ E_INFO
+ ("Inverse linear warping cannot have slope zero, warping not applied.\n");
+ }
+}
+\f
+float
+fe_warp_inverse_linear_warped_to_unwarped(float nonlinear)
+{
+ if (is_neutral) {
+ return nonlinear;
+ }
+ else {
+ /* linear = nonlinear * a */
+ float temp = nonlinear * params[0];
+ if (temp > nyquist_frequency) {
+ E_WARN
+ ("Warp factor %g results in frequency (%.1f) higher than Nyquist (%.1f)\n",
+ params[0], temp, nyquist_frequency);
+ }
+ return temp;
+ }
+}
+\f
+float
+fe_warp_inverse_linear_unwarped_to_warped(float linear)
+{
+ if (is_neutral) {
+ return linear;
+ }
+ else {
+ /* nonlinear = a / linear */
+ float temp = linear / params[0];
+ return temp;
+ }
+}
+\f
+void
+fe_warp_inverse_linear_print(const char *label)
+{
+ uint32 i;
+
+ for (i = 0; i < N_PARAM; i++) {
+ printf("%s[%04u]: %6.3f ", label, i, params[i]);
+ }
+ printf("\n");
+}
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp_inverse_linear.c,v $
+ * Revision 1.3 2006/02/23 19:40:11 eht
+ * corrected the doc string for the inverse linear warp function.
+ *
+ * Revision 1.2 2006/02/17 00:31:34 egouvea
+ * Removed switch -melwarp. Changed the default for window length to
+ * 0.025625 from 0.256 (so that a window at 16kHz sampling rate has
+ * exactly 410 samples). Cleaned up include's. Replaced some E_FATAL()
+ * with E_WARN() and return.
+ *
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef FE_WARP_inverse_linear_H
+#define FE_WARP_inverse_linear_H
+
+#include "sphinxbase/fe.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+const char *
+fe_warp_inverse_linear_doc(void);
+
+uint32
+fe_warp_inverse_linear_id(void);
+
+uint32
+fe_warp_inverse_linear_n_param(void);
+
+void
+fe_warp_inverse_linear_set_parameters(char const *param_str, float sampling_rate);
+
+float
+fe_warp_inverse_linear_warped_to_unwarped(float nonlinear);
+
+float
+fe_warp_inverse_linear_unwarped_to_warped(float linear);
+
+void
+fe_warp_inverse_linear_print(const char *label);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* FE_WARP_inverse_linear_H */
+
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp_inverse_linear.h,v $
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: fe_warp_piecewise_linear.c
+ *
+ * Description:
+ *
+ * Warp the frequency axis according to an piecewise linear
+ * function. The function is linear up to a frequency F, where
+ * the slope changes so that the Nyquist frequency in the warped
+ * axis maps to the Nyquist frequency in the unwarped.
+ *
+ * w' = a * w, w < F
+ * w' = a' * w + b, W > F
+ * w'(0) = 0
+ * w'(F) = F
+ * w'(Nyq) = Nyq
+ *
+ *********************************************************************/
+
+/* static char rcsid[] = "@(#)$Id: fe_warp_piecewise_linear.c,v 1.2 2006/02/17 00:31:34 egouvea Exp $"; */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/err.h"
+
+#include "fe_warp.h"
+#include "fe_warp_piecewise_linear.h"
+
+#define N_PARAM 2
+#define YES 1
+#define NO 0
+
+/*
+ * params[0] : a
+ * params[1] : F (the non-differentiable point)
+ */
+static float params[N_PARAM] = { 1.0f, 6800.0f };
+static float final_piece[2];
+static int32 is_neutral = YES;
+static char p_str[256] = "";
+static float nyquist_frequency = 0.0f;
+\f
+
+const char *
+fe_warp_piecewise_linear_doc()
+{
+ return "piecewise_linear :== < w' = a * w, w < F >";
+}
+\f
+uint32
+fe_warp_piecewise_linear_id()
+{
+ return FE_WARP_ID_PIECEWISE_LINEAR;
+}
+\f
+uint32
+fe_warp_piecewise_linear_n_param()
+{
+ return N_PARAM;
+}
+\f
+void
+fe_warp_piecewise_linear_set_parameters(char const *param_str,
+ float sampling_rate)
+{
+ char *tok;
+ char *seps = " \t";
+ char temp_param_str[256];
+ int param_index = 0;
+
+ nyquist_frequency = sampling_rate / 2;
+ if (param_str == NULL) {
+ is_neutral = YES;
+ return;
+ }
+ /* The new parameters are the same as the current ones, so do nothing. */
+ if (strcmp(param_str, p_str) == 0) {
+ return;
+ }
+ is_neutral = NO;
+ strcpy(temp_param_str, param_str);
+ memset(params, 0, N_PARAM * sizeof(float));
+ memset(final_piece, 0, 2 * sizeof(float));
+ strcpy(p_str, param_str);
+ /* FIXME: strtok() is not re-entrant... */
+ tok = strtok(temp_param_str, seps);
+ while (tok != NULL) {
+ params[param_index++] = (float) atof_c(tok);
+ tok = strtok(NULL, seps);
+ if (param_index >= N_PARAM) {
+ break;
+ }
+ }
+ if (tok != NULL) {
+ E_INFO
+ ("Piecewise linear warping takes up to two arguments, %s ignored.\n",
+ tok);
+ }
+ if (params[1] < sampling_rate) {
+ /* Precompute these. These are the coefficients of a
+ * straight line that contains the points (F, aF) and (N,
+ * N), where a = params[0], F = params[1], N = Nyquist
+ * frequency.
+ */
+ if (params[1] == 0) {
+ params[1] = sampling_rate * 0.85f;
+ }
+ final_piece[0] =
+ (nyquist_frequency -
+ params[0] * params[1]) / (nyquist_frequency - params[1]);
+ final_piece[1] =
+ nyquist_frequency * params[1] * (params[0] -
+ 1.0f) / (nyquist_frequency -
+ params[1]);
+ }
+ else {
+ memset(final_piece, 0, 2 * sizeof(float));
+ }
+ if (params[0] == 0) {
+ is_neutral = YES;
+ E_INFO
+ ("Piecewise linear warping cannot have slope zero, warping not applied.\n");
+ }
+}
+\f
+float
+fe_warp_piecewise_linear_warped_to_unwarped(float nonlinear)
+{
+ if (is_neutral) {
+ return nonlinear;
+ }
+ else {
+ /* linear = (nonlinear - b) / a */
+ float temp;
+ if (nonlinear < params[0] * params[1]) {
+ temp = nonlinear / params[0];
+ }
+ else {
+ temp = nonlinear - final_piece[1];
+ temp /= final_piece[0];
+ }
+ if (temp > nyquist_frequency) {
+ E_WARN
+ ("Warp factor %g results in frequency (%.1f) higher than Nyquist (%.1f)\n",
+ params[0], temp, nyquist_frequency);
+ }
+ return temp;
+ }
+}
+\f
+float
+fe_warp_piecewise_linear_unwarped_to_warped(float linear)
+{
+ if (is_neutral) {
+ return linear;
+ }
+ else {
+ float temp;
+ /* nonlinear = a * linear - b */
+ if (linear < params[1]) {
+ temp = linear * params[0];
+ }
+ else {
+ temp = final_piece[0] * linear + final_piece[1];
+ }
+ return temp;
+ }
+}
+\f
+void
+fe_warp_piecewise_linear_print(const char *label)
+{
+ uint32 i;
+
+ for (i = 0; i < N_PARAM; i++) {
+ printf("%s[%04u]: %6.3f ", label, i, params[i]);
+ }
+ printf("\n");
+}
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp_piecewise_linear.c,v $
+ * Revision 1.2 2006/02/17 00:31:34 egouvea
+ * Removed switch -melwarp. Changed the default for window length to
+ * 0.025625 from 0.256 (so that a window at 16kHz sampling rate has
+ * exactly 410 samples). Cleaned up include's. Replaced some E_FATAL()
+ * with E_WARN() and return.
+ *
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef FE_WARP_PIECEWIDE_LINEAR_H
+#define FE_WARP_PIECEWIDE_LINEAR_H
+
+#include "sphinxbase/fe.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+const char *
+fe_warp_piecewise_linear_doc(void);
+
+uint32
+fe_warp_piecewise_linear_id(void);
+
+uint32
+fe_warp_piecewise_linear_n_param(void);
+
+void
+fe_warp_piecewise_linear_set_parameters(char const *param_str, float sampling_rate);
+
+float
+fe_warp_piecewise_linear_warped_to_unwarped(float nonlinear);
+
+float
+fe_warp_piecewise_linear_unwarped_to_warped(float linear);
+
+void
+fe_warp_piecewise_linear_print(const char *label);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* FE_WARP_PIECEWIDE_LINEAR_H */
+
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: fe_warp_piecewise_linear.h,v $
+ * Revision 1.1 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2005 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ * File: fixlog.c
+ *
+ * Description: Fast approximate fixed-point logarithms
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/fixpoint.h"
+
+#include "fe_internal.h"
+
+/* Table of log2(x/64)*(1<<DEFAULT_RADIX) */
+/* perl -e 'for (0..63) {my $x = 1 + $_/64; print "\t(uint32)(", log($x)/log(2), "*(1<<DEFAULT_RADIX)),\n"}' */
+static uint32 logtable[] = {
+ (uint32) (0 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.0223678130284545 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.0443941193584534 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.0660891904577724 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.0874628412503394 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.108524456778169 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.129283016944966 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.149747119504682 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.169925001442312 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.189824558880017 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.20945336562895 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.228818690495881 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.247927513443586 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.266786540694901 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.285402218862248 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.303780748177103 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.321928094887362 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.339850002884625 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.357552004618084 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.375039431346925 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.39231742277876 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.409390936137702 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.426264754702098 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.442943495848728 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.459431618637297 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.475733430966398 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.491853096329675 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.507794640198696 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.523561956057013 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.539158811108031 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.554588851677637 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.569855608330948 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.584962500721156 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.599912842187128 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.614709844115208 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.62935662007961 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.643856189774725 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.658211482751795 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.672425341971496 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.686500527183218 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.700439718141092 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.714245517666123 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.727920454563199 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.741466986401147 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.754887502163469 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.768184324776926 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.78135971352466 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.794415866350106 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.807354922057604 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.820178962415188 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.832890014164742 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.845490050944375 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.857980995127572 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.870364719583405 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.882643049361841 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.894817763307944 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.906890595608518 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.918863237274595 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.930737337562886 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.94251450533924 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.954196310386875 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.965784284662087 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.977279923499917 * (1 << DEFAULT_RADIX)),
+ (uint32) (0.988684686772166 * (1 << DEFAULT_RADIX)),
+};
+
+int32
+fixlog2(uint32 x)
+{
+ uint32 y;
+
+ if (x == 0)
+ return MIN_FIXLOG2;
+
+ /* Get the exponent. */
+#if defined(__GNUC__) && defined(__i386__)
+ __asm__("bsrl %1, %0\n": "=r"(y): "g"(x):"cc");
+ x <<= (31 - y);
+#elif defined(__ppc__)
+ __asm__("cntlzw %0, %1\n": "=r"(y):"r"(x));
+ x <<= y;
+ y = 31 - y;
+#elif ((defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
+ defined(__ARM_ARCH_5TE__)) && !defined(__thumb__))
+ __asm__("clz %0, %1\n": "=r"(y):"r"(x));
+ x <<= y;
+ y = 31 - y;
+#else
+ for (y = 31; y >= 0; --y) {
+ if (x & 0x80000000)
+ break;
+ x <<= 1;
+ }
+#endif
+ y <<= DEFAULT_RADIX;
+ /* Do a table lookup for the MSB of the mantissa. */
+ x = (x >> 25) & 0x3f;
+ return y + logtable[x];
+}
+
+int
+fixlog(uint32 x)
+{
+ int32 y;
+
+ if (x == 0)
+ return MIN_FIXLOG;
+
+ y = fixlog2(x);
+ return FIXMUL(y, FIXLN_2);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ * Copyright (c) 2008 Beyond Access, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BEYOND ACCESS, INC. ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BEYOND ACCESS, INC. NOR
+ * ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file yin.c Implementation of pitch extraction.
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+/* This implements part of the YIN algorithm:
+ *
+ * "YIN, a fundamental frequency estimator for speech and music".
+ * Alain de Cheveigné and Hideki Kawahara. Journal of the Acoustical
+ * Society of America, 111 (4), April 2002.
+ */
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/fixpoint.h"
+
+#include "sphinxbase/yin.h"
+
+#include <stdio.h>
+
+struct yin_s {
+ uint16 frame_size; /** Size of analysis frame. */
+ uint16 search_threshold; /**< Threshold for finding period, in Q15 */
+ uint16 search_range; /**< Range around best local estimate to search, in Q15 */
+ uint16 nfr; /**< Number of frames read so far. */
+
+ unsigned char wsize; /**< Size of smoothing window. */
+ unsigned char wstart; /**< First frame in window. */
+ unsigned char wcur; /**< Current frame of analysis. */
+ unsigned char endut; /**< Hoch Hech! Are we at the utterance end? */
+
+ fixed32 **diff_window; /**< Window of difference function outputs. */
+ uint16 *period_window; /**< Window of best period estimates. */
+};
+
+/**
+ * The core of YIN: cumulative mean normalized difference function.
+ */
+static void
+cmn_diff(int16 const *signal, int32 *out_diff, int ndiff)
+{
+ uint32 cum, cshift;
+ int32 t, tscale;
+
+ out_diff[0] = 32768;
+ cum = 0;
+ cshift = 0;
+
+ /* Determine how many bits we can scale t up by below. */
+ for (tscale = 0; tscale < 32; ++tscale)
+ if (ndiff & (1<<(31-tscale)))
+ break;
+ --tscale; /* Avoid teh overflowz. */
+ /* printf("tscale is %d (ndiff - 1) << tscale is %d\n",
+ tscale, (ndiff-1) << tscale); */
+
+ /* Somewhat elaborate block floating point implementation.
+ * The fp implementation of this is really a lot simpler. */
+ for (t = 1; t < ndiff; ++t) {
+ uint32 dd, dshift, norm;
+ int j;
+
+ dd = 0;
+ dshift = 0;
+ for (j = 0; j < ndiff; ++j) {
+ int diff = signal[j] - signal[t + j];
+ /* Guard against overflows. */
+ if (dd > (1UL<<tscale)) {
+ dd >>= 1;
+ ++dshift;
+ }
+ dd += (diff * diff) >> dshift;
+ }
+ /* Make sure the diffs and cum are shifted to the same
+ * scaling factor (usually dshift will be zero) */
+ if (dshift > cshift) {
+ cum += dd << (dshift-cshift);
+ }
+ else {
+ cum += dd >> (cshift-dshift);
+ }
+
+ /* Guard against overflows and also ensure that (t<<tscale) > cum. */
+ while (cum > (1UL<<tscale)) {
+ cum >>= 1;
+ ++cshift;
+ }
+ /* Avoid divide-by-zero! */
+ if (cum == 0) cum = 1;
+ /* Calculate the normalizer in high precision. */
+ norm = (t << tscale) / cum;
+ /* Do a long multiply and shift down to Q15. */
+ out_diff[t] = (int32)(((long long)dd * norm)
+ >> (tscale - 15 + cshift - dshift));
+ /* printf("dd %d cshift %d dshift %d scaledt %d cum %d norm %d cmn %d\n",
+ dd, cshift, dshift, (t<<tscale), cum, norm, out_diff[t]); */
+ }
+}
+
+yin_t *
+yin_init(int frame_size, float search_threshold,
+ float search_range, int smooth_window)
+{
+ yin_t *pe;
+
+ pe = ckd_calloc(1, sizeof(*pe));
+ pe->frame_size = frame_size;
+ pe->search_threshold = (uint16)(search_threshold * 32768);
+ pe->search_range = (uint16)(search_range * 32768);
+ pe->wsize = smooth_window * 2 + 1;
+ pe->diff_window = ckd_calloc_2d(pe->wsize,
+ pe->frame_size / 2,
+ sizeof(**pe->diff_window));
+ pe->period_window = ckd_calloc(pe->wsize,
+ sizeof(*pe->period_window));
+ return pe;
+}
+
+void
+yin_free(yin_t *pe)
+{
+ ckd_free_2d(pe->diff_window);
+ ckd_free(pe->period_window);
+ ckd_free(pe);
+}
+
+void
+yin_start(yin_t *pe)
+{
+ /* Reset the circular window pointers. */
+ pe->wstart = pe->endut = 0;
+ pe->nfr = 0;
+}
+
+void
+yin_end(yin_t *pe)
+{
+ pe->endut = 1;
+}
+
+int
+thresholded_search(int32 *diff_window, fixed32 threshold, int start, int end)
+{
+ int i, min, argmin;
+
+ min = INT_MAX;
+ argmin = 0;
+ for (i = start; i < end; ++i) {
+ int diff = diff_window[i];
+
+ if (diff < threshold) {
+ min = diff;
+ argmin = i;
+ break;
+ }
+ if (diff < min) {
+ min = diff;
+ argmin = i;
+ }
+ }
+ return argmin;
+}
+
+void
+yin_write(yin_t *pe, int16 const *frame)
+{
+ int outptr, difflen;
+
+ /* Rotate the window one frame forward. */
+ ++pe->wstart;
+ /* Fill in the frame before wstart. */
+ outptr = pe->wstart - 1;
+ /* Wrap around the window pointer. */
+ if (pe->wstart == pe->wsize)
+ pe->wstart = 0;
+
+ /* Now calculate normalized difference function. */
+ difflen = pe->frame_size / 2;
+ cmn_diff(frame, pe->diff_window[outptr], difflen);
+
+ /* Find the first point under threshold. If not found, then
+ * use the absolute minimum. */
+ pe->period_window[outptr]
+ = thresholded_search(pe->diff_window[outptr],
+ pe->search_threshold, 0, difflen);
+
+ /* Increment total number of frames. */
+ ++pe->nfr;
+}
+
+int
+yin_read(yin_t *pe, uint16 *out_period, uint16 *out_bestdiff)
+{
+ int wstart, wlen, half_wsize, i;
+ int best, best_diff, search_width, low_period, high_period;
+
+ half_wsize = (pe->wsize-1)/2;
+ /* Without any smoothing, just return the current value (don't
+ * need to do anything to the current poitner either). */
+ if (half_wsize == 0) {
+ if (pe->endut)
+ return 0;
+ *out_period = pe->period_window[0];
+ *out_bestdiff = pe->diff_window[0][pe->period_window[0]];
+ return 1;
+ }
+
+ /* We can't do anything unless we have at least (wsize-1)/2 + 1
+ * frames, unless we're at the end of the utterance. */
+ if (pe->endut == 0 && pe->nfr < half_wsize + 1) {
+ /* Don't increment the current pointer either. */
+ return 0;
+ }
+
+ /* Establish the smoothing window. */
+ /* End of utterance. */
+ if (pe->endut) {
+ /* We are done (no more data) when pe->wcur = pe->wstart. */
+ if (pe->wcur == pe->wstart)
+ return 0;
+ /* I.e. pe->wcur (circular minus) half_wsize. */
+ wstart = (pe->wcur + pe->wsize - half_wsize) % pe->wsize;
+ /* Number of frames from wstart up to pe->wstart. */
+ wlen = pe->wstart - wstart;
+ if (wlen < 0) wlen += pe->wsize;
+ /*printf("ENDUT! ");*/
+ }
+ /* Beginning of utterance. */
+ else if (pe->nfr < pe->wsize) {
+ wstart = 0;
+ wlen = pe->nfr;
+ }
+ /* Normal case, it is what it is. */
+ else {
+ wstart = pe->wstart;
+ wlen = pe->wsize;
+ }
+
+ /* Now (finally) look for the best local estimate. */
+ /* printf("Searching for local estimate in %d frames around %d\n",
+ wlen, pe->nfr + 1 - wlen); */
+ best = pe->period_window[pe->wcur];
+ best_diff = pe->diff_window[pe->wcur][best];
+ for (i = 0; i < wlen; ++i) {
+ int j = wstart + i;
+ int diff;
+
+ j %= pe->wsize;
+ diff = pe->diff_window[j][pe->period_window[j]];
+ /* printf("%.2f,%.2f ", 1.0 - (double)diff/32768,
+ pe->period_window[j] ? 8000.0/pe->period_window[j] : 8000.0); */
+ if (diff < best_diff) {
+ best_diff = diff;
+ best = pe->period_window[j];
+ }
+ }
+ /* printf("best: %.2f, %.2f\n", 1.0 - (double)best_diff/32768,
+ best ? 8000.0/best : 8000.0); */
+ /* If it's the same as the current one then return it. */
+ if (best == pe->period_window[pe->wcur]) {
+ /* Increment the current pointer. */
+ if (++pe->wcur == pe->wsize)
+ pe->wcur = 0;
+ *out_period = best;
+ *out_bestdiff = best_diff;
+ return 1;
+ }
+ /* Otherwise, redo the search inside a narrower range. */
+ search_width = best * pe->search_range / 32768;
+ /* printf("Search width = %d * %.2f = %d\n",
+ best, (double)pe->search_range/32768, search_width); */
+ if (search_width == 0) search_width = 1;
+ low_period = best - search_width;
+ high_period = best + search_width;
+ if (low_period < 0) low_period = 0;
+ if (high_period > pe->frame_size / 2) high_period = pe->frame_size / 2;
+ /* printf("Searching from %d to %d\n", low_period, high_period); */
+ best = thresholded_search(pe->diff_window[pe->wcur],
+ pe->search_threshold,
+ low_period, high_period);
+ best_diff = pe->diff_window[pe->wcur][best];
+
+ if (out_period)
+ *out_period = (best > 65535) ? 65535 : best;
+ if (out_bestdiff)
+ *out_bestdiff = (best_diff > 65535) ? 65535 : best_diff;
+
+ /* Increment the current pointer. */
+ if (++pe->wcur == pe->wsize)
+ pe->wcur = 0;
+ return 1;
+}
--- /dev/null
+noinst_LTLIBRARIES = libsphinxfeat.la
+
+libsphinxfeat_la_SOURCES = \
+ agc.c \
+ cmn.c \
+ cmn_prior.c \
+ lda.c \
+ feat.c
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LIBOBJS = @LIBOBJS@
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libsphinxbase/feat
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libsphinxfeat_la_LIBADD =
+am_libsphinxfeat_la_OBJECTS = agc.lo cmn.lo cmn_prior.lo lda.lo \
+ feat.lo
+libsphinxfeat_la_OBJECTS = $(am_libsphinxfeat_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libsphinxfeat_la_SOURCES)
+DIST_SOURCES = $(libsphinxfeat_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LTLIBRARIES = libsphinxfeat.la
+libsphinxfeat_la_SOURCES = \
+ agc.c \
+ cmn.c \
+ cmn_prior.c \
+ lda.c \
+ feat.c
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libsphinxbase/feat/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/libsphinxbase/feat/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsphinxfeat.la: $(libsphinxfeat_la_OBJECTS) $(libsphinxfeat_la_DEPENDENCIES)
+ $(LINK) $(libsphinxfeat_la_OBJECTS) $(libsphinxfeat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/agc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmn_prior.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lda.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * agc.c -- Various forms of automatic gain control (AGC)
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.5 2005/06/21 19:25:41 arthchan2003
+ * 1, Fixed doxygen documentation. 2, Added $ keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 04-Nov-95 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+#include <string.h>
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/agc.h"
+
+/* NOTE! These must match the enum in agc.h */
+const char *agc_type_str[] = {
+ "none",
+ "max",
+ "emax",
+ "noise"
+};
+static const int n_agc_type_str = sizeof(agc_type_str)/sizeof(agc_type_str[0]);
+
+agc_type_t
+agc_type_from_str(const char *str)
+{
+ int i;
+
+ for (i = 0; i < n_agc_type_str; ++i) {
+ if (0 == strcmp(str, agc_type_str[i]))
+ return (agc_type_t)i;
+ }
+ E_FATAL("Unknown AGC type '%s'\n", str);
+ return AGC_NONE;
+}
+
+agc_t *agc_init(void)
+{
+ agc_t *agc;
+ agc = ckd_calloc(1, sizeof(*agc));
+ agc->noise_thresh = FLOAT2MFCC(2.0);
+
+ return agc;
+}
+
+void agc_free(agc_t *agc)
+{
+ ckd_free(agc);
+}
+
+/**
+ * Normalize c0 for all frames such that max(c0) = 0.
+ */
+void
+agc_max(agc_t *agc, mfcc_t **mfc, int32 n_frame)
+{
+ int32 i;
+
+ if (n_frame <= 0)
+ return;
+ agc->obs_max = mfc[0][0];
+ for (i = 1; i < n_frame; i++) {
+ if (mfc[i][0] > agc->obs_max) {
+ agc->obs_max = mfc[i][0];
+ agc->obs_frame = 1;
+ }
+ }
+
+ E_INFO("AGCMax: obs=max= %.2f\n", agc->obs_max);
+ for (i = 0; i < n_frame; i++)
+ mfc[i][0] -= agc->obs_max;
+}
+
+void
+agc_emax_set(agc_t *agc, float32 m)
+{
+ agc->max = FLOAT2MFCC(m);
+ E_INFO("AGCEMax: max= %.2f\n", m);
+}
+
+float32
+agc_emax_get(agc_t *agc)
+{
+ return MFCC2FLOAT(agc->max);
+}
+
+void
+agc_emax(agc_t *agc, mfcc_t **mfc, int32 n_frame)
+{
+ int i;
+
+ if (n_frame <= 0)
+ return;
+ for (i = 1; i < n_frame; ++i) {
+ if (mfc[i][0] > agc->obs_max) {
+ agc->obs_max = mfc[i][0];
+ agc->obs_frame = 1;
+ }
+ mfc[i][0] -= agc->max;
+ }
+}
+
+/* Update estimated max for next utterance */
+void
+agc_emax_update(agc_t *agc)
+{
+ if (agc->obs_frame) { /* Update only if some data observed */
+ agc->obs_max_sum += agc->obs_max;
+ agc->obs_utt++;
+
+ /* Re-estimate max over past history; decay the history */
+ agc->max = agc->obs_max_sum / agc->obs_utt;
+ if (agc->obs_utt == 8) {
+ agc->obs_max_sum /= 2;
+ agc->obs_utt = 4;
+ }
+ }
+ E_INFO("AGCEMax: obs= %.2f, new= %.2f\n", agc->obs_max, agc->max);
+
+ /* Reset the accumulators for the next utterance. */
+ agc->obs_frame = 0;
+ agc->obs_max = FLOAT2MFCC(-1000.0); /* Less than any real C0 value (hopefully!!) */
+}
+
+void
+agc_noise(agc_t *agc,
+ mfcc_t **cep,
+ int32 nfr)
+{
+ mfcc_t min_energy; /* Minimum log-energy */
+ mfcc_t noise_level; /* Average noise_level */
+ int32 i; /* frame index */
+ int32 noise_frames; /* Number of noise frames */
+
+ /* Determine minimum log-energy in utterance */
+ min_energy = cep[0][0];
+ for (i = 0; i < nfr; ++i) {
+ if (cep[i][0] < min_energy)
+ min_energy = cep[i][0];
+ }
+
+ /* Average all frames between min_energy and min_energy + agc->noise_thresh */
+ noise_frames = 0;
+ noise_level = 0;
+ min_energy += agc->noise_thresh;
+ for (i = 0; i < nfr; ++i) {
+ if (cep[i][0] < min_energy) {
+ noise_level += cep[i][0];
+ noise_frames++;
+ }
+ }
+ noise_level /= noise_frames;
+
+ E_INFO("AGC NOISE: max= %6.3f\n", MFCC2FLOAT(noise_level));
+
+ /* Subtract noise_level from all log_energy values */
+ for (i = 0; i < nfr; ++i)
+ cep[i][0] -= noise_level;
+}
+
+void
+agc_set_threshold(agc_t *agc, float32 threshold)
+{
+ agc->noise_thresh = FLOAT2MFCC(threshold);
+}
+
+float32
+agc_get_threshold(agc_t *agc)
+{
+ return FLOAT2MFCC(agc->noise_thresh);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cmn.c -- Various forms of cepstral mean normalization
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.14 2006/02/24 15:57:47 egouvea
+ * Removed cmn = NULL from the cmn_free(), since it's pointless (my bad!).
+ *
+ * Removed cmn_prior, which was surrounded by #if 0/#endif, since the
+ * function is already in cmn_prior.c
+ *
+ * Revision 1.13 2006/02/23 03:47:49 arthchan2003
+ * Used Evandro's changes. Resolved conflicts.
+ *
+ *
+ * Revision 1.12 2006/02/23 00:48:23 egouvea
+ * Replaced loops resetting vectors with the more efficient memset()
+ *
+ * Revision 1.11 2006/02/22 23:43:55 arthchan2003
+ * Merged from the branch SPHINX3_5_2_RCI_IRII_BRANCH: Put data structure into the cmn_t structure.
+ *
+ * Revision 1.10.4.2 2005/10/17 04:45:57 arthchan2003
+ * Free stuffs in cmn and feat corectly.
+ *
+ * Revision 1.10.4.1 2005/07/05 06:25:08 arthchan2003
+ * Fixed dox-doc.
+ *
+ * Revision 1.10 2005/06/21 19:28:00 arthchan2003
+ * 1, Fixed doxygen documentation. 2, Added $ keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 20.Apr.2001 RAH (rhoughton@mediasite.com, ricky.houghton@cs.cmu.edu)
+ * Added cmn_free() and moved *mean and *var out global space and named them cmn_mean and cmn_var
+ *
+ * 28-Apr-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed the name norm_mean() to cmn().
+ *
+ * 19-Jun-1996 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed to compute CMN over ALL dimensions of cep instead of 1..12.
+ *
+ * 04-Nov-1995 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4244)
+#endif
+
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/cmn.h"
+
+/* NOTE! These must match the enum in cmn.h */
+const char *cmn_type_str[] = {
+ "none",
+ "current",
+ "prior"
+};
+static const int n_cmn_type_str = sizeof(cmn_type_str)/sizeof(cmn_type_str[0]);
+
+cmn_type_t
+cmn_type_from_str(const char *str)
+{
+ int i;
+
+ for (i = 0; i < n_cmn_type_str; ++i) {
+ if (0 == strcmp(str, cmn_type_str[i]))
+ return (cmn_type_t)i;
+ }
+ E_FATAL("Unknown CMN type '%s'\n", str);
+ return CMN_NONE;
+}
+
+cmn_t *
+cmn_init(int32 veclen)
+{
+ cmn_t *cmn;
+ cmn = (cmn_t *) ckd_calloc(1, sizeof(cmn_t));
+ cmn->veclen = veclen;
+ cmn->cmn_mean = (mfcc_t *) ckd_calloc(veclen, sizeof(mfcc_t));
+ cmn->cmn_var = (mfcc_t *) ckd_calloc(veclen, sizeof(mfcc_t));
+ cmn->sum = (mfcc_t *) ckd_calloc(veclen, sizeof(mfcc_t));
+ /* A front-end dependent magic number */
+ cmn->cmn_mean[0] = FLOAT2MFCC(12.0);
+ cmn->nframe = 0;
+ E_INFO("mean[0]= %.2f, mean[1..%d]= 0.0\n",
+ MFCC2FLOAT(cmn->cmn_mean[0]), veclen - 1);
+
+ return cmn;
+}
+
+
+void
+cmn(cmn_t *cmn, mfcc_t ** mfc, int32 varnorm, int32 n_frame)
+{
+ mfcc_t *mfcp;
+ mfcc_t t;
+ int32 i, f;
+
+ assert(mfc != NULL);
+
+ if (n_frame <= 0)
+ return;
+
+ /* If cmn->cmn_mean wasn't NULL, we need to zero the contents */
+ memset(cmn->cmn_mean, 0, cmn->veclen * sizeof(mfcc_t));
+
+ /* Find mean cep vector for this utterance */
+ for (f = 0; f < n_frame; f++) {
+ mfcp = mfc[f];
+ for (i = 0; i < cmn->veclen; i++) {
+ cmn->cmn_mean[i] += mfcp[i];
+ }
+ }
+
+ for (i = 0; i < cmn->veclen; i++)
+ cmn->cmn_mean[i] /= n_frame;
+
+ E_INFO("CMN: ");
+ for (i = 0; i < cmn->veclen; i++)
+ E_INFOCONT("%5.2f ", MFCC2FLOAT(cmn->cmn_mean[i]));
+ E_INFOCONT("\n");
+ if (!varnorm) {
+ /* Subtract mean from each cep vector */
+ for (f = 0; f < n_frame; f++) {
+ mfcp = mfc[f];
+ for (i = 0; i < cmn->veclen; i++)
+ mfcp[i] -= cmn->cmn_mean[i];
+ }
+ }
+ else {
+ /* Scale cep vectors to have unit variance along each dimension, and subtract means */
+ /* If cmn->cmn_var wasn't NULL, we need to zero the contents */
+ memset(cmn->cmn_var, 0, cmn->veclen * sizeof(mfcc_t));
+
+ for (f = 0; f < n_frame; f++) {
+ mfcp = mfc[f];
+
+ for (i = 0; i < cmn->veclen; i++) {
+ t = mfcp[i] - cmn->cmn_mean[i];
+ cmn->cmn_var[i] += MFCCMUL(t, t);
+ }
+ }
+ for (i = 0; i < cmn->veclen; i++)
+ /* Inverse Std. Dev, RAH added type case from sqrt */
+ cmn->cmn_var[i] = FLOAT2MFCC(sqrt((float64)n_frame / MFCC2FLOAT(cmn->cmn_var[i])));
+
+ for (f = 0; f < n_frame; f++) {
+ mfcp = mfc[f];
+ for (i = 0; i < cmn->veclen; i++)
+ mfcp[i] = MFCCMUL((mfcp[i] - cmn->cmn_mean[i]), cmn->cmn_var[i]);
+ }
+ }
+}
+
+/*
+ * RAH, free previously allocated memory
+ */
+void
+cmn_free(cmn_t * cmn)
+{
+ if (cmn != NULL) {
+ if (cmn->cmn_var)
+ ckd_free((void *) cmn->cmn_var);
+
+ if (cmn->cmn_mean)
+ ckd_free((void *) cmn->cmn_mean);
+
+ if (cmn->sum)
+ ckd_free((void *) cmn->sum);
+
+ ckd_free((void *) cmn);
+ }
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*************************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 2000 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * 30-Dec-2000 Rita Singh (rsingh@cs.cmu.edu) at Carnegie Mellon University
+ * Created
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4244)
+#endif
+
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/cmn.h"
+
+void
+cmn_prior_set(cmn_t *cmn, mfcc_t const * vec)
+{
+ int32 i;
+
+ E_INFO("cmn_prior_set: from < ");
+ for (i = 0; i < cmn->veclen; i++)
+ E_INFOCONT("%5.2f ", MFCC2FLOAT(cmn->cmn_mean[i]));
+ E_INFOCONT(">\n");
+
+ for (i = 0; i < cmn->veclen; i++) {
+ cmn->cmn_mean[i] = vec[i];
+ cmn->sum[i] = vec[i] * CMN_WIN;
+ }
+ cmn->nframe = CMN_WIN;
+
+ E_INFO("cmn_prior_set: to < ");
+ for (i = 0; i < cmn->veclen; i++)
+ E_INFOCONT("%5.2f ", MFCC2FLOAT(cmn->cmn_mean[i]));
+ E_INFOCONT(">\n");
+}
+
+void
+cmn_prior_get(cmn_t *cmn, mfcc_t * vec)
+{
+ int32 i;
+
+ for (i = 0; i < cmn->veclen; i++)
+ vec[i] = cmn->cmn_mean[i];
+
+}
+
+static void
+cmn_prior_shiftwin(cmn_t *cmn)
+{
+ mfcc_t sf;
+ int32 i;
+
+ sf = FLOAT2MFCC(1.0) / cmn->nframe;
+ for (i = 0; i < cmn->veclen; i++)
+ cmn->cmn_mean[i] = cmn->sum[i] / cmn->nframe; /* sum[i] * sf */
+
+ /* Make the accumulation decay exponentially */
+ if (cmn->nframe >= CMN_WIN_HWM) {
+ sf = CMN_WIN * sf;
+ for (i = 0; i < cmn->veclen; i++)
+ cmn->sum[i] = MFCCMUL(cmn->sum[i], sf);
+ cmn->nframe = CMN_WIN;
+ }
+}
+
+void
+cmn_prior_update(cmn_t *cmn)
+{
+ mfcc_t sf;
+ int32 i;
+
+ if (cmn->nframe <= 0)
+ return;
+
+ E_INFO("cmn_prior_update: from < ");
+ for (i = 0; i < cmn->veclen; i++)
+ E_INFOCONT("%5.2f ", MFCC2FLOAT(cmn->cmn_mean[i]));
+ E_INFOCONT(">\n");
+
+ /* Update mean buffer */
+ sf = FLOAT2MFCC(1.0) / cmn->nframe;
+ for (i = 0; i < cmn->veclen; i++)
+ cmn->cmn_mean[i] = cmn->sum[i] / cmn->nframe; /* sum[i] * sf; */
+
+ /* Make the accumulation decay exponentially */
+ if (cmn->nframe > CMN_WIN_HWM) {
+ sf = CMN_WIN * sf;
+ for (i = 0; i < cmn->veclen; i++)
+ cmn->sum[i] = MFCCMUL(cmn->sum[i], sf);
+ cmn->nframe = CMN_WIN;
+ }
+
+ E_INFO("cmn_prior_update: to < ");
+ for (i = 0; i < cmn->veclen; i++)
+ E_INFOCONT("%5.2f ", MFCC2FLOAT(cmn->cmn_mean[i]));
+ E_INFOCONT(">\n");
+}
+
+void
+cmn_prior(cmn_t *cmn, mfcc_t **incep, int32 varnorm, int32 nfr)
+{
+ int32 i, j;
+
+ if (varnorm)
+ E_FATAL
+ ("Variance normalization not implemented in live mode decode\n");
+
+ if (nfr <= 0)
+ return;
+
+ for (i = 0; i < nfr; i++) {
+ for (j = 0; j < cmn->veclen; j++) {
+ cmn->sum[j] += incep[i][j];
+ incep[i][j] -= cmn->cmn_mean[j];
+ }
+ ++cmn->nframe;
+ }
+
+ /* Shift buffer down if we have more than CMN_WIN_HWM frames */
+ if (cmn->nframe > CMN_WIN_HWM)
+ cmn_prior_shiftwin(cmn);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * feat.c -- Feature vector description and cepstra->feature computation.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.22 2006/02/23 03:59:40 arthchan2003
+ * Merged from branch SPHINX3_5_2_RCI_IRII_BRANCH: a, Free buffers correctly. b, Fixed dox-doc.
+ *
+ * Revision 1.21.4.3 2005/10/17 04:45:57 arthchan2003
+ * Free stuffs in cmn and feat corectly.
+ *
+ * Revision 1.21.4.2 2005/09/26 02:19:57 arthchan2003
+ * Add message to show the directory which the feature is searched for.
+ *
+ * Revision 1.21.4.1 2005/07/03 22:55:50 arthchan2003
+ * More correct deallocation in feat.c. The cmn deallocation is still not correct at this point.
+ *
+ * Revision 1.21 2005/06/22 03:29:35 arthchan2003
+ * Makefile.am s for all subdirectory of libs3decoder/
+ *
+ * Revision 1.4 2005/04/21 23:50:26 archan
+ * Some more refactoring on the how reporting of structures inside kbcore_t is done, it is now 50% nice. Also added class-based LM test case into test-decode.sh.in. At this moment, everything in search mode 5 is already done. It is time to test the idea whether the search can really be used.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 20.Apr.2001 RAH (rhoughton@mediasite.com, ricky.houghton@cs.cmu.edu)
+ * Adding feat_free() to free allocated memory
+ *
+ * 02-Jan-2001 Rita Singh (rsingh@cs.cmu.edu) at Carnegie Mellon University
+ * Modified feat_s2mfc2feat_block() to handle empty buffers at
+ * the end of an utterance
+ *
+ * 30-Dec-2000 Rita Singh (rsingh@cs.cmu.edu) at Carnegie Mellon University
+ * Added feat_s2mfc2feat_block() to allow feature computation
+ * from sequences of blocks of cepstral vectors
+ *
+ * 12-Jun-98 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Major changes to accommodate arbitrary feature input types. Added
+ * feat_read(), moved various cep2feat functions from other files into
+ * this one. Also, made this module object-oriented with the feat_t type.
+ * Changed definition of s2mfc_read to let the caller manage MFC buffers.
+ *
+ * 03-Oct-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added unistd.h include.
+ *
+ * 02-Oct-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added check for sf argument to s2mfc_read being within file size.
+ *
+ * 18-Sep-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added sf, ef parameters to s2mfc_read().
+ *
+ * 10-Jan-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added feat_cepsize().
+ * Added different feature-handling (s2_4x, s3_1x39 at this point).
+ * Moved feature-dependent functions to feature-dependent files.
+ *
+ * 09-Jan-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Moved constant declarations from feat.h into here.
+ *
+ * 04-Nov-95 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+/*
+ * This module encapsulates different feature streams used by the Sphinx group. New
+ * stream types can be added by augmenting feat_init() and providing an accompanying
+ * compute_feat function. It also provides a "generic" feature vector definition for
+ * handling "arbitrary" speech input feature types (see the last section in feat_init()).
+ * In this case the speech input data should already be feature vectors; no computation,
+ * such as MFC->feature conversion, is available or needed.
+ */
+
+#include <assert.h>
+#include <string.h>
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4244 4996)
+#endif
+
+#include "sphinxbase/fe.h"
+#include "sphinxbase/feat.h"
+#include "sphinxbase/bio.h"
+#include "sphinxbase/pio.h"
+#include "sphinxbase/cmn.h"
+#include "sphinxbase/agc.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/glist.h"
+
+#define FEAT_VERSION "1.0"
+#define FEAT_DCEP_WIN 2
+
+#ifdef DUMP_FEATURES
+static void
+cep_dump_dbg(feat_t *fcb, mfcc_t **mfc, int32 nfr, const char *text)
+{
+ int32 i, j;
+
+ E_INFO("%s\n", text);
+ for (i = 0; i < nfr; i++) {
+ for (j = 0; j < fcb->cepsize; j++) {
+ fprintf(stderr, "%f ", MFCC2FLOAT(mfc[i][j]));
+ }
+ fprintf(stderr, "\n");
+ }
+}
+static void
+feat_print_dbg(feat_t *fcb, mfcc_t ***feat, int32 nfr, const char *text)
+{
+ E_INFO("%s\n", text);
+ feat_print(fcb, feat, nfr, stderr);
+}
+#else /* !DUMP_FEATURES */
+#define cep_dump_dbg(fcb,mfc,nfr,text)
+#define feat_print_dbg(fcb,mfc,nfr,text)
+#endif
+
+int32 **
+parse_subvecs(char const *str)
+{
+ char const *strp;
+ int32 n, n2, l;
+ glist_t dimlist; /* List of dimensions in one subvector */
+ glist_t veclist; /* List of dimlists (subvectors) */
+ int32 **subvec;
+ gnode_t *gn, *gn2;
+
+ veclist = NULL;
+
+ strp = str;
+ for (;;) {
+ dimlist = NULL;
+
+ for (;;) {
+ if (sscanf(strp, "%d%n", &n, &l) != 1)
+ E_FATAL("'%s': Couldn't read int32 @pos %d\n", str,
+ strp - str);
+ strp += l;
+
+ if (*strp == '-') {
+ strp++;
+
+ if (sscanf(strp, "%d%n", &n2, &l) != 1)
+ E_FATAL("'%s': Couldn't read int32 @pos %d\n", str,
+ strp - str);
+ strp += l;
+ }
+ else
+ n2 = n;
+
+ if ((n < 0) || (n > n2))
+ E_FATAL("'%s': Bad subrange spec ending @pos %d\n", str,
+ strp - str);
+
+ for (; n <= n2; n++) {
+ gnode_t *gn;
+ for (gn = dimlist; gn; gn = gnode_next(gn))
+ if (gnode_int32(gn) == n)
+ break;
+ if (gn != NULL)
+ E_FATAL("'%s': Duplicate dimension ending @pos %d\n",
+ str, strp - str);
+
+ dimlist = glist_add_int32(dimlist, n);
+ }
+
+ if ((*strp == '\0') || (*strp == '/'))
+ break;
+
+ if (*strp != ',')
+ E_FATAL("'%s': Bad delimiter @pos %d\n", str, strp - str);
+
+ strp++;
+ }
+
+ veclist = glist_add_ptr(veclist, (void *) dimlist);
+
+ if (*strp == '\0')
+ break;
+
+ assert(*strp == '/');
+ strp++;
+ }
+
+ /* Convert the glists to arrays; remember the glists are in reverse order of the input! */
+ n = glist_count(veclist); /* #Subvectors */
+ subvec = (int32 **) ckd_calloc(n + 1, sizeof(int32 *)); /* +1 for sentinel */
+ subvec[n] = NULL; /* sentinel */
+
+ for (--n, gn = veclist; (n >= 0) && gn; gn = gnode_next(gn), --n) {
+ gn2 = (glist_t) gnode_ptr(gn);
+
+ n2 = glist_count(gn2); /* Length of this subvector */
+ if (n2 <= 0)
+ E_FATAL("'%s': 0-length subvector\n", str);
+
+ subvec[n] = (int32 *) ckd_calloc(n2 + 1, sizeof(int32)); /* +1 for sentinel */
+ subvec[n][n2] = -1; /* sentinel */
+
+ for (--n2; (n2 >= 0) && gn2; gn2 = gnode_next(gn2), --n2)
+ subvec[n][n2] = gnode_int32(gn2);
+ assert((n2 < 0) && (!gn2));
+ }
+ assert((n < 0) && (!gn));
+
+ /* Free the glists */
+ for (gn = veclist; gn; gn = gnode_next(gn)) {
+ gn2 = (glist_t) gnode_ptr(gn);
+ glist_free(gn2);
+ }
+ glist_free(veclist);
+
+ return subvec;
+}
+
+void
+subvecs_free(int32 **subvecs)
+{
+ int32 **sv;
+
+ for (sv = subvecs; sv && *sv; ++sv)
+ ckd_free(*sv);
+ ckd_free(subvecs);
+}
+
+int
+feat_set_subvecs(feat_t *fcb, int32 **subvecs)
+{
+ int32 **sv;
+ int32 n_sv, n_dim, i;
+
+ if (subvecs == NULL) {
+ subvecs_free(fcb->subvecs);
+ ckd_free(fcb->sv_buf);
+ ckd_free(fcb->sv_len);
+ fcb->n_sv = 0;
+ fcb->subvecs = NULL;
+ fcb->sv_len = NULL;
+ fcb->sv_buf = NULL;
+ fcb->sv_dim = 0;
+ return 0;
+ }
+
+ if (fcb->n_stream != 1) {
+ E_ERROR("Subvector specifications require single-stream features!");
+ return -1;
+ }
+
+ n_sv = 0;
+ n_dim = 0;
+ for (sv = subvecs; sv && *sv; ++sv) {
+ int32 *d;
+
+ for (d = *sv; d && *d != -1; ++d) {
+ ++n_dim;
+ }
+ ++n_sv;
+ }
+ if (n_dim > feat_dimension(fcb)) {
+ E_ERROR("Total dimensionality of subvector specification %d "
+ "> feature dimensionality %d\n", n_dim, feat_dimension(fcb));
+ return -1;
+ }
+
+ fcb->n_sv = n_sv;
+ fcb->subvecs = subvecs;
+ fcb->sv_len = ckd_calloc(n_sv, sizeof(*fcb->sv_len));
+ fcb->sv_buf = ckd_calloc(n_dim, sizeof(*fcb->sv_buf));
+ fcb->sv_dim = n_dim;
+ for (i = 0; i < n_sv; ++i) {
+ int32 *d;
+ for (d = subvecs[i]; d && *d != -1; ++d) {
+ ++fcb->sv_len[i];
+ }
+ }
+
+ return 0;
+}
+
+/**
+ * Project feature components to subvectors (if any).
+ */
+static void
+feat_subvec_project(feat_t *fcb, mfcc_t ***inout_feat, uint32 nfr)
+{
+ uint32 i;
+
+ if (fcb->subvecs == NULL)
+ return;
+ for (i = 0; i < nfr; ++i) {
+ mfcc_t *out;
+ int32 j;
+
+ out = fcb->sv_buf;
+ for (j = 0; j < fcb->n_sv; ++j) {
+ int32 *d;
+ for (d = fcb->subvecs[j]; d && *d != -1; ++d) {
+ *out++ = inout_feat[i][0][*d];
+ }
+ }
+ memcpy(inout_feat[i][0], fcb->sv_buf, fcb->sv_dim * sizeof(*fcb->sv_buf));
+ }
+}
+
+mfcc_t ***
+feat_array_alloc(feat_t * fcb, int32 nfr)
+{
+ int32 i, j, k;
+ mfcc_t *data, *d, ***feat;
+
+ assert(fcb);
+ assert(nfr > 0);
+ assert(feat_dimension(fcb) > 0);
+
+ /* Make sure to use the dimensionality of the features *before*
+ LDA and subvector projection. */
+ k = 0;
+ for (i = 0; i < fcb->n_stream; ++i)
+ k += fcb->stream_len[i];
+ assert(k >= feat_dimension(fcb));
+ assert(k >= fcb->sv_dim);
+
+ feat =
+ (mfcc_t ***) ckd_calloc_2d(nfr, feat_dimension1(fcb), sizeof(mfcc_t *));
+ data = (mfcc_t *) ckd_calloc(nfr * k, sizeof(mfcc_t));
+
+ for (i = 0; i < nfr; i++) {
+ d = data + i * k;
+ for (j = 0; j < feat_dimension1(fcb); j++) {
+ feat[i][j] = d;
+ d += feat_dimension2(fcb, j);
+ }
+ }
+
+ return feat;
+}
+
+void
+feat_array_free(mfcc_t ***feat)
+{
+ ckd_free(feat[0][0]);
+ ckd_free_2d((void **)feat);
+}
+
+static void
+feat_s2_4x_cep2feat(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ mfcc_t *f;
+ mfcc_t *w, *_w;
+ mfcc_t *w1, *w_1, *_w1, *_w_1;
+ mfcc_t d1, d2;
+ int32 i, j;
+
+ assert(fcb);
+ assert(feat_cepsize(fcb) == 13);
+ assert(feat_n_stream(fcb) == 4);
+ assert(feat_stream_len(fcb, 0) == 12);
+ assert(feat_stream_len(fcb, 1) == 24);
+ assert(feat_stream_len(fcb, 2) == 3);
+ assert(feat_stream_len(fcb, 3) == 12);
+ assert(feat_window_size(fcb) == 4);
+
+ /* CEP; skip C0 */
+ memcpy(feat[0], mfc[0] + 1, (feat_cepsize(fcb) - 1) * sizeof(mfcc_t));
+
+ /*
+ * DCEP(SHORT): mfc[2] - mfc[-2]
+ * DCEP(LONG): mfc[4] - mfc[-4]
+ */
+ w = mfc[2] + 1; /* +1 to skip C0 */
+ _w = mfc[-2] + 1;
+
+ f = feat[1];
+ for (i = 0; i < feat_cepsize(fcb) - 1; i++) /* Short-term */
+ f[i] = w[i] - _w[i];
+
+ w = mfc[4] + 1; /* +1 to skip C0 */
+ _w = mfc[-4] + 1;
+
+ for (j = 0; j < feat_cepsize(fcb) - 1; i++, j++) /* Long-term */
+ f[i] = w[j] - _w[j];
+
+ /* D2CEP: (mfc[3] - mfc[-1]) - (mfc[1] - mfc[-3]) */
+ w1 = mfc[3] + 1; /* Final +1 to skip C0 */
+ _w1 = mfc[-1] + 1;
+ w_1 = mfc[1] + 1;
+ _w_1 = mfc[-3] + 1;
+
+ f = feat[3];
+ for (i = 0; i < feat_cepsize(fcb) - 1; i++) {
+ d1 = w1[i] - _w1[i];
+ d2 = w_1[i] - _w_1[i];
+
+ f[i] = d1 - d2;
+ }
+
+ /* POW: C0, DC0, D2C0; differences computed as above for rest of cep */
+ f = feat[2];
+ f[0] = mfc[0][0];
+ f[1] = mfc[2][0] - mfc[-2][0];
+
+ d1 = mfc[3][0] - mfc[-1][0];
+ d2 = mfc[1][0] - mfc[-3][0];
+ f[2] = d1 - d2;
+}
+
+
+static void
+feat_s3_1x39_cep2feat(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ mfcc_t *f;
+ mfcc_t *w, *_w;
+ mfcc_t *w1, *w_1, *_w1, *_w_1;
+ mfcc_t d1, d2;
+ int32 i;
+
+ assert(fcb);
+ assert(feat_cepsize(fcb) == 13);
+ assert(feat_n_stream(fcb) == 1);
+ assert(feat_stream_len(fcb, 0) == 39);
+ assert(feat_window_size(fcb) == 3);
+
+ /* CEP; skip C0 */
+ memcpy(feat[0], mfc[0] + 1, (feat_cepsize(fcb) - 1) * sizeof(mfcc_t));
+ /*
+ * DCEP: mfc[2] - mfc[-2];
+ */
+ f = feat[0] + feat_cepsize(fcb) - 1;
+ w = mfc[2] + 1; /* +1 to skip C0 */
+ _w = mfc[-2] + 1;
+
+ for (i = 0; i < feat_cepsize(fcb) - 1; i++)
+ f[i] = w[i] - _w[i];
+
+ /* POW: C0, DC0, D2C0 */
+ f += feat_cepsize(fcb) - 1;
+
+ f[0] = mfc[0][0];
+ f[1] = mfc[2][0] - mfc[-2][0];
+
+ d1 = mfc[3][0] - mfc[-1][0];
+ d2 = mfc[1][0] - mfc[-3][0];
+ f[2] = d1 - d2;
+
+ /* D2CEP: (mfc[3] - mfc[-1]) - (mfc[1] - mfc[-3]) */
+ f += 3;
+
+ w1 = mfc[3] + 1; /* Final +1 to skip C0 */
+ _w1 = mfc[-1] + 1;
+ w_1 = mfc[1] + 1;
+ _w_1 = mfc[-3] + 1;
+
+ for (i = 0; i < feat_cepsize(fcb) - 1; i++) {
+ d1 = w1[i] - _w1[i];
+ d2 = w_1[i] - _w_1[i];
+
+ f[i] = d1 - d2;
+ }
+}
+
+
+static void
+feat_s3_cep(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ assert(fcb);
+ assert(feat_n_stream(fcb) == 1);
+ assert(feat_window_size(fcb) == 0);
+
+ /* CEP */
+ memcpy(feat[0], mfc[0], feat_cepsize(fcb) * sizeof(mfcc_t));
+}
+
+static void
+feat_s3_cep_dcep(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ mfcc_t *f;
+ mfcc_t *w, *_w;
+ int32 i;
+
+ assert(fcb);
+ assert(feat_n_stream(fcb) == 1);
+ assert(feat_stream_len(fcb, 0) == feat_cepsize(fcb) * 2);
+ assert(feat_window_size(fcb) == 2);
+
+ /* CEP */
+ memcpy(feat[0], mfc[0], feat_cepsize(fcb) * sizeof(mfcc_t));
+
+ /*
+ * DCEP: mfc[2] - mfc[-2];
+ */
+ f = feat[0] + feat_cepsize(fcb);
+ w = mfc[2];
+ _w = mfc[-2];
+
+ for (i = 0; i < feat_cepsize(fcb); i++)
+ f[i] = w[i] - _w[i];
+}
+
+static void
+feat_1s_c_d_dd_cep2feat(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ mfcc_t *f;
+ mfcc_t *w, *_w;
+ mfcc_t *w1, *w_1, *_w1, *_w_1;
+ mfcc_t d1, d2;
+ int32 i;
+
+ assert(fcb);
+ assert(feat_n_stream(fcb) == 1);
+ assert(feat_stream_len(fcb, 0) == feat_cepsize(fcb) * 3);
+ assert(feat_window_size(fcb) == FEAT_DCEP_WIN + 1);
+
+ /* CEP */
+ memcpy(feat[0], mfc[0], feat_cepsize(fcb) * sizeof(mfcc_t));
+
+ /*
+ * DCEP: mfc[w] - mfc[-w], where w = FEAT_DCEP_WIN;
+ */
+ f = feat[0] + feat_cepsize(fcb);
+ w = mfc[FEAT_DCEP_WIN];
+ _w = mfc[-FEAT_DCEP_WIN];
+
+ for (i = 0; i < feat_cepsize(fcb); i++)
+ f[i] = w[i] - _w[i];
+
+ /*
+ * D2CEP: (mfc[w+1] - mfc[-w+1]) - (mfc[w-1] - mfc[-w-1]),
+ * where w = FEAT_DCEP_WIN
+ */
+ f += feat_cepsize(fcb);
+
+ w1 = mfc[FEAT_DCEP_WIN + 1];
+ _w1 = mfc[-FEAT_DCEP_WIN + 1];
+ w_1 = mfc[FEAT_DCEP_WIN - 1];
+ _w_1 = mfc[-FEAT_DCEP_WIN - 1];
+
+ for (i = 0; i < feat_cepsize(fcb); i++) {
+ d1 = w1[i] - _w1[i];
+ d2 = w_1[i] - _w_1[i];
+
+ f[i] = d1 - d2;
+ }
+}
+
+static void
+feat_1s_c_d_ld_dd_cep2feat(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ mfcc_t *f;
+ mfcc_t *w, *_w;
+ mfcc_t *w1, *w_1, *_w1, *_w_1;
+ mfcc_t d1, d2;
+ int32 i;
+
+ assert(fcb);
+ assert(feat_n_stream(fcb) == 1);
+ assert(feat_stream_len(fcb, 0) == feat_cepsize(fcb) * 4);
+ assert(feat_window_size(fcb) == FEAT_DCEP_WIN * 2);
+
+ /* CEP */
+ memcpy(feat[0], mfc[0], feat_cepsize(fcb) * sizeof(mfcc_t));
+
+ /*
+ * DCEP: mfc[w] - mfc[-w], where w = FEAT_DCEP_WIN;
+ */
+ f = feat[0] + feat_cepsize(fcb);
+ w = mfc[FEAT_DCEP_WIN];
+ _w = mfc[-FEAT_DCEP_WIN];
+
+ for (i = 0; i < feat_cepsize(fcb); i++)
+ f[i] = w[i] - _w[i];
+
+ /*
+ * LDCEP: mfc[w] - mfc[-w], where w = FEAT_DCEP_WIN * 2;
+ */
+ f += feat_cepsize(fcb);
+ w = mfc[FEAT_DCEP_WIN * 2];
+ _w = mfc[-FEAT_DCEP_WIN * 2];
+
+ for (i = 0; i < feat_cepsize(fcb); i++)
+ f[i] = w[i] - _w[i];
+
+ /*
+ * D2CEP: (mfc[w+1] - mfc[-w+1]) - (mfc[w-1] - mfc[-w-1]),
+ * where w = FEAT_DCEP_WIN
+ */
+ f += feat_cepsize(fcb);
+
+ w1 = mfc[FEAT_DCEP_WIN + 1];
+ _w1 = mfc[-FEAT_DCEP_WIN + 1];
+ w_1 = mfc[FEAT_DCEP_WIN - 1];
+ _w_1 = mfc[-FEAT_DCEP_WIN - 1];
+
+ for (i = 0; i < feat_cepsize(fcb); i++) {
+ d1 = w1[i] - _w1[i];
+ d2 = w_1[i] - _w_1[i];
+
+ f[i] = d1 - d2;
+ }
+}
+
+static void
+feat_copy(feat_t * fcb, mfcc_t ** mfc, mfcc_t ** feat)
+{
+ int32 win, i, j;
+
+ win = feat_window_size(fcb);
+
+ /* Concatenate input features */
+ for (i = -win; i <= win; ++i) {
+ uint32 spos = 0;
+
+ for (j = 0; j < feat_n_stream(fcb); ++j) {
+ uint32 stream_len;
+
+ /* Unscale the stream length by the window. */
+ stream_len = feat_stream_len(fcb, j) / (2 * win + 1);
+ memcpy(feat[j] + ((i + win) * stream_len),
+ mfc[i] + spos,
+ stream_len * sizeof(mfcc_t));
+ spos += stream_len;
+ }
+ }
+}
+
+feat_t *
+feat_init(char const *type, cmn_type_t cmn, int32 varnorm,
+ agc_type_t agc, int32 breport, int32 cepsize)
+{
+ feat_t *fcb;
+
+ if (cepsize == 0)
+ cepsize = 13;
+ if (breport)
+ E_INFO
+ ("Initializing feature stream to type: '%s', ceplen=%d, CMN='%s', VARNORM='%s', AGC='%s'\n",
+ type, cepsize, cmn_type_str[cmn], varnorm ? "yes" : "no", agc_type_str[agc]);
+
+ fcb = (feat_t *) ckd_calloc(1, sizeof(feat_t));
+ fcb->refcount = 1;
+ fcb->name = (char *) ckd_salloc(type);
+ if (strcmp(type, "s2_4x") == 0) {
+ /* Sphinx-II format 4-stream feature (Hack!! hardwired constants below) */
+ if (cepsize != 13) {
+ E_ERROR("s2_4x features require cepsize == 13\n");
+ ckd_free(fcb);
+ return NULL;
+ }
+ fcb->cepsize = 13;
+ fcb->n_stream = 4;
+ fcb->stream_len = (int32 *) ckd_calloc(4, sizeof(int32));
+ fcb->stream_len[0] = 12;
+ fcb->stream_len[1] = 24;
+ fcb->stream_len[2] = 3;
+ fcb->stream_len[3] = 12;
+ fcb->out_dim = 51;
+ fcb->window_size = 4;
+ fcb->compute_feat = feat_s2_4x_cep2feat;
+ }
+ else if ((strcmp(type, "s3_1x39") == 0) || (strcmp(type, "1s_12c_12d_3p_12dd") == 0)) {
+ /* 1-stream cep/dcep/pow/ddcep (Hack!! hardwired constants below) */
+ if (cepsize != 13) {
+ E_ERROR("s2_4x features require cepsize == 13\n");
+ ckd_free(fcb);
+ return NULL;
+ }
+ fcb->cepsize = 13;
+ fcb->n_stream = 1;
+ fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
+ fcb->stream_len[0] = 39;
+ fcb->out_dim = 39;
+ fcb->window_size = 3;
+ fcb->compute_feat = feat_s3_1x39_cep2feat;
+ }
+ else if (strncmp(type, "1s_c_d_dd", 9) == 0) {
+ fcb->cepsize = cepsize;
+ fcb->n_stream = 1;
+ fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
+ fcb->stream_len[0] = cepsize * 3;
+ fcb->out_dim = cepsize * 3;
+ fcb->window_size = FEAT_DCEP_WIN + 1; /* ddcep needs the extra 1 */
+ fcb->compute_feat = feat_1s_c_d_dd_cep2feat;
+ }
+ else if (strncmp(type, "1s_c_d_ld_dd", 12) == 0) {
+ fcb->cepsize = cepsize;
+ fcb->n_stream = 1;
+ fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
+ fcb->stream_len[0] = cepsize * 4;
+ fcb->out_dim = cepsize * 4;
+ fcb->window_size = FEAT_DCEP_WIN * 2;
+ fcb->compute_feat = feat_1s_c_d_ld_dd_cep2feat;
+ }
+ else if (strncmp(type, "cep_dcep", 8) == 0 || strncmp(type, "1s_c_d", 6) == 0) {
+ /* 1-stream cep/dcep */
+ fcb->cepsize = cepsize;
+ fcb->n_stream = 1;
+ fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
+ fcb->stream_len[0] = feat_cepsize(fcb) * 2;
+ fcb->out_dim = fcb->stream_len[0];
+ fcb->window_size = 2;
+ fcb->compute_feat = feat_s3_cep_dcep;
+ }
+ else if (strncmp(type, "cep", 3) == 0 || strncmp(type, "1s_c", 4) == 0) {
+ /* 1-stream cep */
+ fcb->cepsize = cepsize;
+ fcb->n_stream = 1;
+ fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
+ fcb->stream_len[0] = feat_cepsize(fcb);
+ fcb->out_dim = fcb->stream_len[0];
+ fcb->window_size = 0;
+ fcb->compute_feat = feat_s3_cep;
+ }
+ else if (strncmp(type, "1s_3c", 5) == 0 || strncmp(type, "1s_4c", 5) == 0) {
+ /* 1-stream cep with frames concatenated, so called cepwin features */
+ if (strncmp(type, "1s_3c", 5) == 0)
+ fcb->window_size = 3;
+ else
+ fcb->window_size = 4;
+
+ fcb->cepsize = cepsize;
+ fcb->n_stream = 1;
+ fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
+ fcb->stream_len[0] = feat_cepsize(fcb) * (2 * fcb->window_size + 1);
+ fcb->out_dim = fcb->stream_len[0];
+ fcb->compute_feat = feat_copy;
+ }
+ else {
+ int32 i, l, k;
+ char *strp;
+ char *mtype = ckd_salloc(type);
+ char *wd = ckd_salloc(type);
+ /*
+ * Generic definition: Format should be %d,%d,%d,...,%d (i.e.,
+ * comma separated list of feature stream widths; #items =
+ * #streams). An optional window size (frames will be
+ * concatenated) is also allowed, which can be specified with
+ * a colon after the list of feature streams.
+ */
+ l = strlen(mtype);
+ k = 0;
+ for (i = 1; i < l - 1; i++) {
+ if (mtype[i] == ',') {
+ mtype[i] = ' ';
+ k++;
+ }
+ else if (mtype[i] == ':') {
+ mtype[i] = '\0';
+ fcb->window_size = atoi(mtype + i + 1);
+ break;
+ }
+ }
+ k++; /* Presumably there are (#commas+1) streams */
+ fcb->n_stream = k;
+ fcb->stream_len = (int32 *) ckd_calloc(k, sizeof(int32));
+
+ /* Scan individual feature stream lengths */
+ strp = mtype;
+ i = 0;
+ fcb->out_dim = 0;
+ fcb->cepsize = 0;
+ while (sscanf(strp, "%s%n", wd, &l) == 1) {
+ strp += l;
+ if ((i >= fcb->n_stream)
+ || (sscanf(wd, "%d", &(fcb->stream_len[i])) != 1)
+ || (fcb->stream_len[i] <= 0))
+ E_FATAL("Bad feature type argument\n");
+ /* Input size before windowing */
+ fcb->cepsize += fcb->stream_len[i];
+ if (fcb->window_size > 0)
+ fcb->stream_len[i] *= (fcb->window_size * 2 + 1);
+ /* Output size after windowing */
+ fcb->out_dim += fcb->stream_len[i];
+ i++;
+ }
+ if (i != fcb->n_stream)
+ E_FATAL("Bad feature type argument\n");
+ if (fcb->cepsize != cepsize)
+ E_FATAL("Bad feature type argument\n");
+
+ /* Input is already the feature stream */
+ fcb->compute_feat = feat_copy;
+ ckd_free(mtype);
+ ckd_free(wd);
+ }
+
+ if (cmn != CMN_NONE)
+ fcb->cmn_struct = cmn_init(feat_cepsize(fcb));
+ fcb->cmn = cmn;
+ fcb->varnorm = varnorm;
+ if (agc != AGC_NONE) {
+ fcb->agc_struct = agc_init();
+ /*
+ * No need to check if agc is set to EMAX; agc_emax_set() changes only emax related things
+ * Moreover, if agc is not NONE and block mode is used, feat_agc() SILENTLY
+ * switches to EMAX
+ */
+ /* HACK: hardwired initial estimates based on use of CMN (from Sphinx2) */
+ agc_emax_set(fcb->agc_struct, (cmn != CMN_NONE) ? 5.0 : 10.0);
+ }
+ fcb->agc = agc;
+ /*
+ * Make sure this buffer is large enough to be used in feat_s2mfc2feat_block_utt()
+ */
+ fcb->cepbuf = (mfcc_t **) ckd_calloc_2d((LIVEBUFBLOCKSIZE < feat_window_size(fcb) * 2) ? feat_window_size(fcb) * 2 : LIVEBUFBLOCKSIZE,
+ feat_cepsize(fcb),
+ sizeof(mfcc_t));
+ /* This one is actually just an array of pointers to "flatten out"
+ * wraparounds. */
+ fcb->tmpcepbuf = ckd_calloc(2 * feat_window_size(fcb) + 1,
+ sizeof(*fcb->tmpcepbuf));
+
+ return fcb;
+}
+
+
+void
+feat_print(feat_t * fcb, mfcc_t *** feat, int32 nfr, FILE * fp)
+{
+ int32 i, j, k;
+
+ for (i = 0; i < nfr; i++) {
+ fprintf(fp, "%8d:\n", i);
+
+ for (j = 0; j < feat_dimension1(fcb); j++) {
+ fprintf(fp, "\t%2d:", j);
+
+ for (k = 0; k < feat_dimension2(fcb, j); k++)
+ fprintf(fp, " %8.4f", MFCC2FLOAT(feat[i][j][k]));
+ fprintf(fp, "\n");
+ }
+ }
+
+ fflush(fp);
+}
+
+static void
+feat_cmn(feat_t *fcb, mfcc_t **mfc, int32 nfr, int32 beginutt, int32 endutt)
+{
+ cmn_type_t cmn_type = fcb->cmn;
+
+ if (!(beginutt && endutt)
+ && cmn_type != CMN_NONE) /* Only cmn_prior in block computation mode. */
+ cmn_type = CMN_PRIOR;
+
+ switch (cmn_type) {
+ case CMN_CURRENT:
+ cmn(fcb->cmn_struct, mfc, fcb->varnorm, nfr);
+ break;
+ case CMN_PRIOR:
+ cmn_prior(fcb->cmn_struct, mfc, fcb->varnorm, nfr);
+ if (endutt)
+ cmn_prior_update(fcb->cmn_struct);
+ break;
+ default:
+ ;
+ }
+ cep_dump_dbg(fcb, mfc, nfr, "After CMN");
+}
+
+static void
+feat_agc(feat_t *fcb, mfcc_t **mfc, int32 nfr, int32 beginutt, int32 endutt)
+{
+ agc_type_t agc_type = fcb->agc;
+
+ if (!(beginutt && endutt)
+ && agc_type != AGC_NONE) /* Only agc_emax in block computation mode. */
+ agc_type = AGC_EMAX;
+
+ switch (agc_type) {
+ case AGC_MAX:
+ agc_max(fcb->agc_struct, mfc, nfr);
+ break;
+ case AGC_EMAX:
+ agc_emax(fcb->agc_struct, mfc, nfr);
+ if (endutt)
+ agc_emax_update(fcb->agc_struct);
+ break;
+ case AGC_NOISE:
+ agc_noise(fcb->agc_struct, mfc, nfr);
+ break;
+ default:
+ ;
+ }
+ cep_dump_dbg(fcb, mfc, nfr, "After AGC");
+}
+
+static void
+feat_compute_utt(feat_t *fcb, mfcc_t **mfc, int32 nfr, int32 win, mfcc_t ***feat)
+{
+ int32 i;
+
+ cep_dump_dbg(fcb, mfc, nfr, "Incoming features (after padding)");
+
+ /* Create feature vectors */
+ for (i = win; i < nfr - win; i++) {
+ fcb->compute_feat(fcb, mfc + i, feat[i - win]);
+ }
+
+ feat_print_dbg(fcb, feat, nfr - win * 2, "After dynamic feature computation");
+
+ if (fcb->lda) {
+ feat_lda_transform(fcb, feat, nfr - win * 2);
+ feat_print_dbg(fcb, feat, nfr - win * 2, "After LDA");
+ }
+
+ if (fcb->subvecs) {
+ feat_subvec_project(fcb, feat, nfr - win * 2);
+ feat_print_dbg(fcb, feat, nfr - win * 2, "After subvector projection");
+ }
+}
+
+
+/**
+ * Read Sphinx-II format mfc file (s2mfc = Sphinx-II format MFC data).
+ * If out_mfc is NULL, no actual reading will be done, and the number of
+ * frames (plus padding) that would be read is returned.
+ *
+ * It's important that normalization is done before padding because
+ * frames outside the data we are interested in shouldn't be taken
+ * into normalization stats.
+ *
+ * @return # frames read (plus padding) if successful, -1 if
+ * error (e.g., mfc array too small).
+ */
+static int32
+feat_s2mfc_read_norm_pad(feat_t *fcb, char *file, int32 win,
+ int32 sf, int32 ef,
+ mfcc_t ***out_mfc,
+ int32 maxfr,
+ int32 cepsize)
+{
+ FILE *fp;
+ int32 n_float32;
+ float32 *float_feat;
+ struct stat statbuf;
+ int32 i, n, byterev;
+ int32 start_pad, end_pad;
+ mfcc_t **mfc;
+
+ /* Initialize the output pointer to NULL, so that any attempts to
+ free() it if we fail before allocating it will not segfault! */
+ if (out_mfc)
+ *out_mfc = NULL;
+ E_INFO("Reading mfc file: '%s'[%d..%d]\n", file, sf, ef);
+ if (ef >= 0 && ef <= sf) {
+ E_ERROR("%s: End frame (%d) <= Start frame (%d)\n", file, ef, sf);
+ return -1;
+ }
+
+ /* Find filesize; HACK!! To get around intermittent NFS failures, use stat_retry */
+ if ((stat_retry(file, &statbuf) < 0)
+ || ((fp = fopen(file, "rb")) == NULL)) {
+ E_ERROR("Failed to open file '%s' for reading: %s\n", file, strerror(errno));
+ return -1;
+ }
+
+ /* Read #floats in header */
+ if (fread_retry(&n_float32, sizeof(int32), 1, fp) != 1) {
+ E_ERROR("%s: fread(#floats) failed\n", file);
+ fclose(fp);
+ return -1;
+ }
+
+ /* Check if n_float32 matches file size */
+ byterev = 0;
+ if ((int32) (n_float32 * sizeof(float32) + 4) != (int32) statbuf.st_size) { /* RAH, typecast both sides to remove compile warning */
+ n = n_float32;
+ SWAP_INT32(&n);
+
+ if ((int32) (n * sizeof(float32) + 4) != (int32) (statbuf.st_size)) { /* RAH, typecast both sides to remove compile warning */
+ E_ERROR
+ ("%s: Header size field: %d(%08x); filesize: %d(%08x)\n",
+ file, n_float32, n_float32, statbuf.st_size,
+ statbuf.st_size);
+ fclose(fp);
+ return -1;
+ }
+
+ n_float32 = n;
+ byterev = 1;
+ }
+ if (n_float32 <= 0) {
+ E_ERROR("%s: Header size field (#floats) = %d\n", file, n_float32);
+ fclose(fp);
+ return -1;
+ }
+
+ /* Convert n to #frames of input */
+ n = n_float32 / cepsize;
+ if (n * cepsize != n_float32) {
+ E_ERROR("Header size field: %d; not multiple of %d\n", n_float32,
+ cepsize);
+ fclose(fp);
+ return -1;
+ }
+
+ /* Check start and end frames */
+ if (sf > 0) {
+ if (sf >= n) {
+ E_ERROR("%s: Start frame (%d) beyond file size (%d)\n", file,
+ sf, n);
+ fclose(fp);
+ return -1;
+ }
+ }
+ if (ef < 0)
+ ef = n-1;
+ else if (ef >= n) {
+ E_WARN("%s: End frame (%d) beyond file size (%d), will truncate\n",
+ file, ef, n);
+ ef = n-1;
+ }
+
+ /* Add window to start and end frames */
+ sf -= win;
+ ef += win;
+ if (sf < 0) {
+ start_pad = -sf;
+ sf = 0;
+ }
+ else
+ start_pad = 0;
+ if (ef >= n) {
+ end_pad = ef - n + 1;
+ ef = n - 1;
+ }
+ else
+ end_pad = 0;
+
+ /* Limit n if indicated by [sf..ef] */
+ if ((ef - sf + 1) < n)
+ n = (ef - sf + 1);
+ if (maxfr > 0 && n + start_pad + end_pad > maxfr) {
+ E_ERROR("%s: Maximum output size(%d frames) < actual #frames(%d)\n",
+ file, maxfr, n + start_pad + end_pad);
+ fclose(fp);
+ return -1;
+ }
+
+ /* If no output buffer was supplied, then skip the actual data reading. */
+ if (out_mfc != NULL) {
+ /* Position at desired start frame and read actual MFC data */
+ mfc = (mfcc_t **)ckd_calloc_2d(n + start_pad + end_pad, cepsize, sizeof(mfcc_t));
+ if (sf > 0)
+ fseek(fp, sf * cepsize * sizeof(float32), SEEK_CUR);
+ n_float32 = n * cepsize;
+#ifdef FIXED_POINT
+ float_feat = ckd_calloc(n_float32, sizeof(float32));
+#else
+ float_feat = mfc[start_pad];
+#endif
+ if (fread_retry(float_feat, sizeof(float32), n_float32, fp) != n_float32) {
+ E_ERROR("%s: fread(%dx%d) (MFC data) failed\n", file, n, cepsize);
+ ckd_free_2d(mfc);
+ fclose(fp);
+ return -1;
+ }
+ if (byterev) {
+ for (i = 0; i < n_float32; i++) {
+ SWAP_FLOAT32(&float_feat[i]);
+ }
+ }
+#ifdef FIXED_POINT
+ for (i = 0; i < n_float32; ++i) {
+ mfc[start_pad][i] = FLOAT2MFCC(float_feat[i]);
+ }
+ ckd_free(float_feat);
+#endif
+
+ /* Normalize */
+ feat_cmn(fcb, mfc + start_pad, n, 1, 1);
+ feat_agc(fcb, mfc + start_pad, n, 1, 1);
+
+ /* Replicate start and end frames if necessary. */
+ for (i = 0; i < start_pad; ++i)
+ memcpy(mfc[i], mfc[start_pad], cepsize * sizeof(mfcc_t));
+ for (i = 0; i < end_pad; ++i)
+ memcpy(mfc[start_pad + n + i], mfc[start_pad + n - 1],
+ cepsize * sizeof(mfcc_t));
+
+ *out_mfc = mfc;
+ }
+
+ fclose(fp);
+ return n + start_pad + end_pad;
+}
+
+
+
+int32
+feat_s2mfc2feat(feat_t * fcb, const char *file, const char *dir, const char *cepext,
+ int32 sf, int32 ef, mfcc_t *** feat, int32 maxfr)
+{
+ char *path;
+ char *ps = "/";
+ int32 win, nfr;
+ int32 file_length, cepext_length, path_length = 0;
+ mfcc_t **mfc;
+
+ if (fcb->cepsize <= 0) {
+ E_ERROR("Bad cepsize: %d\n", fcb->cepsize);
+ return -1;
+ }
+
+ if (cepext == NULL)
+ cepext = "";
+
+ /*
+ * Create mfc filename, combining file, dir and extension if
+ * necessary
+ */
+
+ /*
+ * First we decide about the path. If dir is defined, then use
+ * it. Otherwise assume the filename already contains the path.
+ */
+ if (dir == NULL) {
+ dir = "";
+ ps = "";
+ /*
+ * This is not true but some 3rd party apps
+ * may parse the output explicitly checking for this line
+ */
+ E_INFO("At directory . (current directory)\n");
+ }
+ else {
+ E_INFO("At directory %s\n", dir);
+ /*
+ * Do not forget the path separator!
+ */
+ path_length += strlen(dir) + 1;
+ }
+
+ /*
+ * Include cepext, if it's not already part of the filename.
+ */
+ file_length = strlen(file);
+ cepext_length = strlen(cepext);
+ if ((file_length > cepext_length)
+ && (strcmp(file + file_length - cepext_length, cepext) == 0)) {
+ cepext = "";
+ cepext_length = 0;
+ }
+
+ /*
+ * Do not forget the '\0'
+ */
+ path_length += file_length + cepext_length + 1;
+ path = (char*) ckd_calloc(path_length, sizeof(char));
+
+#ifdef HAVE_SNPRINTF
+ /*
+ * Paranoia is our best friend...
+ */
+ while ((file_length = snprintf(path, path_length, "%s%s%s%s", dir, ps, file, cepext)) > path_length) {
+ path_length = file_length;
+ path = (char*) ckd_realloc(path, path_length * sizeof(char));
+ }
+#else
+ sprintf(path, "%s%s%s%s", dir, ps, file, cepext);
+#endif
+
+ win = feat_window_size(fcb);
+ /* Pad maxfr with win, so we read enough raw feature data to
+ * calculate the requisite number of dynamic features. */
+ if (maxfr >= 0)
+ maxfr += win * 2;
+
+ if (feat != NULL) {
+ /* Read mfc file including window or padding if necessary. */
+ nfr = feat_s2mfc_read_norm_pad(fcb, path, win, sf, ef, &mfc, maxfr, fcb->cepsize);
+ ckd_free(path);
+ if (nfr < 0) {
+ ckd_free_2d((void **) mfc);
+ return -1;
+ }
+
+ /* Actually compute the features */
+ feat_compute_utt(fcb, mfc, nfr, win, feat);
+
+ ckd_free_2d((void **) mfc);
+ }
+ else {
+ /* Just calculate the number of frames we would need. */
+ nfr = feat_s2mfc_read_norm_pad(fcb, path, win, sf, ef, NULL, maxfr, fcb->cepsize);
+ ckd_free(path);
+ if (nfr < 0)
+ return nfr;
+ }
+
+
+ return (nfr - win * 2);
+}
+
+static int32
+feat_s2mfc2feat_block_utt(feat_t * fcb, mfcc_t ** uttcep,
+ int32 nfr, mfcc_t *** ofeat)
+{
+ mfcc_t **cepbuf;
+ int32 i, win, cepsize;
+
+ win = feat_window_size(fcb);
+ cepsize = feat_cepsize(fcb);
+
+ /* Copy and pad out the utterance (this requires that the
+ * feature computation functions always access the buffer via
+ * the frame pointers, which they do) */
+ cepbuf = ckd_calloc(nfr + win * 2, sizeof(mfcc_t *));
+ memcpy(cepbuf + win, uttcep, nfr * sizeof(mfcc_t *));
+
+ /* Do normalization before we interpolate on the boundary */
+ feat_cmn(fcb, cepbuf + win, nfr, 1, 1);
+ feat_agc(fcb, cepbuf + win, nfr, 1, 1);
+
+ /* Now interpolate */
+ for (i = 0; i < win; ++i) {
+ cepbuf[i] = fcb->cepbuf[i];
+ memcpy(cepbuf[i], uttcep[0], cepsize * sizeof(mfcc_t));
+ cepbuf[nfr + win + i] = fcb->cepbuf[win + i];
+ memcpy(cepbuf[nfr + win + i], uttcep[nfr - 1], cepsize * sizeof(mfcc_t));
+ }
+ /* Compute as usual. */
+ feat_compute_utt(fcb, cepbuf, nfr + win * 2, win, ofeat);
+ ckd_free(cepbuf);
+ return nfr;
+}
+
+int32
+feat_s2mfc2feat_live(feat_t * fcb, mfcc_t ** uttcep, int32 *inout_ncep,
+ int32 beginutt, int32 endutt, mfcc_t *** ofeat)
+{
+ int32 win, cepsize, nbufcep;
+ int32 i, j, nfeatvec;
+ int32 zero = 0;
+
+ /* Avoid having to check this everywhere. */
+ if (inout_ncep == NULL) inout_ncep = &zero;
+
+ /* Special case for entire utterances. */
+ if (beginutt && endutt && *inout_ncep > 0)
+ return feat_s2mfc2feat_block_utt(fcb, uttcep, *inout_ncep, ofeat);
+
+ win = feat_window_size(fcb);
+ cepsize = feat_cepsize(fcb);
+
+ /* Empty the input buffer on start of utterance. */
+ if (beginutt)
+ fcb->bufpos = fcb->curpos;
+
+ /* Calculate how much data is in the buffer already. */
+ nbufcep = fcb->bufpos - fcb->curpos;
+ if (nbufcep < 0)
+ nbufcep = fcb->bufpos + LIVEBUFBLOCKSIZE - fcb->curpos;
+ /* Add any data that we have to replicate. */
+ if (beginutt && *inout_ncep > 0)
+ nbufcep += win;
+ if (endutt)
+ nbufcep += win;
+
+ /* Only consume as much input as will fit in the buffer. */
+ if (nbufcep + *inout_ncep > LIVEBUFBLOCKSIZE) {
+ /* We also can't overwrite the trailing window, hence the
+ * reason why win is subtracted here. */
+ *inout_ncep = LIVEBUFBLOCKSIZE - nbufcep - win;
+ /* Cancel end of utterance processing. */
+ endutt = FALSE;
+ }
+
+ /* FIXME: Don't modify the input! */
+ feat_cmn(fcb, uttcep, *inout_ncep, beginutt, endutt);
+ feat_agc(fcb, uttcep, *inout_ncep, beginutt, endutt);
+
+ /* Replicate first frame into the first win frames if we're at the
+ * beginning of the utterance and there was some actual input to
+ * deal with. (FIXME: Not entirely sure why that condition) */
+ if (beginutt && *inout_ncep > 0) {
+ for (i = 0; i < win; i++) {
+ memcpy(fcb->cepbuf[fcb->bufpos++], uttcep[0],
+ cepsize * sizeof(mfcc_t));
+ fcb->bufpos %= LIVEBUFBLOCKSIZE;
+ }
+ /* Move the current pointer past this data. */
+ fcb->curpos = fcb->bufpos;
+ nbufcep -= win;
+ }
+
+ /* Copy in frame data to the circular buffer. */
+ for (i = 0; i < *inout_ncep; ++i) {
+ memcpy(fcb->cepbuf[fcb->bufpos++], uttcep[i],
+ cepsize * sizeof(mfcc_t));
+ fcb->bufpos %= LIVEBUFBLOCKSIZE;
+ ++nbufcep;
+ }
+
+ /* Replicate last frame into the last win frames if we're at the
+ * end of the utterance (even if there was no input, so we can
+ * flush the output). */
+ if (endutt) {
+ int32 tpos; /* Index of last input frame. */
+ if (fcb->bufpos == 0)
+ tpos = LIVEBUFBLOCKSIZE - 1;
+ else
+ tpos = fcb->bufpos - 1;
+ for (i = 0; i < win; ++i) {
+ memcpy(fcb->cepbuf[fcb->bufpos++], fcb->cepbuf[tpos],
+ cepsize * sizeof(mfcc_t));
+ fcb->bufpos %= LIVEBUFBLOCKSIZE;
+ }
+ }
+
+ /* We have to leave the trailing window of frames. */
+ nfeatvec = nbufcep - win;
+ if (nfeatvec <= 0)
+ return 0; /* Do nothing. */
+
+ for (i = 0; i < nfeatvec; ++i) {
+ /* Handle wraparound cases. */
+ if (fcb->curpos - win < 0 || fcb->curpos + win >= LIVEBUFBLOCKSIZE) {
+ /* Use tmpcepbuf for this case. Actually, we just need the pointers. */
+ for (j = -win; j <= win; ++j) {
+ int32 tmppos =
+ (fcb->curpos + j + LIVEBUFBLOCKSIZE) % LIVEBUFBLOCKSIZE;
+ fcb->tmpcepbuf[win + j] = fcb->cepbuf[tmppos];
+ }
+ fcb->compute_feat(fcb, fcb->tmpcepbuf + win, ofeat[i]);
+ }
+ else {
+ fcb->compute_feat(fcb, fcb->cepbuf + fcb->curpos, ofeat[i]);
+ }
+ /* Move the read pointer forward. */
+ ++fcb->curpos;
+ fcb->curpos %= LIVEBUFBLOCKSIZE;
+ }
+
+ if (fcb->lda)
+ feat_lda_transform(fcb, ofeat, nfeatvec);
+
+ if (fcb->subvecs)
+ feat_subvec_project(fcb, ofeat, nfeatvec);
+
+ return nfeatvec;
+}
+
+feat_t *
+feat_retain(feat_t *f)
+{
+ ++f->refcount;
+ return f;
+}
+
+int
+feat_free(feat_t * f)
+{
+ if (f == NULL)
+ return 0;
+ if (--f->refcount > 0)
+ return f->refcount;
+
+ if (f->cepbuf)
+ ckd_free_2d((void **) f->cepbuf);
+ ckd_free(f->tmpcepbuf);
+
+ if (f->name) {
+ ckd_free((void *) f->name);
+ }
+ if (f->lda)
+ ckd_free_3d((void ***) f->lda);
+
+ ckd_free(f->stream_len);
+ ckd_free(f->sv_len);
+ ckd_free(f->sv_buf);
+ subvecs_free(f->subvecs);
+
+ cmn_free(f->cmn_struct);
+ agc_free(f->agc_struct);
+
+ ckd_free(f);
+ return 0;
+}
+
+
+void
+feat_report(feat_t * f)
+{
+ int i;
+ E_INFO_NOFN("Initialization of feat_t, report:\n");
+ E_INFO_NOFN("Feature type = %s\n", f->name);
+ E_INFO_NOFN("Cepstral size = %d\n", f->cepsize);
+ E_INFO_NOFN("Number of streams = %d\n", f->n_stream);
+ for (i = 0; i < f->n_stream; i++) {
+ E_INFO_NOFN("Vector size of stream[%d]: %d\n", i,
+ f->stream_len[i]);
+ }
+ E_INFO_NOFN("Number of subvectors = %d\n", f->n_sv);
+ for (i = 0; i < f->n_sv; i++) {
+ int32 *sv;
+
+ E_INFO_NOFN("Components of subvector[%d]:", i);
+ for (sv = f->subvecs[i]; sv && *sv != -1; ++sv)
+ E_INFOCONT(" %d", *sv);
+ E_INFOCONT("\n");
+ }
+ E_INFO_NOFN("Whether CMN is used = %d\n", f->cmn);
+ E_INFO_NOFN("Whether AGC is used = %d\n", f->agc);
+ E_INFO_NOFN("Whether variance is normalized = %d\n", f->varnorm);
+ E_INFO_NOFN("\n");
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * lda.c -- Read and apply LDA matrices to features.
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include <assert.h>
+#include <string.h>
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4018)
+#endif
+
+#include "sphinxbase/feat.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/bio.h"
+#include "sphinxbase/err.h"
+
+#define MATRIX_FILE_VERSION "0.1"
+
+int32
+feat_read_lda(feat_t *feat, const char *ldafile, int32 dim)
+{
+ FILE *fh;
+ int32 byteswap, chksum_present;
+ uint32 chksum, i, m, n;
+ char **argname, **argval;
+
+ assert(feat);
+ if (feat->n_stream != 1) {
+ E_ERROR("LDA incompatible with multi-stream features (n_stream = %d)\n",
+ feat->n_stream);
+ return -1;
+ }
+
+ if ((fh = fopen(ldafile, "rb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open transform file '%s' for reading: %s\n", ldafile, strerror(errno));
+ return -1;
+ }
+
+ if (bio_readhdr(fh, &argname, &argval, &byteswap) < 0) {
+ E_ERROR("Failed to read header from transform file '%s'\n", ldafile);
+ fclose(fh);
+ return -1;
+ }
+
+ chksum_present = 0;
+ for (i = 0; argname[i]; i++) {
+ if (strcmp(argname[i], "version") == 0) {
+ if (strcmp(argval[i], MATRIX_FILE_VERSION) != 0)
+ E_WARN("%s: Version mismatch: %s, expecting %s\n",
+ ldafile, argval[i], MATRIX_FILE_VERSION);
+ }
+ else if (strcmp(argname[i], "chksum0") == 0) {
+ chksum_present = 1; /* Ignore the associated value */
+ }
+ }
+
+ bio_hdrarg_free(argname, argval);
+ argname = argval = NULL;
+
+ chksum = 0;
+
+ if (feat->lda)
+ ckd_free_3d((void ***)feat->lda);
+
+ {
+ /* Use a temporary variable to avoid strict-aliasing problems. */
+ void ***outlda;
+
+ if (bio_fread_3d(&outlda, sizeof(float32),
+ &feat->n_lda, &m, &n,
+ fh, byteswap, &chksum) < 0) {
+ E_ERROR_SYSTEM("%s: bio_fread_3d(lda) failed\n", ldafile);
+ fclose(fh);
+ return -1;
+ }
+ feat->lda = (void *)outlda;
+ }
+ fclose(fh);
+
+#ifdef FIXED_POINT
+ /* FIXME: This is a fragile hack that depends on mfcc_t and
+ * float32 being the same size (which they are, but...) */
+ for (i = 0; i < feat->n_lda * m * n; ++i) {
+ feat->lda[0][0][i] = FLOAT2MFCC(((float *)feat->lda[0][0])[i]);
+ }
+#endif
+
+ /* Note that SphinxTrain stores the eigenvectors as row vectors. */
+ if (n != feat->stream_len[0])
+ E_FATAL("LDA matrix dimension %d doesn't match feature stream size %d\n", n, feat->stream_len[0]);
+
+ /* Override dim from file if it is 0 or greater than m. */
+ if (dim > m || dim <= 0) {
+ dim = m;
+ }
+ feat->out_dim = dim;
+
+ return 0;
+}
+
+void
+feat_lda_transform(feat_t *fcb, mfcc_t ***inout_feat, uint32 nfr)
+{
+ mfcc_t *tmp;
+ uint32 i, j, k;
+
+ tmp = ckd_calloc(fcb->stream_len[0], sizeof(mfcc_t));
+ for (i = 0; i < nfr; ++i) {
+ /* Do the matrix multiplication inline here since fcb->lda
+ * is transposed (eigenvectors in rows not columns). */
+ /* FIXME: In the future we ought to use the BLAS. */
+ memset(tmp, 0, sizeof(mfcc_t) * fcb->stream_len[0]);
+ for (j = 0; j < feat_dimension(fcb); ++j) {
+ for (k = 0; k < fcb->stream_len[0]; ++k) {
+ tmp[j] += MFCCMUL(inout_feat[i][0][k], fcb->lda[0][j][k]);
+ }
+ }
+ memcpy(inout_feat[i][0], tmp, fcb->stream_len[0] * sizeof(mfcc_t));
+ }
+ ckd_free(tmp);
+}
--- /dev/null
+noinst_LTLIBRARIES = libsphinxlm.la
+
+AM_YFLAGS = -d
+BUILT_SOURCES = jsgf_parser.h
+
+libsphinxlm_la_SOURCES = \
+ lm3g_model.c \
+ ngram_model.c \
+ ngram_model_arpa.c \
+ ngram_model_dmp.c \
+ ngram_model_dmp32.c \
+ ngram_model_set.c \
+ fsg_model.c \
+ jsgf.c \
+ jsgf_scanner.c \
+ jsgf_parser.y
+
+libsphinxlm_la_LIBADD = $(LTLIBICONV)
+
+noinst_HEADERS = ngram_model_internal.h \
+ ngram_model_dmp.h \
+ ngram_model_set.h \
+ ngram_model_arpa.h \
+ lm3g_model.h \
+ jsgf_internal.h \
+ jsgf_scanner.h \
+ jsgf_parser.h
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+# Nobody has the version of Flex needed to regenerate the scanner, so
+# we can't give it a name that would induce Make to try to build it.
+# Hence the underscore. Sorry folks.
+EXTRA_DIST = _jsgf_scanner.l \
+ lm3g_templates.c
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libsphinxbase/lm
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in jsgf_parser.c jsgf_parser.h
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libsphinxlm_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libsphinxlm_la_OBJECTS = lm3g_model.lo ngram_model.lo \
+ ngram_model_arpa.lo ngram_model_dmp.lo ngram_model_dmp32.lo \
+ ngram_model_set.lo fsg_model.lo jsgf.lo jsgf_scanner.lo \
+ jsgf_parser.lo
+libsphinxlm_la_OBJECTS = $(am_libsphinxlm_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
+YLWRAP = $(top_srcdir)/ylwrap
+SOURCES = $(libsphinxlm_la_SOURCES)
+DIST_SOURCES = $(libsphinxlm_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LTLIBRARIES = libsphinxlm.la
+AM_YFLAGS = -d
+BUILT_SOURCES = jsgf_parser.h
+libsphinxlm_la_SOURCES = \
+ lm3g_model.c \
+ ngram_model.c \
+ ngram_model_arpa.c \
+ ngram_model_dmp.c \
+ ngram_model_dmp32.c \
+ ngram_model_set.c \
+ fsg_model.c \
+ jsgf.c \
+ jsgf_scanner.c \
+ jsgf_parser.y
+
+libsphinxlm_la_LIBADD = $(LTLIBICONV)
+noinst_HEADERS = ngram_model_internal.h \
+ ngram_model_dmp.h \
+ ngram_model_set.h \
+ ngram_model_arpa.h \
+ lm3g_model.h \
+ jsgf_internal.h \
+ jsgf_scanner.h \
+ jsgf_parser.h
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+
+# Nobody has the version of Flex needed to regenerate the scanner, so
+# we can't give it a name that would induce Make to try to build it.
+# Hence the underscore. Sorry folks.
+EXTRA_DIST = _jsgf_scanner.l \
+ lm3g_templates.c
+
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj .y
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libsphinxbase/lm/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/libsphinxbase/lm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+jsgf_parser.h: jsgf_parser.c
+ @if test ! -f $@; then \
+ rm -f jsgf_parser.c; \
+ $(MAKE) $(AM_MAKEFLAGS) jsgf_parser.c; \
+ else :; fi
+libsphinxlm.la: $(libsphinxlm_la_OBJECTS) $(libsphinxlm_la_DEPENDENCIES)
+ $(LINK) $(libsphinxlm_la_OBJECTS) $(libsphinxlm_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsg_model.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jsgf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jsgf_parser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jsgf_scanner.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm3g_model.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ngram_model.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ngram_model_arpa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ngram_model_dmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ngram_model_dmp32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ngram_model_set.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+.y.c:
+ $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -rm -f jsgf_parser.c
+ -rm -f jsgf_parser.h
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+/* -*- mode: text -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/* YOU MUST USE FLEX 2.5.33 OR NEWER TO PROCESS THIS FILE!!! */
+%{
+
+#include "jsgf_internal.h"
+#include "jsgf_parser.h"
+
+%}
+
+%option 8bit reentrant bison-bridge noyywrap
+%option header-file="jsgf_scanner.h"
+%s COMMENT
+
+ws [ \t\r\n]
+rulename \<[^<>]+\>
+tag \{(\\.|[^\}]+)*\}
+weight \/[0-9]*(\.[0-9]+)?\/
+token [^ \t\n;=|*+<>()\[\]{}*/]+
+qstring \"(\\.|[^"]+)*\"
+bom [\xEF][\xBB][\xBF]
+
+%%
+
+{ws} ; /* ignore whitespace */
+<INITIAL>\/\/.*\n ; /* single-line comments */
+<INITIAL>\/\* { BEGIN(COMMENT); } /* C-style comments */
+<COMMENT>\*\/ { BEGIN(INITIAL); }
+<COMMENT>. ; /* Ignore stuff in comment mode */
+
+<INITIAL>{bom}?#JSGF return HEADER;
+<INITIAL>grammar return GRAMMAR;
+<INITIAL>import return IMPORT;
+<INITIAL>public return PUBLIC;
+
+<INITIAL>{rulename} { yylval->name = strdup(yytext); return RULENAME; }
+<INITIAL>{tag} { yylval->name = strdup(yytext); return TAG; }
+<INITIAL>{token} { yylval->name = strdup(yytext); return TOKEN; }
+<INITIAL>{qstring} { yylval->name = strdup(yytext); return TOKEN; }
+<INITIAL>{weight} { yylval->weight = atof_c(yytext+1); return WEIGHT; }
+
+<INITIAL>. return yytext[0]; /* Single-character tokens */
+
+%%
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/* System headers. */
+#ifdef _WIN32_WCE
+/*MC in a debug build it's implicitly included by assert.h
+ but you need this in a release build */
+#include <windows.h>
+#else
+#include <time.h>
+#endif /* _WIN32_WCE */
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* SphinxBase headers. */
+#include "sphinxbase/err.h"
+#include "sphinxbase/pio.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/hash_table.h"
+#include "sphinxbase/fsg_model.h"
+
+/**
+ * Adjacency list (opaque) for a state in an FSG.
+ *
+ * Actually we use hash tables so that random access is a bit faster.
+ * Plus it allows us to make the lookup code a bit less ugly.
+ */
+
+struct trans_list_s {
+ hash_table_t *null_trans; /* Null transitions keyed by state. */
+ hash_table_t *trans; /* Lists of non-null transitions keyed by state. */
+};
+
+/**
+ * Implementation of arc iterator.
+ */
+struct fsg_arciter_s {
+ hash_iter_t *itor, *null_itor;
+ gnode_t *gn;
+};
+
+#define FSG_MODEL_BEGIN_DECL "FSG_BEGIN"
+#define FSG_MODEL_END_DECL "FSG_END"
+#define FSG_MODEL_N_DECL "N"
+#define FSG_MODEL_NUM_STATES_DECL "NUM_STATES"
+#define FSG_MODEL_S_DECL "S"
+#define FSG_MODEL_START_STATE_DECL "START_STATE"
+#define FSG_MODEL_F_DECL "F"
+#define FSG_MODEL_FINAL_STATE_DECL "FINAL_STATE"
+#define FSG_MODEL_T_DECL "T"
+#define FSG_MODEL_TRANSITION_DECL "TRANSITION"
+#define FSG_MODEL_COMMENT_CHAR '#'
+
+
+static int32
+nextline_str2words(FILE * fp, int32 * lineno,
+ char **lineptr, char ***wordptr)
+{
+ for (;;) {
+ size_t len;
+ int32 n;
+
+ ckd_free(*lineptr);
+ if ((*lineptr = fread_line(fp, &len)) == NULL)
+ return -1;
+
+ (*lineno)++;
+
+ if ((*lineptr)[0] == FSG_MODEL_COMMENT_CHAR)
+ continue; /* Skip comment lines */
+
+ n = str2words(*lineptr, NULL, 0);
+ if (n == 0)
+ continue; /* Skip blank lines */
+
+ /* Abuse of realloc(), but this doesn't have to be fast. */
+ if (*wordptr == NULL)
+ *wordptr = ckd_calloc(n, sizeof(**wordptr));
+ else
+ *wordptr = ckd_realloc(*wordptr, n * sizeof(**wordptr));
+ return str2words(*lineptr, *wordptr, n);
+ }
+}
+
+void
+fsg_model_trans_add(fsg_model_t * fsg,
+ int32 from, int32 to, int32 logp, int32 wid)
+{
+ fsg_link_t *link;
+ glist_t gl;
+ gnode_t *gn;
+
+ if (fsg->trans[from].trans == NULL)
+ fsg->trans[from].trans = hash_table_new(5, HASH_CASE_YES);
+
+ /* Check for duplicate link (i.e., link already exists with label=wid) */
+ for (gn = gl = fsg_model_trans(fsg, from, to); gn; gn = gnode_next(gn)) {
+ link = (fsg_link_t *) gnode_ptr(gn);
+ if (link->wid == wid) {
+ if (link->logs2prob < logp)
+ link->logs2prob = logp;
+ return;
+ }
+ }
+
+ /* Create transition object */
+ link = listelem_malloc(fsg->link_alloc);
+ link->from_state = from;
+ link->to_state = to;
+ link->logs2prob = logp;
+ link->wid = wid;
+
+ /* Add it to the list of transitions and update the hash table */
+ gl = glist_add_ptr(gl, (void *)link);
+ hash_table_replace_bkey(fsg->trans[from].trans,
+ (char const *)&link->to_state,
+ sizeof(link->to_state), gl);
+}
+
+int32
+fsg_model_tag_trans_add(fsg_model_t * fsg, int32 from, int32 to, int32 logp, int32 wid)
+{
+ fsg_link_t *link, *link2;
+
+ /* Check for transition probability */
+ if (logp > 0) {
+ E_FATAL("Null transition prob must be <= 1.0 (state %d -> %d)\n",
+ from, to);
+ }
+
+ /* Self-loop null transitions (with prob <= 1.0) are redundant */
+ if (from == to)
+ return -1;
+
+ if (fsg->trans[from].null_trans == NULL)
+ fsg->trans[from].null_trans = hash_table_new(5, HASH_CASE_YES);
+
+ /* Check for a duplicate link; if found, keep the higher prob */
+ link = fsg_model_null_trans(fsg, from, to);
+ if (link) {
+ if (link->logs2prob < logp) {
+ link->logs2prob = logp;
+ return 0;
+ }
+ else
+ return -1;
+ }
+
+ /* Create null transition object */
+ link = listelem_malloc(fsg->link_alloc);
+ link->from_state = from;
+ link->to_state = to;
+ link->logs2prob = logp;
+ link->wid = -1;
+
+ link2 = (fsg_link_t *)
+ hash_table_enter_bkey(fsg->trans[from].null_trans,
+ (char const *)&link->to_state,
+ sizeof(link->to_state), link);
+ assert(link == link2);
+
+ return 1;
+}
+
+int32
+fsg_model_null_trans_add(fsg_model_t * fsg, int32 from, int32 to, int32 logp)
+{
+ return fsg_model_tag_trans_add(fsg, from, to, logp, -1);
+}
+
+glist_t
+fsg_model_null_trans_closure(fsg_model_t * fsg, glist_t nulls)
+{
+ gnode_t *gn1, *gn2;
+ int updated;
+ fsg_link_t *tl1, *tl2;
+ int32 k, n;
+
+ E_INFO("Computing transitive closure for null transitions\n");
+
+ if (nulls == NULL) {
+ fsg_link_t *null;
+ int i, j;
+
+ for (i = 0; i < fsg->n_state; ++i) {
+ for (j = 0; j < fsg->n_state; ++j) {
+ if ((null = fsg_model_null_trans(fsg, i, j)))
+ nulls = glist_add_ptr(nulls, null);
+ }
+ }
+ }
+
+ /*
+ * Probably not the most efficient closure implementation, in general, but
+ * probably reasonably efficient for a sparse null transition matrix.
+ */
+ n = 0;
+ do {
+ updated = FALSE;
+
+ for (gn1 = nulls; gn1; gn1 = gnode_next(gn1)) {
+ tl1 = (fsg_link_t *) gnode_ptr(gn1);
+ assert(tl1->wid < 0);
+
+ for (gn2 = nulls; gn2; gn2 = gnode_next(gn2)) {
+ tl2 = (fsg_link_t *) gnode_ptr(gn2);
+
+ if (tl1->to_state == tl2->from_state) {
+ k = fsg_model_null_trans_add(fsg,
+ tl1->from_state,
+ tl2->to_state,
+ tl1->logs2prob +
+ tl2->logs2prob);
+ if (k >= 0) {
+ updated = TRUE;
+ if (k > 0) {
+ nulls =
+ glist_add_ptr(nulls, (void *)
+ fsg_model_null_trans
+ (fsg, tl1->from_state,
+ tl2->to_state));
+ n++;
+ }
+ }
+ }
+ }
+ }
+ } while (updated);
+
+ E_INFO("%d null transitions added\n", n);
+
+ return nulls;
+}
+
+glist_t
+fsg_model_trans(fsg_model_t *fsg, int32 i, int32 j)
+{
+ void *val;
+
+ if (fsg->trans[i].trans == NULL)
+ return NULL;
+ if (hash_table_lookup_bkey(fsg->trans[i].trans, (char const *)&j,
+ sizeof(j), &val) < 0)
+ return NULL;
+ return (glist_t)val;
+}
+
+fsg_link_t *
+fsg_model_null_trans(fsg_model_t *fsg, int32 i, int32 j)
+{
+ void *val;
+
+ if (fsg->trans[i].null_trans == NULL)
+ return NULL;
+ if (hash_table_lookup_bkey(fsg->trans[i].null_trans, (char const *)&j,
+ sizeof(j), &val) < 0)
+ return NULL;
+ return (fsg_link_t *)val;
+}
+
+fsg_arciter_t *
+fsg_model_arcs(fsg_model_t *fsg, int32 i)
+{
+ fsg_arciter_t *itor;
+
+ if (fsg->trans[i].trans == NULL && fsg->trans[i].null_trans == NULL)
+ return NULL;
+ itor = ckd_calloc(1, sizeof(*itor));
+ if (fsg->trans[i].null_trans)
+ itor->null_itor = hash_table_iter(fsg->trans[i].null_trans);
+ if (fsg->trans[i].trans)
+ itor->itor = hash_table_iter(fsg->trans[i].trans);
+ if (itor->itor != NULL)
+ itor->gn = hash_entry_val(itor->itor->ent);
+ return itor;
+}
+
+fsg_link_t *
+fsg_arciter_get(fsg_arciter_t *itor)
+{
+ /* Iterate over non-null arcs first. */
+ if (itor->gn)
+ return (fsg_link_t *)gnode_ptr(itor->gn);
+ else if (itor->null_itor)
+ return (fsg_link_t *)hash_entry_val(itor->null_itor->ent);
+ else
+ return NULL;
+}
+
+fsg_arciter_t *
+fsg_arciter_next(fsg_arciter_t *itor)
+{
+ /* Iterate over non-null arcs first. */
+ if (itor->gn) {
+ itor->gn = gnode_next(itor->gn);
+ /* Move to the next destination arc. */
+ if (itor->gn == NULL) {
+ itor->itor = hash_table_iter_next(itor->itor);
+ if (itor->itor != NULL)
+ itor->gn = hash_entry_val(itor->itor->ent);
+ else if (itor->null_itor == NULL)
+ goto stop_iteration;
+ }
+ }
+ else {
+ if (itor->null_itor == NULL)
+ goto stop_iteration;
+ itor->null_itor = hash_table_iter_next(itor->null_itor);
+ if (itor->null_itor == NULL)
+ goto stop_iteration;
+ }
+ return itor;
+stop_iteration:
+ fsg_arciter_free(itor);
+ return NULL;
+
+}
+
+void
+fsg_arciter_free(fsg_arciter_t *itor)
+{
+ if (itor == NULL)
+ return;
+ hash_table_iter_free(itor->null_itor);
+ hash_table_iter_free(itor->itor);
+ ckd_free(itor);
+}
+
+int
+fsg_model_word_id(fsg_model_t *fsg, char const *word)
+{
+ int wid;
+
+ /* Search for an existing word matching this. */
+ for (wid = 0; wid < fsg->n_word; ++wid) {
+ if (0 == strcmp(fsg->vocab[wid], word))
+ break;
+ }
+ /* If not found, add this to the vocab. */
+ if (wid == fsg->n_word)
+ return -1;
+ return wid;
+}
+
+int
+fsg_model_word_add(fsg_model_t *fsg, char const *word)
+{
+ int wid;
+
+ /* Search for an existing word matching this. */
+ wid = fsg_model_word_id(fsg, word);
+ /* If not found, add this to the vocab. */
+ if (wid == -1) {
+ wid = fsg->n_word;
+ if (fsg->n_word == fsg->n_word_alloc) {
+ fsg->n_word_alloc += 10;
+ fsg->vocab = ckd_realloc(fsg->vocab,
+ fsg->n_word_alloc * sizeof(*fsg->vocab));
+ if (fsg->silwords)
+ fsg->silwords = bitvec_realloc(fsg->silwords, fsg->n_word_alloc);
+ if (fsg->altwords)
+ fsg->altwords = bitvec_realloc(fsg->altwords, fsg->n_word_alloc);
+ }
+ ++fsg->n_word;
+ fsg->vocab[wid] = ckd_salloc(word);
+ }
+ return wid;
+}
+
+int
+fsg_model_add_silence(fsg_model_t * fsg, char const *silword,
+ int state, float32 silprob)
+{
+ int32 logsilp;
+ int n_trans, silwid, src;
+
+ E_INFO("Adding silence transitions for %s to FSG\n", silword);
+
+ silwid = fsg_model_word_add(fsg, silword);
+ logsilp = (int32) (logmath_log(fsg->lmath, silprob) * fsg->lw);
+ if (fsg->silwords == NULL)
+ fsg->silwords = bitvec_alloc(fsg->n_word_alloc);
+ bitvec_set(fsg->silwords, silwid);
+
+ n_trans = 0;
+ if (state == -1) {
+ for (src = 0; src < fsg->n_state; src++) {
+ fsg_model_trans_add(fsg, src, src, logsilp, silwid);
+ ++n_trans;
+ }
+ }
+ else {
+ fsg_model_trans_add(fsg, state, state, logsilp, silwid);
+ ++n_trans;
+ }
+
+ E_INFO("Added %d silence word transitions\n", n_trans);
+ return n_trans;
+}
+
+int
+fsg_model_add_alt(fsg_model_t * fsg, char const *baseword,
+ char const *altword)
+{
+ int i, basewid, altwid;
+ int ntrans;
+
+ /* FIXME: This will get slow, eventually... */
+ for (basewid = 0; basewid < fsg->n_word; ++basewid)
+ if (0 == strcmp(fsg->vocab[basewid], baseword))
+ break;
+ if (basewid == fsg->n_word) {
+ E_ERROR("Base word %s not present in FSG vocabulary!\n", baseword);
+ return -1;
+ }
+ altwid = fsg_model_word_add(fsg, altword);
+ if (fsg->altwords == NULL)
+ fsg->altwords = bitvec_alloc(fsg->n_word_alloc);
+ bitvec_set(fsg->altwords, altwid);
+
+ E_DEBUG(2,("Adding alternate word transitions (%s,%s) to FSG\n",
+ baseword, altword));
+
+ /* Look for all transitions involving baseword and duplicate them. */
+ /* FIXME: This will also get slow, eventually... */
+ ntrans = 0;
+ for (i = 0; i < fsg->n_state; ++i) {
+ hash_iter_t *itor;
+ if (fsg->trans[i].trans == NULL)
+ continue;
+ for (itor = hash_table_iter(fsg->trans[i].trans); itor;
+ itor = hash_table_iter_next(itor)) {
+ glist_t trans;
+ gnode_t *gn;
+
+ trans = hash_entry_val(itor->ent);
+ for (gn = trans; gn; gn = gnode_next(gn)) {
+ fsg_link_t *fl = gnode_ptr(gn);
+ if (fl->wid == basewid) {
+ fsg_link_t *link;
+
+ /* Create transition object */
+ link = listelem_malloc(fsg->link_alloc);
+ link->from_state = fl->from_state;
+ link->to_state = fl->to_state;
+ link->logs2prob = fl->logs2prob; /* FIXME!!!??? */
+ link->wid = altwid;
+
+ trans =
+ glist_add_ptr(trans, (void *) link);
+ ++ntrans;
+ }
+ }
+ hash_entry_val(itor->ent) = trans;
+ }
+ }
+
+ E_DEBUG(2,("Added %d alternate word transitions\n", ntrans));
+ return ntrans;
+}
+
+
+fsg_model_t *
+fsg_model_init(char const *name, logmath_t *lmath, float32 lw, int32 n_state)
+{
+ fsg_model_t *fsg;
+
+ /* Allocate basic stuff. */
+ fsg = ckd_calloc(1, sizeof(*fsg));
+ fsg->refcount = 1;
+ fsg->link_alloc = listelem_alloc_init(sizeof(fsg_link_t));
+ fsg->lmath = lmath;
+ fsg->name = name ? ckd_salloc(name) : NULL;
+ fsg->n_state = n_state;
+ fsg->lw = lw;
+
+ fsg->trans = ckd_calloc(fsg->n_state, sizeof(*fsg->trans));
+
+ return fsg;
+}
+
+fsg_model_t *
+fsg_model_read(FILE * fp, logmath_t *lmath, float32 lw)
+{
+ fsg_model_t *fsg;
+ hash_table_t *vocab;
+ hash_iter_t *itor;
+ int32 lastwid;
+ char **wordptr;
+ char *lineptr;
+ char *fsgname;
+ int32 lineno;
+ int32 n, i, j;
+ int n_state, n_trans, n_null_trans;
+ glist_t nulls;
+ float32 p;
+
+ lineno = 0;
+ vocab = hash_table_new(32, FALSE);
+ wordptr = NULL;
+ lineptr = NULL;
+ nulls = NULL;
+ fsgname = NULL;
+ fsg = NULL;
+
+ /* Scan upto FSG_BEGIN header */
+ for (;;) {
+ n = nextline_str2words(fp, &lineno, &lineptr, &wordptr);
+ if (n < 0) {
+ E_ERROR("%s declaration missing\n", FSG_MODEL_BEGIN_DECL);
+ goto parse_error;
+ }
+
+ if ((strcmp(wordptr[0], FSG_MODEL_BEGIN_DECL) == 0)) {
+ if (n > 2) {
+ E_ERROR("Line[%d]: malformed FSG_BEGIN declaration\n",
+ lineno);
+ goto parse_error;
+ }
+ break;
+ }
+ }
+ /* Save FSG name, or it will get clobbered below :(.
+ * If name is missing, try the default.
+ */
+ if (n == 2) {
+ fsgname = ckd_salloc(wordptr[1]);
+ } else {
+ E_WARN ("FSG name is missing\n");
+ fsgname = ckd_salloc("unknown");
+ }
+
+ /* Read #states */
+ n = nextline_str2words(fp, &lineno, &lineptr, &wordptr);
+ if ((n != 2)
+ || ((strcmp(wordptr[0], FSG_MODEL_N_DECL) != 0)
+ && (strcmp(wordptr[0], FSG_MODEL_NUM_STATES_DECL) != 0))
+ || (sscanf(wordptr[1], "%d", &n_state) != 1)
+ || (n_state <= 0)) {
+ E_ERROR
+ ("Line[%d]: #states declaration line missing or malformed\n",
+ lineno);
+ goto parse_error;
+ }
+
+ /* Now create the FSG. */
+ fsg = fsg_model_init(fsgname, lmath, lw, n_state);
+ ckd_free(fsgname);
+ fsgname = NULL;
+
+ /* Read start state */
+ n = nextline_str2words(fp, &lineno, &lineptr, &wordptr);
+ if ((n != 2)
+ || ((strcmp(wordptr[0], FSG_MODEL_S_DECL) != 0)
+ && (strcmp(wordptr[0], FSG_MODEL_START_STATE_DECL) != 0))
+ || (sscanf(wordptr[1], "%d", &(fsg->start_state)) != 1)
+ || (fsg->start_state < 0)
+ || (fsg->start_state >= fsg->n_state)) {
+ E_ERROR
+ ("Line[%d]: start state declaration line missing or malformed\n",
+ lineno);
+ goto parse_error;
+ }
+
+ /* Read final state */
+ n = nextline_str2words(fp, &lineno, &lineptr, &wordptr);
+ if ((n != 2)
+ || ((strcmp(wordptr[0], FSG_MODEL_F_DECL) != 0)
+ && (strcmp(wordptr[0], FSG_MODEL_FINAL_STATE_DECL) != 0))
+ || (sscanf(wordptr[1], "%d", &(fsg->final_state)) != 1)
+ || (fsg->final_state < 0)
+ || (fsg->final_state >= fsg->n_state)) {
+ E_ERROR
+ ("Line[%d]: final state declaration line missing or malformed\n",
+ lineno);
+ goto parse_error;
+ }
+
+ /* Read transitions */
+ lastwid = 0;
+ n_trans = n_null_trans = 0;
+ for (;;) {
+ int32 wid, tprob;
+
+ n = nextline_str2words(fp, &lineno, &lineptr, &wordptr);
+ if (n <= 0) {
+ E_ERROR("Line[%d]: transition or FSG_END statement expected\n",
+ lineno);
+ goto parse_error;
+ }
+
+ if ((strcmp(wordptr[0], FSG_MODEL_END_DECL) == 0)) {
+ break;
+ }
+
+ if ((strcmp(wordptr[0], FSG_MODEL_T_DECL) == 0)
+ || (strcmp(wordptr[0], FSG_MODEL_TRANSITION_DECL) == 0)) {
+
+
+ if (((n != 4) && (n != 5))
+ || (sscanf(wordptr[1], "%d", &i) != 1)
+ || (sscanf(wordptr[2], "%d", &j) != 1)
+ || (i < 0) || (i >= fsg->n_state)
+ || (j < 0) || (j >= fsg->n_state)) {
+ E_ERROR
+ ("Line[%d]: transition spec malformed; Expecting: from-state to-state trans-prob [word]\n",
+ lineno);
+ goto parse_error;
+ }
+
+ p = atof_c(wordptr[3]);
+ if ((p <= 0.0) || (p > 1.0)) {
+ E_ERROR
+ ("Line[%d]: transition spec malformed; Expecting float as transition probability\n",
+ lineno);
+ goto parse_error;
+ }
+ }
+ else {
+ E_ERROR("Line[%d]: transition or FSG_END statement expected\n",
+ lineno);
+ goto parse_error;
+ }
+
+ tprob = (int32)(logmath_log(lmath, p) * fsg->lw);
+ /* Add word to "dictionary". */
+ if (n > 4) {
+ if (hash_table_lookup_int32(vocab, wordptr[4], &wid) < 0) {
+ (void)hash_table_enter_int32(vocab, ckd_salloc(wordptr[4]), lastwid);
+ wid = lastwid;
+ ++lastwid;
+ }
+ fsg_model_trans_add(fsg, i, j, tprob, wid);
+ ++n_trans;
+ }
+ else {
+ if (fsg_model_null_trans_add(fsg, i, j, tprob) == 1) {
+ ++n_null_trans;
+ nulls = glist_add_ptr(nulls, fsg_model_null_trans(fsg, i, j));
+ }
+ }
+ }
+
+ E_INFO("FSG: %d states, %d unique words, %d transitions (%d null)\n",
+ fsg->n_state, hash_table_inuse(vocab), n_trans, n_null_trans);
+
+ /* Do transitive closure on null transitions */
+ nulls = fsg_model_null_trans_closure(fsg, nulls);
+ glist_free(nulls);
+
+ /* Now create a string table from the "dictionary" */
+ fsg->n_word = hash_table_inuse(vocab);
+ fsg->n_word_alloc = fsg->n_word + 10; /* Pad it a bit. */
+ fsg->vocab = ckd_calloc(fsg->n_word_alloc, sizeof(*fsg->vocab));
+ for (itor = hash_table_iter(vocab); itor; itor = hash_table_iter_next(itor)) {
+ char const *word = hash_entry_key(itor->ent);
+ int32 wid = (int32)(long)hash_entry_val(itor->ent);
+ fsg->vocab[wid] = (char *)word;
+ }
+ hash_table_free(vocab);
+ ckd_free(lineptr);
+ ckd_free(wordptr);
+
+ return fsg;
+
+ parse_error:
+ for (itor = hash_table_iter(vocab); itor; itor = hash_table_iter_next(itor))
+ ckd_free((char *)hash_entry_key(itor->ent));
+ glist_free(nulls);
+ hash_table_free(vocab);
+ ckd_free(fsgname);
+ ckd_free(lineptr);
+ ckd_free(wordptr);
+ fsg_model_free(fsg);
+ return NULL;
+}
+
+
+fsg_model_t *
+fsg_model_readfile(const char *file, logmath_t *lmath, float32 lw)
+{
+ FILE *fp;
+ fsg_model_t *fsg;
+
+ if ((fp = fopen(file, "r")) == NULL) {
+ E_ERROR("Failed to open FSG file '%s' for reading: %s\n", file, strerror(errno));
+ return NULL;
+ }
+ fsg = fsg_model_read(fp, lmath, lw);
+ fclose(fp);
+ return fsg;
+}
+
+fsg_model_t *
+fsg_model_retain(fsg_model_t *fsg)
+{
+ ++fsg->refcount;
+ return fsg;
+}
+
+static void
+trans_list_free(fsg_model_t *fsg, int32 i)
+{
+ hash_iter_t *itor;
+
+ /* FIXME (maybe): FSG links will all get freed when we call
+ * listelem_alloc_free() so don't bother freeing them explicitly
+ * here. */
+ if (fsg->trans[i].trans) {
+ for (itor = hash_table_iter(fsg->trans[i].trans);
+ itor; itor = hash_table_iter_next(itor)) {
+ glist_t gl = (glist_t)hash_entry_val(itor->ent);
+ glist_free(gl);
+ }
+ }
+ hash_table_free(fsg->trans[i].trans);
+ hash_table_free(fsg->trans[i].null_trans);
+}
+
+int
+fsg_model_free(fsg_model_t * fsg)
+{
+ int i;
+
+ if (fsg == NULL)
+ return 0;
+
+ if (--fsg->refcount > 0)
+ return fsg->refcount;
+
+ for (i = 0; i < fsg->n_word; ++i)
+ ckd_free(fsg->vocab[i]);
+ for (i = 0; i < fsg->n_state; ++i)
+ trans_list_free(fsg, i);
+ ckd_free(fsg->trans);
+ ckd_free(fsg->vocab);
+ listelem_alloc_free(fsg->link_alloc);
+ bitvec_free(fsg->silwords);
+ bitvec_free(fsg->altwords);
+ ckd_free(fsg->name);
+ ckd_free(fsg);
+ return 0;
+}
+
+
+void
+fsg_model_write(fsg_model_t * fsg, FILE * fp)
+{
+ int32 i;
+
+ fprintf(fp, "%s %s\n", FSG_MODEL_BEGIN_DECL, fsg->name ? fsg->name : "");
+ fprintf(fp, "%s %d\n", FSG_MODEL_NUM_STATES_DECL, fsg->n_state);
+ fprintf(fp, "%s %d\n", FSG_MODEL_START_STATE_DECL, fsg->start_state);
+ fprintf(fp, "%s %d\n", FSG_MODEL_FINAL_STATE_DECL, fsg->final_state);
+
+ for (i = 0; i < fsg->n_state; i++) {
+ fsg_arciter_t *itor;
+
+ for (itor = fsg_model_arcs(fsg, i); itor; itor = fsg_arciter_next(itor)) {
+ fsg_link_t *tl = fsg_arciter_get(itor);
+
+ fprintf(fp, "%s %d %d %f %s\n", FSG_MODEL_TRANSITION_DECL,
+ tl->from_state, tl->to_state,
+ logmath_exp(fsg->lmath, (int32)(tl->logs2prob / fsg->lw)),
+ (tl->wid < 0) ? "" : fsg_model_word_str(fsg, tl->wid));
+ }
+ }
+
+ fprintf(fp, "%s\n", FSG_MODEL_END_DECL);
+
+ fflush(fp);
+}
+
+void
+fsg_model_writefile(fsg_model_t *fsg, char const *file)
+{
+ FILE *fp;
+
+ assert(fsg);
+
+ E_INFO("Writing FSG file '%s'\n", file);
+
+ if ((fp = fopen(file, "w")) == NULL) {
+ E_ERROR("Failed to open FSG file '%s' for reading: %s\n", file, strerror(errno));
+ return;
+ }
+
+ fsg_model_write(fsg, fp);
+
+ fclose(fp);
+}
+
+static void
+fsg_model_write_fsm_trans(fsg_model_t *fsg, int i, FILE *fp)
+{
+ fsg_arciter_t *itor;
+
+ for (itor = fsg_model_arcs(fsg, i); itor;
+ itor = fsg_arciter_next(itor)) {
+ fsg_link_t *tl = fsg_arciter_get(itor);
+ fprintf(fp, "%d %d %s %f\n",
+ tl->from_state, tl->to_state,
+ (tl->wid < 0) ? "<eps>" : fsg_model_word_str(fsg, tl->wid),
+ -logmath_log_to_ln(fsg->lmath, tl->logs2prob / fsg->lw));
+ }
+}
+
+void
+fsg_model_write_fsm(fsg_model_t * fsg, FILE * fp)
+{
+ int i;
+
+ /* Write transitions from initial state first. */
+ fsg_model_write_fsm_trans(fsg, fsg_model_start_state(fsg), fp);
+
+ /* Other states. */
+ for (i = 0; i < fsg->n_state; i++) {
+ if (i == fsg_model_start_state(fsg))
+ continue;
+ fsg_model_write_fsm_trans(fsg, i, fp);
+ }
+
+ /* Final state. */
+ fprintf(fp, "%d 0\n", fsg_model_final_state(fsg));
+
+ fflush(fp);
+}
+
+void
+fsg_model_writefile_fsm(fsg_model_t *fsg, char const *file)
+{
+ FILE *fp;
+
+ assert(fsg);
+
+ E_INFO("Writing FSM file '%s'\n", file);
+
+ if ((fp = fopen(file, "w")) == NULL) {
+ E_ERROR("Failed to open fsm file '%s' for writing: %s\n", file, strerror(errno));
+ return;
+ }
+
+ fsg_model_write_fsm(fsg, fp);
+
+ fclose(fp);
+}
+
+void
+fsg_model_write_symtab(fsg_model_t *fsg, FILE *file)
+{
+ int i;
+
+ fprintf(file, "<eps> 0\n");
+ for (i = 0; i < fsg_model_n_word(fsg); ++i) {
+ fprintf(file, "%s %d\n", fsg_model_word_str(fsg, i), i + 1);
+ }
+ fflush(file);
+}
+
+void
+fsg_model_writefile_symtab(fsg_model_t *fsg, char const *file)
+{
+ FILE *fp;
+
+ assert(fsg);
+
+ E_INFO("Writing FSM symbol table '%s'\n", file);
+
+ if ((fp = fopen(file, "w")) == NULL) {
+ E_ERROR("Failed to open symbol table '%s' for writing: %s\n", file, strerror(errno));
+ return;
+ }
+
+ fsg_model_write_symtab(fsg, fp);
+
+ fclose(fp);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <string.h>
+#include <assert.h>
+
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/hash_table.h"
+#include "sphinxbase/err.h"
+
+#include "jsgf_internal.h"
+#include "jsgf_parser.h"
+#include "jsgf_scanner.h"
+
+int yyparse (yyscan_t yyscanner, jsgf_t *jsgf);
+
+/**
+ * \file jsgf.c
+ *
+ * This file implements the data structures for parsing JSGF grammars
+ * into Sphinx finite-state grammars.
+ **/
+
+jsgf_atom_t *
+jsgf_atom_new(char *name, float weight)
+{
+ jsgf_atom_t *atom;
+
+ atom = ckd_calloc(1, sizeof(*atom));
+ atom->name = ckd_salloc(name);
+ atom->weight = weight;
+ return atom;
+}
+
+int
+jsgf_atom_free(jsgf_atom_t *atom)
+{
+ if (atom == NULL)
+ return 0;
+ ckd_free(atom->name);
+ ckd_free(atom);
+ return 0;
+}
+
+jsgf_t *
+jsgf_grammar_new(jsgf_t *parent)
+{
+ jsgf_t *grammar;
+
+ grammar = ckd_calloc(1, sizeof(*grammar));
+ /* If this is an imported/subgrammar, then we will share a global
+ * namespace with the parent grammar. */
+ if (parent) {
+ grammar->rules = parent->rules;
+ grammar->imports = parent->imports;
+ grammar->searchpath = parent->searchpath;
+ grammar->parent = parent;
+ }
+ else {
+ char *jsgf_path;
+
+ grammar->rules = hash_table_new(64, 0);
+ grammar->imports = hash_table_new(16, 0);
+
+ /* Silvio Moioli: no getenv() in Windows CE */
+ #if !defined(_WIN32_WCE)
+ if ((jsgf_path = getenv("JSGF_PATH")) != NULL) {
+ char *word, *c;
+
+ /* FIXME: This should be a function in libsphinxbase. */
+ /* FIXME: Also nextword() is totally useless... */
+ word = jsgf_path = ckd_salloc(jsgf_path);
+ while ((c = strchr(word, ':'))) {
+ *c = '\0';
+ grammar->searchpath = glist_add_ptr(grammar->searchpath, word);
+ word = c + 1;
+ }
+ grammar->searchpath = glist_add_ptr(grammar->searchpath, word);
+ grammar->searchpath = glist_reverse(grammar->searchpath);
+ }
+ else {
+ /* Default to current directory. */
+ grammar->searchpath = glist_add_ptr(grammar->searchpath, ckd_salloc("."));
+ }
+ #endif
+ }
+
+ return grammar;
+}
+
+void
+jsgf_grammar_free(jsgf_t *jsgf)
+{
+ /* FIXME: Probably should just use refcounting instead. */
+ if (jsgf->parent == NULL) {
+ hash_iter_t *itor;
+ gnode_t *gn;
+
+ for (itor = hash_table_iter(jsgf->rules); itor;
+ itor = hash_table_iter_next(itor)) {
+ ckd_free((char *)itor->ent->key);
+ jsgf_rule_free((jsgf_rule_t *)itor->ent->val);
+ }
+ hash_table_free(jsgf->rules);
+ for (itor = hash_table_iter(jsgf->imports); itor;
+ itor = hash_table_iter_next(itor)) {
+ ckd_free((char *)itor->ent->key);
+ jsgf_grammar_free((jsgf_t *)itor->ent->val);
+ }
+ hash_table_free(jsgf->imports);
+ for (gn = jsgf->searchpath; gn; gn = gnode_next(gn))
+ ckd_free(gnode_ptr(gn));
+ glist_free(jsgf->searchpath);
+ for (gn = jsgf->links; gn; gn = gnode_next(gn))
+ ckd_free(gnode_ptr(gn));
+ glist_free(jsgf->links);
+ }
+ ckd_free(jsgf->name);
+ ckd_free(jsgf->version);
+ ckd_free(jsgf->charset);
+ ckd_free(jsgf->locale);
+ ckd_free(jsgf);
+}
+
+static void
+jsgf_rhs_free(jsgf_rhs_t *rhs)
+{
+ gnode_t *gn;
+
+ if (rhs == NULL)
+ return;
+
+ jsgf_rhs_free(rhs->alt);
+ for (gn = rhs->atoms; gn; gn = gnode_next(gn))
+ jsgf_atom_free(gnode_ptr(gn));
+ glist_free(rhs->atoms);
+ ckd_free(rhs);
+}
+
+jsgf_atom_t *
+jsgf_kleene_new(jsgf_t *jsgf, jsgf_atom_t *atom, int plus)
+{
+ jsgf_rule_t *rule;
+ jsgf_atom_t *rule_atom;
+ jsgf_rhs_t *rhs;
+
+ /* Generate an "internal" rule of the form (<NULL> | <name> <g0006>) */
+ /* Or if plus is true, (<name> | <name> <g0006>) */
+ rhs = ckd_calloc(1, sizeof(*rhs));
+ if (plus)
+ rhs->atoms = glist_add_ptr(NULL, jsgf_atom_new(atom->name, 1.0));
+ else
+ rhs->atoms = glist_add_ptr(NULL, jsgf_atom_new("<NULL>", 1.0));
+ rule = jsgf_define_rule(jsgf, NULL, rhs, 0);
+ rule_atom = jsgf_atom_new(rule->name, 1.0);
+ rhs = ckd_calloc(1, sizeof(*rhs));
+ rhs->atoms = glist_add_ptr(NULL, rule_atom);
+ rhs->atoms = glist_add_ptr(rhs->atoms, atom);
+ rule->rhs->alt = rhs;
+
+ return jsgf_atom_new(rule->name, 1.0);
+}
+
+jsgf_rule_t *
+jsgf_optional_new(jsgf_t *jsgf, jsgf_rhs_t *exp)
+{
+ jsgf_rhs_t *rhs = ckd_calloc(1, sizeof(*rhs));
+ jsgf_atom_t *atom = jsgf_atom_new("<NULL>", 1.0);
+ rhs->alt = exp;
+ rhs->atoms = glist_add_ptr(NULL, atom);
+ return jsgf_define_rule(jsgf, NULL, rhs, 0);
+}
+
+void
+jsgf_add_link(jsgf_t *grammar, jsgf_atom_t *atom, int from, int to)
+{
+ jsgf_link_t *link;
+
+ link = ckd_calloc(1, sizeof(*link));
+ link->from = from;
+ link->to = to;
+ link->atom = atom;
+ grammar->links = glist_add_ptr(grammar->links, link);
+}
+
+static char *
+extract_grammar_name(char *rule_name)
+{
+ char* dot_pos;
+ char* grammar_name = ckd_salloc(rule_name+1);
+ if ((dot_pos = strrchr(grammar_name + 1, '.')) == NULL) {
+ ckd_free(grammar_name);
+ return NULL;
+ }
+ *dot_pos='\0';
+ return grammar_name;
+}
+
+static char *
+jsgf_fullname(jsgf_t *jsgf, const char *name)
+{
+ char *fullname;
+
+ /* Check if it is already qualified */
+ if (strchr(name + 1, '.'))
+ return ckd_salloc(name);
+
+ /* Skip leading < in name */
+ fullname = ckd_malloc(strlen(jsgf->name) + strlen(name) + 4);
+ sprintf(fullname, "<%s.%s", jsgf->name, name + 1);
+ return fullname;
+}
+
+static char *
+jsgf_fullname_from_rule(jsgf_rule_t *rule, const char *name)
+{
+ char *fullname, *grammar_name;
+
+ /* Check if it is already qualified */
+ if (strchr(name + 1, '.'))
+ return ckd_salloc(name);
+
+ /* Skip leading < in name */
+ if ((grammar_name = extract_grammar_name(rule->name)) == NULL)
+ return ckd_salloc(name);
+ fullname = ckd_malloc(strlen(grammar_name) + strlen(name) + 4);
+ sprintf(fullname, "<%s.%s", grammar_name, name + 1);
+ ckd_free(grammar_name);
+
+ return fullname;
+}
+
+/* Extract as rulename everything after the secondlast dot, if existent.
+ * Because everything before the secondlast dot is the path-specification. */
+static char *
+importname2rulename(char *importname)
+{
+ char *rulename = ckd_salloc(importname);
+ char *last_dotpos;
+ char *secondlast_dotpos;
+
+ if ((last_dotpos = strrchr(rulename+1, '.')) != NULL) {
+ *last_dotpos='\0';
+ if ((secondlast_dotpos = strrchr(rulename+1, '.')) != NULL) {
+ *last_dotpos='.';
+ *secondlast_dotpos='<';
+ secondlast_dotpos = ckd_salloc(secondlast_dotpos);
+ ckd_free(rulename);
+ return secondlast_dotpos;
+ }
+ else {
+ *last_dotpos='.';
+ return rulename;
+ }
+ }
+ else {
+ return rulename;
+ }
+}
+
+static int expand_rule(jsgf_t *grammar, jsgf_rule_t *rule);
+static int
+expand_rhs(jsgf_t *grammar, jsgf_rule_t *rule, jsgf_rhs_t *rhs)
+{
+ gnode_t *gn;
+ int lastnode;
+
+ /* Last node expanded in this sequence. */
+ lastnode = rule->entry;
+
+ /* Iterate over atoms in rhs and generate links/nodes */
+ for (gn = rhs->atoms; gn; gn = gnode_next(gn)) {
+ jsgf_atom_t *atom = gnode_ptr(gn);
+ if (jsgf_atom_is_rule(atom)) {
+ jsgf_rule_t *subrule;
+ char *fullname;
+ gnode_t *subnode;
+ void *val;
+
+ /* Special case for <NULL> and <VOID> pseudo-rules */
+ if (0 == strcmp(atom->name, "<NULL>")) {
+ /* Emit a NULL transition */
+ jsgf_add_link(grammar, atom,
+ lastnode, grammar->nstate);
+ lastnode = grammar->nstate;
+ ++grammar->nstate;
+ continue;
+ }
+ else if (0 == strcmp(atom->name, "<VOID>")) {
+ /* Make this entire RHS unspeakable */
+ return -1;
+ }
+
+ fullname = jsgf_fullname_from_rule(rule, atom->name);
+ if (hash_table_lookup(grammar->rules, fullname, &val) == -1) {
+ E_ERROR("Undefined rule in RHS: %s\n", fullname);
+ ckd_free(fullname);
+ return -1;
+ }
+ ckd_free(fullname);
+ subrule = val;
+ /* Look for this in the stack of expanded rules */
+ for (subnode = grammar->rulestack; subnode; subnode = gnode_next(subnode))
+ if (gnode_ptr(subnode) == (void *)subrule)
+ break;
+ if (subnode != NULL) {
+ /* Allow right-recursion only. */
+ if (gnode_next(gn) != NULL) {
+ E_ERROR("Only right-recursion is permitted (in %s.%s)\n",
+ grammar->name, rule->name);
+ return -1;
+ }
+ /* Add a link back to the beginning of this rule instance */
+ E_INFO("Right recursion %s %d => %d\n", atom->name, lastnode, subrule->entry);
+ jsgf_add_link(grammar, atom, lastnode, subrule->entry);
+ }
+ else {
+ /* Expand the subrule */
+ if (expand_rule(grammar, subrule) == -1)
+ return -1;
+ /* Add a link into the subrule. */
+ jsgf_add_link(grammar, atom,
+ lastnode, subrule->entry);
+ lastnode = subrule->exit;
+ }
+ }
+ else {
+ /* Add a link for this token and create a new exit node. */
+ jsgf_add_link(grammar, atom,
+ lastnode, grammar->nstate);
+ lastnode = grammar->nstate;
+ ++grammar->nstate;
+ }
+ }
+
+ return lastnode;
+}
+
+static int
+expand_rule(jsgf_t *grammar, jsgf_rule_t *rule)
+{
+ jsgf_rhs_t *rhs;
+ float norm;
+
+ /* Push this rule onto the stack */
+ grammar->rulestack = glist_add_ptr(grammar->rulestack, rule);
+
+ /* Normalize weights for all alternatives exiting rule->entry */
+ norm = 0;
+ for (rhs = rule->rhs; rhs; rhs = rhs->alt) {
+ if (rhs->atoms) {
+ jsgf_atom_t *atom = gnode_ptr(rhs->atoms);
+ norm += atom->weight;
+ }
+ }
+
+ rule->entry = grammar->nstate++;
+ rule->exit = grammar->nstate++;
+ if (norm == 0) norm = 1;
+ for (rhs = rule->rhs; rhs; rhs = rhs->alt) {
+ int lastnode;
+
+ if (rhs->atoms) {
+ jsgf_atom_t *atom = gnode_ptr(rhs->atoms);
+ atom->weight /= norm;
+ }
+ lastnode = expand_rhs(grammar, rule, rhs);
+ if (lastnode == -1) {
+ return -1;
+ }
+ else {
+ jsgf_add_link(grammar, NULL, lastnode, rule->exit);
+ }
+ }
+
+ /* Pop this rule from the rule stack */
+ grammar->rulestack = gnode_free(grammar->rulestack, NULL);
+ return rule->exit;
+}
+
+jsgf_rule_iter_t *
+jsgf_rule_iter(jsgf_t *grammar)
+{
+ return hash_table_iter(grammar->rules);
+}
+
+jsgf_rule_t *
+jsgf_get_rule(jsgf_t *grammar, char const *name)
+{
+ void *val;
+
+ if (hash_table_lookup(grammar->rules, name, &val) < 0)
+ return NULL;
+ return (jsgf_rule_t *)val;
+}
+
+char const *
+jsgf_rule_name(jsgf_rule_t *rule)
+{
+ return rule->name;
+}
+
+int
+jsgf_rule_public(jsgf_rule_t *rule)
+{
+ return rule->public;
+}
+
+static fsg_model_t *
+jsgf_build_fsg_internal(jsgf_t *grammar, jsgf_rule_t *rule,
+ logmath_t *lmath, float32 lw, int do_closure)
+{
+ fsg_model_t *fsg;
+ glist_t nulls;
+ gnode_t *gn;
+
+ /* Clear previous links */
+ for (gn = grammar->links; gn; gn = gnode_next(gn)) {
+ ckd_free(gnode_ptr(gn));
+ }
+ glist_free(grammar->links);
+ grammar->links = NULL;
+ rule->entry = rule->exit = 0;
+ grammar->nstate = 0;
+ expand_rule(grammar, rule);
+
+ fsg = fsg_model_init(rule->name, lmath, lw, grammar->nstate);
+ fsg->start_state = rule->entry;
+ fsg->final_state = rule->exit;
+ grammar->links = glist_reverse(grammar->links);
+ for (gn = grammar->links; gn; gn = gnode_next(gn)) {
+ jsgf_link_t *link = gnode_ptr(gn);
+
+ if (link->atom) {
+ if (jsgf_atom_is_rule(link->atom)) {
+ fsg_model_null_trans_add(fsg, link->from, link->to,
+ logmath_log(lmath, link->atom->weight));
+ }
+ else {
+ int wid = fsg_model_word_add(fsg, link->atom->name);
+ fsg_model_trans_add(fsg, link->from, link->to,
+ logmath_log(lmath, link->atom->weight), wid);
+ }
+ }
+ else {
+ fsg_model_null_trans_add(fsg, link->from, link->to, 0);
+ }
+ }
+ if (do_closure) {
+ nulls = fsg_model_null_trans_closure(fsg, NULL);
+ glist_free(nulls);
+ }
+
+ return fsg;
+}
+
+fsg_model_t *
+jsgf_build_fsg(jsgf_t *grammar, jsgf_rule_t *rule,
+ logmath_t *lmath, float32 lw)
+{
+ return jsgf_build_fsg_internal(grammar, rule, lmath, lw, TRUE);
+}
+
+fsg_model_t *
+jsgf_build_fsg_raw(jsgf_t *grammar, jsgf_rule_t *rule,
+ logmath_t *lmath, float32 lw)
+{
+ return jsgf_build_fsg_internal(grammar, rule, lmath, lw, FALSE);
+}
+
+int
+jsgf_write_fsg(jsgf_t *grammar, jsgf_rule_t *rule, FILE *outfh)
+{
+ fsg_model_t *fsg;
+ logmath_t *lmath = logmath_init(1.0001, 0, 0);
+
+ if ((fsg = jsgf_build_fsg_raw(grammar, rule, lmath, 1.0)) == NULL)
+ goto error_out;
+
+ fsg_model_write(fsg, outfh);
+ logmath_free(lmath);
+ return 0;
+
+error_out:
+ logmath_free(lmath);
+ return -1;
+}
+jsgf_rule_t *
+jsgf_define_rule(jsgf_t *jsgf, char *name, jsgf_rhs_t *rhs, int public)
+{
+ jsgf_rule_t *rule;
+ void *val;
+
+ if (name == NULL) {
+ name = ckd_malloc(strlen(jsgf->name) + 16);
+ sprintf(name, "<%s.g%05d>", jsgf->name, hash_table_inuse(jsgf->rules));
+ }
+ else {
+ char *newname;
+
+ newname = jsgf_fullname(jsgf, name);
+ name = newname;
+ }
+
+ rule = ckd_calloc(1, sizeof(*rule));
+ rule->refcnt = 1;
+ rule->name = ckd_salloc(name);
+ rule->rhs = rhs;
+ rule->public = public;
+
+ E_INFO("Defined rule: %s%s\n",
+ rule->public ? "PUBLIC " : "",
+ rule->name);
+ val = hash_table_enter(jsgf->rules, name, rule);
+ if (val != (void *)rule) {
+ E_WARN("Multiply defined symbol: %s\n", name);
+ }
+ return rule;
+}
+
+jsgf_rule_t *
+jsgf_rule_retain(jsgf_rule_t *rule)
+{
+ ++rule->refcnt;
+ return rule;
+}
+
+int
+jsgf_rule_free(jsgf_rule_t *rule)
+{
+ if (rule == NULL)
+ return 0;
+ if (--rule->refcnt > 0)
+ return rule->refcnt;
+ jsgf_rhs_free(rule->rhs);
+ ckd_free(rule->name);
+ ckd_free(rule);
+ return 0;
+}
+
+
+/* FIXME: This should go in libsphinxutil */
+static char *
+path_list_search(glist_t paths, char *path)
+{
+ gnode_t *gn;
+
+ for (gn = paths; gn; gn = gnode_next(gn)) {
+ char *fullpath;
+ FILE *tmp;
+
+ fullpath = string_join(gnode_ptr(gn), "/", path, NULL);
+ tmp = fopen(fullpath, "r");
+ if (tmp != NULL) {
+ fclose(tmp);
+ return fullpath;
+ }
+ else
+ ckd_free(fullpath);
+ }
+ return NULL;
+}
+
+jsgf_rule_t *
+jsgf_import_rule(jsgf_t *jsgf, char *name)
+{
+ char *c, *path, *newpath;
+ size_t namelen, packlen;
+ void *val;
+ jsgf_t *imp;
+ int import_all;
+
+ /* Trim the leading and trailing <> */
+ namelen = strlen(name);
+ path = ckd_malloc(namelen - 2 + 6); /* room for a trailing .gram */
+ strcpy(path, name + 1);
+ /* Split off the first part of the name */
+ c = strrchr(path, '.');
+ if (c == NULL) {
+ E_ERROR("Imported rule is not qualified: %s\n", name);
+ ckd_free(path);
+ return NULL;
+ }
+ packlen = c - path;
+ *c = '\0';
+
+ /* Look for import foo.* */
+ import_all = (strlen(name) > 2 && 0 == strcmp(name + namelen - 3, ".*>"));
+
+ /* Construct a filename. */
+ for (c = path; *c; ++c)
+ if (*c == '.') *c = '/';
+ strcat(path, ".gram");
+ newpath = path_list_search(jsgf->searchpath, path);
+ ckd_free(path);
+ if (newpath == NULL)
+ return NULL;
+
+ path = newpath;
+ E_INFO("Importing %s from %s to %s\n", name, path, jsgf->name);
+
+ /* FIXME: Also, we need to make sure that path is fully qualified
+ * here, by adding any prefixes from jsgf->name to it. */
+ /* See if we have parsed it already */
+ if (hash_table_lookup(jsgf->imports, path, &val) == 0) {
+ E_INFO("Already imported %s\n", path);
+ imp = val;
+ ckd_free(path);
+ }
+ else {
+ /* If not, parse it. */
+ imp = jsgf_parse_file(path, jsgf);
+ val = hash_table_enter(jsgf->imports, path, imp);
+ if (val != (void *)imp) {
+ E_WARN("Multiply imported file: %s\n", path);
+ }
+ }
+ if (imp != NULL) {
+ hash_iter_t *itor;
+ /* Look for public rules matching rulename. */
+ for (itor = hash_table_iter(imp->rules); itor;
+ itor = hash_table_iter_next(itor)) {
+ hash_entry_t *he = itor->ent;
+ jsgf_rule_t *rule = hash_entry_val(he);
+ int rule_matches;
+ char *rule_name = importname2rulename(name);
+
+ if (import_all) {
+ /* Match package name (symbol table is shared) */
+ rule_matches = !strncmp(rule_name, rule->name, packlen + 1);
+ }
+ else {
+ /* Exact match */
+ rule_matches = !strcmp(rule_name, rule->name);
+ }
+ ckd_free(rule_name);
+ if (rule->public && rule_matches) {
+ void *val;
+ char *newname;
+
+ /* Link this rule into the current namespace. */
+ c = strrchr(rule->name, '.');
+ assert(c != NULL);
+ newname = jsgf_fullname(jsgf, c);
+
+ E_INFO("Imported %s\n", newname);
+ val = hash_table_enter(jsgf->rules, newname,
+ jsgf_rule_retain(rule));
+ if (val != (void *)rule) {
+ E_WARN("Multiply defined symbol: %s\n", newname);
+ }
+ if (!import_all) {
+ hash_table_iter_free(itor);
+ return rule;
+ }
+ }
+ }
+ }
+
+ return NULL;
+}
+
+jsgf_t *
+jsgf_parse_file(const char *filename, jsgf_t *parent)
+{
+ yyscan_t yyscanner;
+ jsgf_t *jsgf;
+ int yyrv;
+ FILE *in = NULL;
+
+ yylex_init(&yyscanner);
+ if (filename == NULL) {
+ yyset_in(stdin, yyscanner);
+ }
+ else {
+ in = fopen(filename, "r");
+ if (in == NULL) {
+ fprintf(stderr, "Failed to open %s for parsing: %s\n",
+ filename, strerror(errno));
+ return NULL;
+ }
+ yyset_in(in, yyscanner);
+ }
+
+ jsgf = jsgf_grammar_new(parent);
+ yyrv = yyparse(yyscanner, jsgf);
+ if (yyrv != 0) {
+ fprintf(stderr, "JSGF parse of %s failed\n",
+ filename ? filename : "(stdin)");
+ jsgf_grammar_free(jsgf);
+ yylex_destroy(yyscanner);
+ return NULL;
+ }
+ if (in)
+ fclose(in);
+ yylex_destroy(yyscanner);
+
+ return jsgf;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#ifndef __JSGF_INTERNAL_H__
+#define __JSGF_INTERNAL_H__
+
+/**
+ * @file jsgf_internal.h Internal definitions for JSGF grammar compiler
+ */
+
+#define YY_NO_UNISTD_H 1
+#include <stdio.h>
+
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/glist.h>
+#include <sphinxbase/fsg_model.h>
+#include <sphinxbase/logmath.h>
+#include <sphinxbase/strfuncs.h>
+#include <sphinxbase/jsgf.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if 0
+/* Fool Emacs. */
+}
+#endif
+
+#define YY_NO_INPUT /* Silence a compiler warning. */
+
+typedef struct jsgf_rhs_s jsgf_rhs_t;
+typedef struct jsgf_atom_s jsgf_atom_t;
+typedef struct jsgf_link_s jsgf_link_t;
+
+struct jsgf_s {
+ char *version; /**< JSGF version (from header) */
+ char *charset; /**< JSGF charset (default UTF-8) */
+ char *locale; /**< JSGF locale (default C) */
+ char *name; /**< Grammar name */
+
+ hash_table_t *rules; /**< Defined or imported rules in this grammar. */
+ hash_table_t *imports; /**< Pointers to imported grammars. */
+ jsgf_t *parent; /**< Parent grammar (if this is an imported one) */
+ glist_t searchpath; /**< List of directories to search for grammars. */
+
+ /* Scratch variables for FSG conversion. */
+ int nstate; /**< Number of generated states. */
+ glist_t links; /**< Generated FSG links. */
+ glist_t rulestack; /**< Stack of currently expanded rules. */
+};
+
+struct jsgf_rule_s {
+ int refcnt; /**< Reference count. */
+ char *name; /**< Rule name (NULL for an alternation/grouping) */
+ int public; /**< Is this rule marked 'public'? */
+ jsgf_rhs_t *rhs; /**< Expansion */
+
+ int entry; /**< Entry state for current instance of this rule. */
+ int exit; /**< Exit state for current instance of this rule. */
+};
+
+struct jsgf_rhs_s {
+ glist_t atoms; /**< Sequence of items */
+ jsgf_rhs_t *alt; /**< Linked list of alternates */
+};
+
+struct jsgf_atom_s {
+ char *name; /**< Rule or token name */
+ glist_t tags; /**< Tags, if any (glist_t of char *) */
+ float weight; /**< Weight (default 1) */
+};
+
+struct jsgf_link_s {
+ jsgf_atom_t *atom; /**< Name, tags, weight */
+ int from; /**< From state */
+ int to; /**< To state */
+};
+
+#define jsgf_atom_is_rule(atom) ((atom)->name[0] == '<')
+
+void jsgf_add_link(jsgf_t *grammar, jsgf_atom_t *atom, int from, int to);
+jsgf_atom_t *jsgf_atom_new(char *name, float weight);
+jsgf_atom_t *jsgf_kleene_new(jsgf_t *jsgf, jsgf_atom_t *atom, int plus);
+jsgf_rule_t *jsgf_optional_new(jsgf_t *jsgf, jsgf_rhs_t *exp);
+jsgf_rule_t *jsgf_define_rule(jsgf_t *jsgf, char *name, jsgf_rhs_t *rhs, int public);
+jsgf_rule_t *jsgf_import_rule(jsgf_t *jsgf, char *name);
+
+int jsgf_atom_free(jsgf_atom_t *atom);
+int jsgf_rule_free(jsgf_rule_t *rule);
+jsgf_rule_t *jsgf_rule_retain(jsgf_rule_t *rule);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __JSGF_H__ */
--- /dev/null
+
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.4.1"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 1
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+
+
+/* Copy the first part of user declarations. */
+
+/* Line 189 of yacc.c */
+#line 37 "jsgf_parser.y"
+
+#include <stdio.h>
+#include <string.h>
+
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/err.h>
+
+#include "jsgf_internal.h"
+#include "jsgf_parser.h"
+#include "jsgf_scanner.h"
+
+/* Suppress warnings from generated code */
+#if defined _MSC_VER
+#pragma warning(disable: 4273)
+#endif
+
+void yyerror(yyscan_t lex, jsgf_t *jsgf, const char *s);
+
+
+
+/* Line 189 of yacc.c */
+#line 95 "jsgf_parser.c"
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ HEADER = 258,
+ GRAMMAR = 259,
+ IMPORT = 260,
+ PUBLIC = 261,
+ TOKEN = 262,
+ RULENAME = 263,
+ TAG = 264,
+ WEIGHT = 265
+ };
+#endif
+/* Tokens. */
+#define HEADER 258
+#define GRAMMAR 259
+#define IMPORT 260
+#define PUBLIC 261
+#define TOKEN 262
+#define RULENAME 263
+#define TAG 264
+#define WEIGHT 265
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 214 of yacc.c */
+#line 63 "jsgf_parser.y"
+
+ char *name;
+ float weight;
+ jsgf_rule_t *rule;
+ jsgf_rhs_t *rhs;
+ jsgf_atom_t *atom;
+
+
+
+/* Line 214 of yacc.c */
+#line 161 "jsgf_parser.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 264 of yacc.c */
+#line 173 "jsgf_parser.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+ int yyi;
+#endif
+{
+ return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 7
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 54
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 20
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 16
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 33
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 58
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 265
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 14, 15, 18, 19, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 11,
+ 2, 12, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 16, 2, 17, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 13, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint8 yyprhs[] =
+{
+ 0, 0, 3, 5, 8, 12, 15, 18, 22, 27,
+ 33, 37, 39, 42, 46, 48, 51, 56, 62, 64,
+ 68, 70, 73, 75, 78, 80, 83, 87, 91, 93,
+ 95, 97, 99, 102
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 21, 0, -1, 22, -1, 22, 27, -1, 22, 25,
+ 27, -1, 23, 24, -1, 3, 11, -1, 3, 7,
+ 11, -1, 3, 7, 7, 11, -1, 3, 7, 7,
+ 7, 11, -1, 4, 7, 11, -1, 26, -1, 25,
+ 26, -1, 5, 8, 11, -1, 28, -1, 27, 28,
+ -1, 8, 12, 29, 11, -1, 6, 8, 12, 29,
+ 11, -1, 30, -1, 29, 13, 30, -1, 31, -1,
+ 30, 31, -1, 32, -1, 31, 9, -1, 35, -1,
+ 10, 35, -1, 14, 29, 15, -1, 16, 29, 17,
+ -1, 7, -1, 8, -1, 33, -1, 34, -1, 35,
+ 18, -1, 35, 19, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint8 yyrline[] =
+{
+ 0, 80, 80, 81, 82, 85, 88, 89, 90, 91,
+ 95, 98, 99, 102, 105, 106, 109, 110, 113, 114,
+ 119, 121, 125, 126, 130, 131, 134, 137, 140, 141,
+ 142, 143, 144, 145
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "HEADER", "GRAMMAR", "IMPORT", "PUBLIC",
+ "TOKEN", "RULENAME", "TAG", "WEIGHT", "';'", "'='", "'|'", "'('", "')'",
+ "'['", "']'", "'*'", "'+'", "$accept", "grammar", "header",
+ "jsgf_header", "grammar_header", "import_header", "import_statement",
+ "rule_list", "rule", "alternate_list", "rule_expansion",
+ "tagged_rule_item", "rule_item", "rule_group", "rule_optional",
+ "rule_atom", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 59, 61, 124, 40, 41, 91, 93, 42, 43
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 20, 21, 21, 21, 22, 23, 23, 23, 23,
+ 24, 25, 25, 26, 27, 27, 28, 28, 29, 29,
+ 30, 30, 31, 31, 32, 32, 33, 34, 35, 35,
+ 35, 35, 35, 35
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 2, 3, 2, 2, 3, 4, 5,
+ 3, 1, 2, 3, 1, 2, 4, 5, 1, 3,
+ 1, 2, 1, 2, 1, 2, 3, 3, 1, 1,
+ 1, 1, 2, 2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 0, 0, 0, 2, 0, 0, 6, 1, 0, 0,
+ 0, 0, 11, 3, 14, 0, 5, 0, 7, 0,
+ 0, 0, 12, 4, 15, 0, 0, 8, 13, 0,
+ 28, 29, 0, 0, 0, 0, 18, 20, 22, 30,
+ 31, 24, 10, 9, 0, 25, 0, 0, 16, 0,
+ 21, 23, 32, 33, 17, 26, 27, 19
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 2, 3, 4, 16, 11, 12, 13, 14, 35,
+ 36, 37, 38, 39, 40, 41
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -37
+static const yytype_int8 yypact[] =
+{
+ -1, -2, 36, 22, 35, 8, -37, -37, 32, 33,
+ 30, 22, -37, 17, -37, 37, -37, 13, -37, 34,
+ 31, -4, -37, 17, -37, 38, 39, -37, -37, -4,
+ -37, -37, 0, -4, -4, 18, -4, 42, -37, -37,
+ -37, 19, -37, -37, 21, 19, 20, 9, -37, -4,
+ 42, -37, -37, -37, -37, -37, -37, -4
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -37, -37, -37, -37, -37, -37, 41, 43, -12, -16,
+ -3, -36, -37, -37, -37, 15
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -1
+static const yytype_uint8 yytable[] =
+{
+ 50, 24, 1, 30, 31, 5, 32, 30, 31, 6,
+ 33, 24, 34, 44, 33, 17, 34, 46, 47, 18,
+ 26, 50, 49, 9, 27, 10, 56, 8, 9, 48,
+ 10, 49, 54, 49, 49, 55, 7, 52, 53, 15,
+ 19, 20, 21, 29, 25, 28, 57, 45, 0, 42,
+ 43, 51, 22, 0, 23
+};
+
+static const yytype_int8 yycheck[] =
+{
+ 36, 13, 3, 7, 8, 7, 10, 7, 8, 11,
+ 14, 23, 16, 29, 14, 7, 16, 33, 34, 11,
+ 7, 57, 13, 6, 11, 8, 17, 5, 6, 11,
+ 8, 13, 11, 13, 13, 15, 0, 18, 19, 4,
+ 8, 8, 12, 12, 7, 11, 49, 32, -1, 11,
+ 11, 9, 11, -1, 11
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 3, 21, 22, 23, 7, 11, 0, 5, 6,
+ 8, 25, 26, 27, 28, 4, 24, 7, 11, 8,
+ 8, 12, 26, 27, 28, 7, 7, 11, 11, 12,
+ 7, 8, 10, 14, 16, 29, 30, 31, 32, 33,
+ 34, 35, 11, 11, 29, 35, 29, 29, 11, 13,
+ 31, 9, 18, 19, 11, 15, 17, 30
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (yyscanner, jsgf, YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval, yyscanner)
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, yyscanner, jsgf); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, yyscan_t yyscanner, jsgf_t *jsgf)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner, jsgf)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+ yyscan_t yyscanner;
+ jsgf_t *jsgf;
+#endif
+{
+ if (!yyvaluep)
+ return;
+ YYUSE (yyscanner);
+ YYUSE (jsgf);
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, yyscan_t yyscanner, jsgf_t *jsgf)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep, yyscanner, jsgf)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+ yyscan_t yyscanner;
+ jsgf_t *jsgf;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner, jsgf);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, yyscan_t yyscanner, jsgf_t *jsgf)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule, yyscanner, jsgf)
+ YYSTYPE *yyvsp;
+ int yyrule;
+ yyscan_t yyscanner;
+ jsgf_t *jsgf;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , yyscanner, jsgf);
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule, yyscanner, jsgf); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+\f
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+\f
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, yyscan_t yyscanner, jsgf_t *jsgf)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep, yyscanner, jsgf)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+ yyscan_t yyscanner;
+ jsgf_t *jsgf;
+#endif
+{
+ YYUSE (yyvaluep);
+ YYUSE (yyscanner);
+ YYUSE (jsgf);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+/* Prevent warnings from -Wmissing-prototypes. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (yyscan_t yyscanner, jsgf_t *jsgf);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+
+
+/*-------------------------.
+| yyparse or yypush_parse. |
+`-------------------------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (yyscan_t yyscanner, jsgf_t *jsgf)
+#else
+int
+yyparse (yyscanner, jsgf)
+ yyscan_t yyscanner;
+ jsgf_t *jsgf;
+#endif
+#endif
+{
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+ /* Number of syntax errors so far. */
+ int yynerrs;
+
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 5:
+
+/* Line 1455 of yacc.c */
+#line 85 "jsgf_parser.y"
+ { jsgf->name = (yyvsp[(2) - (2)].name); }
+ break;
+
+ case 7:
+
+/* Line 1455 of yacc.c */
+#line 89 "jsgf_parser.y"
+ { jsgf->version = (yyvsp[(2) - (3)].name); }
+ break;
+
+ case 8:
+
+/* Line 1455 of yacc.c */
+#line 90 "jsgf_parser.y"
+ { jsgf->version = (yyvsp[(2) - (4)].name); jsgf->charset = (yyvsp[(3) - (4)].name); }
+ break;
+
+ case 9:
+
+/* Line 1455 of yacc.c */
+#line 91 "jsgf_parser.y"
+ { jsgf->version = (yyvsp[(2) - (5)].name); jsgf->charset = (yyvsp[(3) - (5)].name);
+ jsgf->locale = (yyvsp[(4) - (5)].name); }
+ break;
+
+ case 10:
+
+/* Line 1455 of yacc.c */
+#line 95 "jsgf_parser.y"
+ { (yyval.name) = (yyvsp[(2) - (3)].name); }
+ break;
+
+ case 13:
+
+/* Line 1455 of yacc.c */
+#line 102 "jsgf_parser.y"
+ { jsgf_import_rule(jsgf, (yyvsp[(2) - (3)].name)); ckd_free((yyvsp[(2) - (3)].name)); }
+ break;
+
+ case 16:
+
+/* Line 1455 of yacc.c */
+#line 109 "jsgf_parser.y"
+ { jsgf_define_rule(jsgf, (yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].rhs), 0); ckd_free((yyvsp[(1) - (4)].name)); }
+ break;
+
+ case 17:
+
+/* Line 1455 of yacc.c */
+#line 110 "jsgf_parser.y"
+ { jsgf_define_rule(jsgf, (yyvsp[(2) - (5)].name), (yyvsp[(4) - (5)].rhs), 1); ckd_free((yyvsp[(2) - (5)].name)); }
+ break;
+
+ case 18:
+
+/* Line 1455 of yacc.c */
+#line 113 "jsgf_parser.y"
+ { (yyval.rhs) = (yyvsp[(1) - (1)].rhs); (yyval.rhs)->atoms = glist_reverse((yyval.rhs)->atoms); }
+ break;
+
+ case 19:
+
+/* Line 1455 of yacc.c */
+#line 114 "jsgf_parser.y"
+ { (yyval.rhs) = (yyvsp[(3) - (3)].rhs);
+ (yyval.rhs)->atoms = glist_reverse((yyval.rhs)->atoms);
+ (yyval.rhs)->alt = (yyvsp[(1) - (3)].rhs); }
+ break;
+
+ case 20:
+
+/* Line 1455 of yacc.c */
+#line 119 "jsgf_parser.y"
+ { (yyval.rhs) = ckd_calloc(1, sizeof(*(yyval.rhs)));
+ (yyval.rhs)->atoms = glist_add_ptr((yyval.rhs)->atoms, (yyvsp[(1) - (1)].atom)); }
+ break;
+
+ case 21:
+
+/* Line 1455 of yacc.c */
+#line 121 "jsgf_parser.y"
+ { (yyval.rhs) = (yyvsp[(1) - (2)].rhs);
+ (yyval.rhs)->atoms = glist_add_ptr((yyval.rhs)->atoms, (yyvsp[(2) - (2)].atom)); }
+ break;
+
+ case 23:
+
+/* Line 1455 of yacc.c */
+#line 126 "jsgf_parser.y"
+ { (yyval.atom) = (yyvsp[(1) - (2)].atom);
+ (yyval.atom)->tags = glist_add_ptr((yyval.atom)->tags, (yyvsp[(2) - (2)].name)); }
+ break;
+
+ case 25:
+
+/* Line 1455 of yacc.c */
+#line 131 "jsgf_parser.y"
+ { (yyval.atom) = (yyvsp[(2) - (2)].atom); (yyval.atom)->weight = (yyvsp[(1) - (2)].weight); }
+ break;
+
+ case 26:
+
+/* Line 1455 of yacc.c */
+#line 134 "jsgf_parser.y"
+ { (yyval.rule) = jsgf_define_rule(jsgf, NULL, (yyvsp[(2) - (3)].rhs), 0); }
+ break;
+
+ case 27:
+
+/* Line 1455 of yacc.c */
+#line 137 "jsgf_parser.y"
+ { (yyval.rule) = jsgf_optional_new(jsgf, (yyvsp[(2) - (3)].rhs)); }
+ break;
+
+ case 28:
+
+/* Line 1455 of yacc.c */
+#line 140 "jsgf_parser.y"
+ { (yyval.atom) = jsgf_atom_new((yyvsp[(1) - (1)].name), 1.0); ckd_free((yyvsp[(1) - (1)].name)); }
+ break;
+
+ case 29:
+
+/* Line 1455 of yacc.c */
+#line 141 "jsgf_parser.y"
+ { (yyval.atom) = jsgf_atom_new((yyvsp[(1) - (1)].name), 1.0); ckd_free((yyvsp[(1) - (1)].name)); }
+ break;
+
+ case 30:
+
+/* Line 1455 of yacc.c */
+#line 142 "jsgf_parser.y"
+ { (yyval.atom) = jsgf_atom_new((yyvsp[(1) - (1)].rule)->name, 1.0); }
+ break;
+
+ case 31:
+
+/* Line 1455 of yacc.c */
+#line 143 "jsgf_parser.y"
+ { (yyval.atom) = jsgf_atom_new((yyvsp[(1) - (1)].rule)->name, 1.0); }
+ break;
+
+ case 32:
+
+/* Line 1455 of yacc.c */
+#line 144 "jsgf_parser.y"
+ { (yyval.atom) = jsgf_kleene_new(jsgf, (yyvsp[(1) - (2)].atom), 0); }
+ break;
+
+ case 33:
+
+/* Line 1455 of yacc.c */
+#line 145 "jsgf_parser.y"
+ { (yyval.atom) = jsgf_kleene_new(jsgf, (yyvsp[(1) - (2)].atom), 1); }
+ break;
+
+
+
+/* Line 1455 of yacc.c */
+#line 1578 "jsgf_parser.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (yyscanner, jsgf, YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yyscanner, jsgf, yymsg);
+ }
+ else
+ {
+ yyerror (yyscanner, jsgf, YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, yyscanner, jsgf);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, yyscanner, jsgf);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined(yyoverflow) || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (yyscanner, jsgf, YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, yyscanner, jsgf);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, yyscanner, jsgf);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
+/* Line 1675 of yacc.c */
+#line 148 "jsgf_parser.y"
+
+
+void
+yyerror(yyscan_t lex, jsgf_t *jsgf, const char *s)
+{
+ fprintf(stderr, "ERROR: %s\n", s);
+}
+
--- /dev/null
+
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ HEADER = 258,
+ GRAMMAR = 259,
+ IMPORT = 260,
+ PUBLIC = 261,
+ TOKEN = 262,
+ RULENAME = 263,
+ TAG = 264,
+ WEIGHT = 265
+ };
+#endif
+/* Tokens. */
+#define HEADER 258
+#define GRAMMAR 259
+#define IMPORT 260
+#define PUBLIC 261
+#define TOKEN 262
+#define RULENAME 263
+#define TAG 264
+#define WEIGHT 265
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 1676 of yacc.c */
+#line 63 "jsgf_parser.y"
+
+ char *name;
+ float weight;
+ jsgf_rule_t *rule;
+ jsgf_rhs_t *rhs;
+ jsgf_atom_t *atom;
+
+
+
+/* Line 1676 of yacc.c */
+#line 82 "jsgf_parser.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+
+
--- /dev/null
+/* -*- c-basic-offset:4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+%{
+#include <stdio.h>
+#include <string.h>
+
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/err.h>
+
+#include "jsgf_internal.h"
+#include "jsgf_parser.h"
+#include "jsgf_scanner.h"
+
+/* Suppress warnings from generated code */
+#if defined _MSC_VER
+#pragma warning(disable: 4273)
+#endif
+
+void yyerror(yyscan_t lex, jsgf_t *jsgf, const char *s);
+
+%}
+
+%pure-parser
+%lex-param { yyscan_t yyscanner }
+%parse-param { yyscan_t yyscanner }
+%parse-param { jsgf_t *jsgf }
+
+%union {
+ char *name;
+ float weight;
+ jsgf_rule_t *rule;
+ jsgf_rhs_t *rhs;
+ jsgf_atom_t *atom;
+}
+
+%token HEADER GRAMMAR IMPORT PUBLIC
+%token <name> TOKEN RULENAME TAG
+%token <weight> WEIGHT
+%type <atom> rule_atom rule_item tagged_rule_item
+%type <rhs> rule_expansion alternate_list
+%type <name> grammar_header
+%type <rule> rule_group rule_optional
+%%
+
+grammar: header
+ | header rule_list
+ | header import_header rule_list
+ ;
+
+header: jsgf_header grammar_header { jsgf->name = $2; }
+ ;
+
+jsgf_header: HEADER ';'
+ | HEADER TOKEN ';' { jsgf->version = $2; }
+ | HEADER TOKEN TOKEN ';' { jsgf->version = $2; jsgf->charset = $3; }
+ | HEADER TOKEN TOKEN TOKEN ';' { jsgf->version = $2; jsgf->charset = $3;
+ jsgf->locale = $4; }
+ ;
+
+grammar_header: GRAMMAR TOKEN ';' { $$ = $2; }
+ ;
+
+import_header: import_statement
+ | import_header import_statement
+ ;
+
+import_statement: IMPORT RULENAME ';' { jsgf_import_rule(jsgf, $2); ckd_free($2); }
+ ;
+
+rule_list: rule
+ | rule_list rule
+ ;
+
+rule: RULENAME '=' alternate_list ';' { jsgf_define_rule(jsgf, $1, $3, 0); ckd_free($1); }
+| PUBLIC RULENAME '=' alternate_list ';' { jsgf_define_rule(jsgf, $2, $4, 1); ckd_free($2); }
+ ;
+
+alternate_list: rule_expansion { $$ = $1; $$->atoms = glist_reverse($$->atoms); }
+ | alternate_list '|' rule_expansion { $$ = $3;
+ $$->atoms = glist_reverse($$->atoms);
+ $$->alt = $1; }
+ ;
+
+rule_expansion: tagged_rule_item { $$ = ckd_calloc(1, sizeof(*$$));
+ $$->atoms = glist_add_ptr($$->atoms, $1); }
+ | rule_expansion tagged_rule_item { $$ = $1;
+ $$->atoms = glist_add_ptr($$->atoms, $2); }
+ ;
+
+tagged_rule_item: rule_item
+ | tagged_rule_item TAG { $$ = $1;
+ $$->tags = glist_add_ptr($$->tags, $2); }
+ ;
+
+rule_item: rule_atom
+ | WEIGHT rule_atom { $$ = $2; $$->weight = $1; }
+ ;
+
+rule_group: '(' alternate_list ')' { $$ = jsgf_define_rule(jsgf, NULL, $2, 0); }
+ ;
+
+rule_optional: '[' alternate_list ']' { $$ = jsgf_optional_new(jsgf, $2); }
+ ;
+
+rule_atom: TOKEN { $$ = jsgf_atom_new($1, 1.0); ckd_free($1); }
+ | RULENAME { $$ = jsgf_atom_new($1, 1.0); ckd_free($1); }
+ | rule_group { $$ = jsgf_atom_new($1->name, 1.0); }
+ | rule_optional { $$ = jsgf_atom_new($1->name, 1.0); }
+ | rule_atom '*' { $$ = jsgf_kleene_new(jsgf, $1, 0); }
+ | rule_atom '+' { $$ = jsgf_kleene_new(jsgf, $1, 1); }
+ ;
+
+%%
+
+void
+yyerror(yyscan_t lex, jsgf_t *jsgf, const char *s)
+{
+ fprintf(stderr, "ERROR: %s\n", s);
+}
--- /dev/null
+#line 2 "jsgf_scanner.c"
+
+#line 4 "jsgf_scanner.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yyg->yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yyg->yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin ,yyscanner )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = yyg->yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
+ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
+
+void yyrestart (FILE *input_file ,yyscan_t yyscanner );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void yypop_buffer_state (yyscan_t yyscanner );
+
+static void yyensure_buffer_stack (yyscan_t yyscanner );
+static void yy_load_buffer_state (yyscan_t yyscanner );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+
+void *yyalloc (yy_size_t ,yyscan_t yyscanner );
+void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
+void yyfree (void * ,yyscan_t yyscanner );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define yywrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+typedef int yy_state_type;
+
+#define yytext_ptr yytext_r
+
+static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
+static int yy_get_next_buffer (yyscan_t yyscanner );
+static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ yyg->yytext_ptr = yy_bp; \
+ yyleng = (size_t) (yy_cp - yy_bp); \
+ yyg->yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yyg->yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 16
+#define YY_END_OF_BUFFER 17
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[77] =
+ { 0,
+ 0, 0, 0, 0, 17, 12, 1, 1, 1, 12,
+ 12, 15, 15, 15, 12, 12, 12, 15, 12, 5,
+ 1, 5, 12, 12, 0, 12, 12, 12, 3, 0,
+ 14, 0, 0, 12, 12, 12, 0, 0, 11, 12,
+ 4, 13, 0, 12, 0, 12, 12, 12, 0, 0,
+ 2, 14, 10, 12, 12, 12, 0, 0, 11, 12,
+ 13, 0, 12, 12, 12, 12, 12, 6, 12, 12,
+ 12, 12, 8, 9, 7, 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 5, 6, 1, 1, 1, 1, 7,
+ 7, 8, 7, 1, 1, 9, 10, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 1, 7, 12,
+ 7, 13, 1, 1, 1, 1, 1, 1, 1, 14,
+ 15, 1, 1, 16, 1, 1, 1, 1, 1, 1,
+ 1, 1, 17, 1, 1, 1, 1, 1, 1, 1,
+ 7, 18, 7, 1, 1, 1, 19, 20, 21, 1,
+
+ 1, 1, 22, 1, 23, 1, 1, 24, 25, 1,
+ 26, 27, 1, 28, 1, 29, 30, 1, 1, 1,
+ 1, 1, 31, 7, 32, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 33, 1, 1, 1,
+ 34, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 35, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_meta[36] =
+ { 0,
+ 1, 2, 2, 1, 1, 1, 2, 2, 1, 2,
+ 1, 3, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 1, 1, 1
+ } ;
+
+static yyconst flex_int16_t yy_base[87] =
+ { 0,
+ 0, 0, 34, 37, 148, 0, 196, 196, 0, 44,
+ 130, 196, 50, 0, 115, 116, 106, 32, 102, 196,
+ 196, 124, 0, 75, 48, 0, 106, 116, 196, 121,
+ 128, 58, 117, 110, 101, 107, 47, 52, 196, 91,
+ 196, 196, 68, 0, 76, 0, 137, 108, 33, 119,
+ 196, 196, 196, 96, 94, 93, 71, 94, 72, 104,
+ 87, 97, 87, 74, 70, 73, 79, 0, 72, 45,
+ 51, 35, 0, 0, 0, 196, 169, 47, 172, 175,
+ 177, 180, 183, 186, 189, 192
+ } ;
+
+static yyconst flex_int16_t yy_def[87] =
+ { 0,
+ 76, 1, 77, 77, 76, 78, 76, 76, 78, 79,
+ 78, 76, 76, 80, 78, 78, 78, 81, 78, 76,
+ 76, 76, 78, 79, 82, 78, 83, 78, 76, 76,
+ 84, 76, 80, 78, 78, 78, 81, 85, 76, 78,
+ 76, 76, 86, 24, 82, 24, 83, 78, 76, 84,
+ 76, 76, 76, 78, 78, 78, 81, 85, 81, 78,
+ 82, 86, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 0, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76
+ } ;
+
+static yyconst flex_int16_t yy_nxt[232] =
+ { 0,
+ 6, 7, 8, 9, 10, 11, 12, 12, 6, 13,
+ 6, 14, 12, 6, 6, 6, 6, 6, 6, 6,
+ 6, 15, 16, 6, 6, 6, 17, 6, 6, 6,
+ 18, 12, 6, 6, 19, 21, 8, 21, 21, 8,
+ 21, 22, 52, 49, 22, 25, 25, 23, 26, 38,
+ 25, 25, 42, 25, 37, 25, 25, 29, 30, 31,
+ 32, 27, 75, 39, 38, 43, 30, 52, 32, 58,
+ 25, 74, 61, 73, 25, 25, 25, 25, 39, 26,
+ 42, 25, 25, 59, 25, 62, 25, 25, 38, 38,
+ 72, 42, 27, 43, 28, 71, 37, 70, 69, 25,
+
+ 68, 61, 39, 39, 43, 25, 25, 45, 25, 67,
+ 46, 58, 45, 45, 62, 45, 66, 45, 45, 65,
+ 64, 51, 63, 47, 60, 59, 56, 55, 54, 53,
+ 51, 49, 48, 41, 40, 36, 45, 45, 45, 25,
+ 35, 46, 34, 45, 45, 28, 45, 76, 45, 45,
+ 76, 76, 76, 76, 47, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 45, 45, 20,
+ 20, 20, 24, 24, 24, 33, 33, 37, 37, 37,
+ 25, 25, 25, 44, 44, 44, 50, 50, 50, 57,
+ 57, 57, 45, 45, 45, 5, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76
+ } ;
+
+static yyconst flex_int16_t yy_chk[232] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 3, 3, 4, 4,
+ 4, 3, 49, 49, 4, 10, 10, 78, 10, 18,
+ 10, 10, 25, 10, 38, 10, 10, 13, 13, 13,
+ 13, 10, 72, 18, 37, 25, 32, 32, 32, 38,
+ 43, 71, 43, 70, 10, 10, 24, 24, 37, 24,
+ 45, 24, 24, 38, 24, 43, 24, 24, 57, 59,
+ 69, 61, 24, 45, 67, 66, 58, 65, 64, 62,
+
+ 63, 62, 57, 59, 61, 24, 24, 27, 27, 60,
+ 27, 58, 27, 27, 62, 27, 56, 27, 27, 55,
+ 54, 50, 48, 27, 40, 58, 36, 35, 34, 33,
+ 31, 30, 28, 22, 19, 17, 27, 27, 47, 47,
+ 16, 47, 15, 47, 47, 11, 47, 5, 47, 47,
+ 0, 0, 0, 0, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 47, 77,
+ 77, 77, 79, 79, 79, 80, 80, 81, 81, 81,
+ 82, 82, 82, 83, 83, 83, 84, 84, 84, 85,
+ 85, 85, 86, 86, 86, 76, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76
+ } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+#line 1 "_jsgf_scanner.l"
+/* -*- mode: text -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/* YOU MUST USE FLEX 2.5.33 OR NEWER TO PROCESS THIS FILE!!! */
+#line 39 "_jsgf_scanner.l"
+
+#include "jsgf_internal.h"
+#include "jsgf_parser.h"
+
+
+#line 551 "jsgf_scanner.c"
+
+#define INITIAL 0
+#define COMMENT 1
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Holds the entire state of the reentrant scanner. */
+struct yyguts_t
+ {
+
+ /* User-defined. Not touched by flex. */
+ YY_EXTRA_TYPE yyextra_r;
+
+ /* The rest are the same as the globals declared in the non-reentrant scanner. */
+ FILE *yyin_r, *yyout_r;
+ size_t yy_buffer_stack_top; /**< index of top of stack. */
+ size_t yy_buffer_stack_max; /**< capacity of stack. */
+ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
+ char yy_hold_char;
+ int yy_n_chars;
+ int yyleng_r;
+ char *yy_c_buf_p;
+ int yy_init;
+ int yy_start;
+ int yy_did_buffer_switch_on_eof;
+ int yy_start_stack_ptr;
+ int yy_start_stack_depth;
+ int *yy_start_stack;
+ yy_state_type yy_last_accepting_state;
+ char* yy_last_accepting_cpos;
+
+ int yylineno_r;
+ int yy_flex_debug_r;
+
+ char *yytext_r;
+ int yy_more_flag;
+ int yy_more_len;
+
+ YYSTYPE * yylval_r;
+
+ }; /* end struct yyguts_t */
+
+static int yy_init_globals (yyscan_t yyscanner );
+
+ /* This must go here because YYSTYPE and YYLTYPE are included
+ * from bison output in section 1.*/
+ # define yylval yyg->yylval_r
+
+int yylex_init (yyscan_t* scanner);
+
+int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (yyscan_t yyscanner );
+
+int yyget_debug (yyscan_t yyscanner );
+
+void yyset_debug (int debug_flag ,yyscan_t yyscanner );
+
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+
+FILE *yyget_in (yyscan_t yyscanner );
+
+void yyset_in (FILE * in_str ,yyscan_t yyscanner );
+
+FILE *yyget_out (yyscan_t yyscanner );
+
+void yyset_out (FILE * out_str ,yyscan_t yyscanner );
+
+int yyget_leng (yyscan_t yyscanner );
+
+char *yyget_text (yyscan_t yyscanner );
+
+int yyget_lineno (yyscan_t yyscanner );
+
+void yyset_lineno (int line_number ,yyscan_t yyscanner );
+
+YYSTYPE * yyget_lval (yyscan_t yyscanner );
+
+void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (yyscan_t yyscanner );
+#else
+extern int yywrap (yyscan_t yyscanner );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (yyscan_t yyscanner );
+#else
+static int input (yyscan_t yyscanner );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ unsigned n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex \
+ (YYSTYPE * yylval_param ,yyscan_t yyscanner);
+
+#define YY_DECL int yylex \
+ (YYSTYPE * yylval_param , yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+#line 57 "_jsgf_scanner.l"
+
+
+#line 788 "jsgf_scanner.c"
+
+ yylval = yylval_param;
+
+ if ( !yyg->yy_init )
+ {
+ yyg->yy_init = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! yyg->yy_start )
+ yyg->yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ yyensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ }
+
+ yy_load_buffer_state(yyscanner );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* Support of yytext. */
+ *yy_cp = yyg->yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = yyg->yy_start;
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 77 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 196 );
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+ if ( yy_act == 0 )
+ { /* have to back up */
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+ yy_act = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yyg->yy_hold_char;
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+ goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 59 "_jsgf_scanner.l"
+; /* ignore whitespace */
+ YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 60 "_jsgf_scanner.l"
+; /* single-line comments */
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 61 "_jsgf_scanner.l"
+{ BEGIN(COMMENT); } /* C-style comments */
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 62 "_jsgf_scanner.l"
+{ BEGIN(INITIAL); }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 63 "_jsgf_scanner.l"
+; /* Ignore stuff in comment mode */
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 65 "_jsgf_scanner.l"
+return HEADER;
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 66 "_jsgf_scanner.l"
+return GRAMMAR;
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 67 "_jsgf_scanner.l"
+return IMPORT;
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 68 "_jsgf_scanner.l"
+return PUBLIC;
+ YY_BREAK
+case 10:
+/* rule 10 can match eol */
+YY_RULE_SETUP
+#line 70 "_jsgf_scanner.l"
+{ yylval->name = strdup(yytext); return RULENAME; }
+ YY_BREAK
+case 11:
+/* rule 11 can match eol */
+YY_RULE_SETUP
+#line 71 "_jsgf_scanner.l"
+{ yylval->name = strdup(yytext); return TAG; }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 72 "_jsgf_scanner.l"
+{ yylval->name = strdup(yytext); return TOKEN; }
+ YY_BREAK
+case 13:
+/* rule 13 can match eol */
+YY_RULE_SETUP
+#line 73 "_jsgf_scanner.l"
+{ yylval->name = strdup(yytext); return TOKEN; }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 74 "_jsgf_scanner.l"
+{ yylval->weight = atof_c(yytext+1); return WEIGHT; }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 76 "_jsgf_scanner.l"
+return yytext[0]; /* Single-character tokens */
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 78 "_jsgf_scanner.l"
+ECHO;
+ YY_BREAK
+#line 958 "jsgf_scanner.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMENT):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yyg->yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
+
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yyg->yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yyg->yy_c_buf_p;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yyg->yy_did_buffer_switch_on_eof = 0;
+
+ if ( yywrap(yyscanner ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p =
+ yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yyg->yy_c_buf_p =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = yyg->yytext_ptr;
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ yyg->yy_n_chars, (size_t) num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ if ( yyg->yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart(yyin ,yyscanner);
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ yyg->yy_n_chars += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_current_state = yyg->yy_start;
+
+ for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 77 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
+{
+ register int yy_is_jam;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
+ register char *yy_cp = yyg->yy_c_buf_p;
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 77 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 76);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
+{
+ register char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* undo effects of setting up yytext */
+ *yy_cp = yyg->yy_hold_char;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = yyg->yy_n_chars + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ yyg->yytext_ptr = yy_bp;
+ yyg->yy_hold_char = *yy_cp;
+ yyg->yy_c_buf_p = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (yyscan_t yyscanner)
+#else
+ static int input (yyscan_t yyscanner)
+#endif
+
+{
+ int c;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+
+ if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ /* This was really a NUL. */
+ *yyg->yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+ ++yyg->yy_c_buf_p;
+
+ switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart(yyin ,yyscanner);
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap(yyscanner ) )
+ return EOF;
+
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput(yyscanner);
+#else
+ return input(yyscanner);
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
+ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
+ yyg->yy_hold_char = *++yyg->yy_c_buf_p;
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * @param yyscanner The scanner object.
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ }
+
+ yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
+ yy_load_buffer_state(yyscanner );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * @param yyscanner The scanner object.
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack (yyscanner);
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ yy_load_buffer_state(yyscanner );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+static void yy_load_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ yyg->yy_hold_char = *yyg->yy_c_buf_p;
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * @param yyscanner The scanner object.
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ yy_init_buffer(b,file ,yyscanner);
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * @param yyscanner The scanner object.
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree((void *) b->yy_ch_buf ,yyscanner );
+
+ yyfree((void *) b ,yyscanner );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
+
+{
+ int oerrno = errno;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_flush_buffer(b ,yyscanner);
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * @param yyscanner The scanner object.
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ yy_load_buffer_state(yyscanner );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ * @param yyscanner The scanner object.
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack(yyscanner);
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ yyg->yy_buffer_stack_top++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state(yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ * @param yyscanner The scanner object.
+ */
+void yypop_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if (yyg->yy_buffer_stack_top > 0)
+ --yyg->yy_buffer_stack_top;
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state(yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (yyscan_t yyscanner)
+{
+ int num_to_alloc;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (!yyg->yy_buffer_stack) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ yyg->yy_buffer_stack_top = 0;
+ return;
+ }
+
+ if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
+ (yyg->yy_buffer_stack,
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ yy_switch_to_buffer(b ,yyscanner );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
+{
+
+ return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) yyalloc(n ,yyscanner );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer(buf,n ,yyscanner);
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = yyg->yy_hold_char; \
+ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
+ yyg->yy_hold_char = *yyg->yy_c_buf_p; \
+ *yyg->yy_c_buf_p = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the user-defined data for this scanner.
+ * @param yyscanner The scanner object.
+ */
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyextra;
+}
+
+/** Get the current line number.
+ * @param yyscanner The scanner object.
+ */
+int yyget_lineno (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yylineno;
+}
+
+/** Get the current column number.
+ * @param yyscanner The scanner object.
+ */
+int yyget_column (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yycolumn;
+}
+
+/** Get the input stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *yyget_in (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyin;
+}
+
+/** Get the output stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *yyget_out (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyout;
+}
+
+/** Get the length of the current token.
+ * @param yyscanner The scanner object.
+ */
+int yyget_leng (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyleng;
+}
+
+/** Get the current token.
+ * @param yyscanner The scanner object.
+ */
+
+char *yyget_text (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yytext;
+}
+
+/** Set the user-defined data. This data is never touched by the scanner.
+ * @param user_defined The data to be associated with this scanner.
+ * @param yyscanner The scanner object.
+ */
+void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyextra = user_defined ;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * @param yyscanner The scanner object.
+ */
+void yyset_lineno (int line_number , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* lineno is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner);
+
+ yylineno = line_number;
+}
+
+/** Set the current column.
+ * @param line_number
+ * @param yyscanner The scanner object.
+ */
+void yyset_column (int column_no , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* column is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ yy_fatal_error( "yyset_column called with no buffer" , yyscanner);
+
+ yycolumn = column_no;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * @param yyscanner The scanner object.
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * in_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyin = in_str ;
+}
+
+void yyset_out (FILE * out_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyout = out_str ;
+}
+
+int yyget_debug (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yy_flex_debug;
+}
+
+void yyset_debug (int bdebug , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yy_flex_debug = bdebug ;
+}
+
+/* Accessor methods for yylval and yylloc */
+
+YYSTYPE * yyget_lval (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yylval;
+}
+
+void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yylval = yylval_param;
+}
+
+/* User-visible API */
+
+/* yylex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
+ */
+
+int yylex_init(yyscan_t* ptr_yy_globals)
+
+{
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+/* yylex_init_extra has the same functionality as yylex_init, but follows the
+ * convention of taking the scanner as the last argument. Note however, that
+ * this is a *pointer* to a scanner, as it will be allocated by this call (and
+ * is the reason, too, why this function also must handle its own declaration).
+ * The user defined value in the first argument will be available to yyalloc in
+ * the yyextra field.
+ */
+
+int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
+
+{
+ struct yyguts_t dummy_yyguts;
+
+ yyset_extra (yy_user_defined, &dummy_yyguts);
+
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in
+ yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ yyset_extra (yy_user_defined, *ptr_yy_globals);
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+static int yy_init_globals (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ yyg->yy_buffer_stack = 0;
+ yyg->yy_buffer_stack_top = 0;
+ yyg->yy_buffer_stack_max = 0;
+ yyg->yy_c_buf_p = (char *) 0;
+ yyg->yy_init = 0;
+ yyg->yy_start = 0;
+
+ yyg->yy_start_stack_ptr = 0;
+ yyg->yy_start_stack_depth = 0;
+ yyg->yy_start_stack = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state(yyscanner);
+ }
+
+ /* Destroy the stack itself. */
+ yyfree(yyg->yy_buffer_stack ,yyscanner);
+ yyg->yy_buffer_stack = NULL;
+
+ /* Destroy the start condition stack. */
+ yyfree(yyg->yy_start_stack ,yyscanner );
+ yyg->yy_start_stack = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( yyscanner);
+
+ /* Destroy the main struct (reentrant only). */
+ yyfree ( yyscanner , yyscanner );
+ yyscanner = NULL;
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size , yyscan_t yyscanner)
+{
+ return (void *) malloc( size );
+}
+
+void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr , yyscan_t yyscanner)
+{
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 78 "_jsgf_scanner.l"
+
+
+
--- /dev/null
+#ifndef yyHEADER_H
+#define yyHEADER_H 1
+#define yyIN_HEADER 1
+
+#line 6 "jsgf_scanner.h"
+
+#line 8 "jsgf_scanner.h"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void yyrestart (FILE *input_file ,yyscan_t yyscanner );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void yypop_buffer_state (yyscan_t yyscanner );
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+
+void *yyalloc (yy_size_t ,yyscan_t yyscanner );
+void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
+void yyfree (void * ,yyscan_t yyscanner );
+
+/* Begin user sect3 */
+
+#define yywrap(n) 1
+#define YY_SKIP_YYWRAP
+
+#define yytext_ptr yytext_r
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+#define COMMENT 1
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+int yylex_init (yyscan_t* scanner);
+
+int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (yyscan_t yyscanner );
+
+int yyget_debug (yyscan_t yyscanner );
+
+void yyset_debug (int debug_flag ,yyscan_t yyscanner );
+
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+
+FILE *yyget_in (yyscan_t yyscanner );
+
+void yyset_in (FILE * in_str ,yyscan_t yyscanner );
+
+FILE *yyget_out (yyscan_t yyscanner );
+
+void yyset_out (FILE * out_str ,yyscan_t yyscanner );
+
+int yyget_leng (yyscan_t yyscanner );
+
+char *yyget_text (yyscan_t yyscanner );
+
+int yyget_lineno (yyscan_t yyscanner );
+
+void yyset_lineno (int line_number ,yyscan_t yyscanner );
+
+YYSTYPE * yyget_lval (yyscan_t yyscanner );
+
+void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (yyscan_t yyscanner );
+#else
+extern int yywrap (yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex \
+ (YYSTYPE * yylval_param ,yyscan_t yyscanner);
+
+#define YY_DECL int yylex \
+ (YYSTYPE * yylval_param , yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#line 78 "_jsgf_scanner.l"
+
+
+#line 341 "jsgf_scanner.h"
+#undef yyIN_HEADER
+#endif /* yyHEADER_H */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file lm3g_model.c Core Sphinx 3-gram code used in
+ * DMP/DMP32/ARPA (for now) model code.
+ *
+ * Author: A cast of thousands, probably.
+ */
+#include <string.h>
+#include <assert.h>
+#include <limits.h>
+
+#include "sphinxbase/listelem_alloc.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/err.h"
+
+#include "lm3g_model.h"
+
+void
+lm3g_tginfo_free(ngram_model_t *base, lm3g_model_t *lm3g)
+{
+ if (lm3g->tginfo == NULL)
+ return;
+ listelem_alloc_free(lm3g->le);
+ ckd_free(lm3g->tginfo);
+}
+
+void
+lm3g_tginfo_reset(ngram_model_t *base, lm3g_model_t *lm3g)
+{
+ if (lm3g->tginfo == NULL)
+ return;
+ listelem_alloc_free(lm3g->le);
+ memset(lm3g->tginfo, 0, base->n_counts[0] * sizeof(tginfo_t *));
+ lm3g->le = listelem_alloc_init(sizeof(tginfo_t));
+}
+
+void
+lm3g_apply_weights(ngram_model_t *base,
+ lm3g_model_t *lm3g,
+ float32 lw, float32 wip, float32 uw)
+{
+ int32 log_wip, log_uw, log_uniform_weight;
+ int i;
+
+ /* Precalculate some log values we will like. */
+ log_wip = logmath_log(base->lmath, wip);
+ log_uw = logmath_log(base->lmath, uw);
+ log_uniform_weight = logmath_log(base->lmath, 1.0 - uw);
+
+ for (i = 0; i < base->n_counts[0]; ++i) {
+ int32 prob1, bo_wt, n_used;
+
+ /* Backoff weights just get scaled by the lw. */
+ bo_wt = (int32)(lm3g->unigrams[i].bo_wt1.l / base->lw);
+ /* Unscaling unigram probs is a bit more complicated, so punt
+ * it back to the general code. */
+ prob1 = ngram_ng_prob(base, i, NULL, 0, &n_used);
+ /* Now compute the new scaled probabilities. */
+ lm3g->unigrams[i].bo_wt1.l = (int32)(bo_wt * lw);
+ if (strcmp(base->word_str[i], "<s>") == 0) { /* FIXME: configurable start_sym */
+ /* Apply language weight and WIP */
+ lm3g->unigrams[i].prob1.l = (int32)(prob1 * lw) + log_wip;
+ }
+ else {
+ /* Interpolate unigram probability with uniform. */
+ prob1 += log_uw;
+ prob1 = logmath_add(base->lmath, prob1, base->log_uniform + log_uniform_weight);
+ /* Apply language weight and WIP */
+ lm3g->unigrams[i].prob1.l = (int32)(prob1 * lw) + log_wip;
+ }
+ }
+
+ for (i = 0; i < lm3g->n_prob2; ++i) {
+ int32 prob2;
+ /* Can't just punt this back to general code since it is quantized. */
+ prob2 = (int32)((lm3g->prob2[i].l - base->log_wip) / base->lw);
+ lm3g->prob2[i].l = (int32)(prob2 * lw) + log_wip;
+ }
+
+ if (base->n > 2) {
+ for (i = 0; i < lm3g->n_bo_wt2; ++i) {
+ lm3g->bo_wt2[i].l = (int32)(lm3g->bo_wt2[i].l / base->lw * lw);
+ }
+ for (i = 0; i < lm3g->n_prob3; i++) {
+ int32 prob3;
+ /* Can't just punt this back to general code since it is quantized. */
+ prob3 = (int32)((lm3g->prob3[i].l - base->log_wip) / base->lw);
+ lm3g->prob3[i].l = (int32)(prob3 * lw) + log_wip;
+ }
+ }
+
+ /* Store updated values in the model. */
+ base->log_wip = log_wip;
+ base->log_uw = log_uw;
+ base->log_uniform_weight = log_uniform_weight;
+ base->lw = lw;
+}
+
+int32
+lm3g_add_ug(ngram_model_t *base,
+ lm3g_model_t *lm3g, int32 wid, int32 lweight)
+{
+ int32 score;
+
+ /* This would be very bad if this happened! */
+ assert(!NGRAM_IS_CLASSWID(wid));
+
+ /* Reallocate unigram array. */
+ lm3g->unigrams = ckd_realloc(lm3g->unigrams,
+ sizeof(*lm3g->unigrams) * base->n_1g_alloc);
+ memset(lm3g->unigrams + base->n_counts[0], 0,
+ (base->n_1g_alloc - base->n_counts[0]) * sizeof(*lm3g->unigrams));
+ /* Reallocate tginfo array. */
+ lm3g->tginfo = ckd_realloc(lm3g->tginfo,
+ sizeof(*lm3g->tginfo) * base->n_1g_alloc);
+ memset(lm3g->tginfo + base->n_counts[0], 0,
+ (base->n_1g_alloc - base->n_counts[0]) * sizeof(*lm3g->tginfo));
+ /* FIXME: we really ought to update base->log_uniform *and*
+ * renormalize all the other unigrams. This is really slow, so I
+ * will probably just provide a function to renormalize after
+ * adding unigrams, for anyone who really cares. */
+ /* This could be simplified but then we couldn't do it in logmath */
+ score = lweight + base->log_uniform + base->log_uw;
+ score = logmath_add(base->lmath, score,
+ base->log_uniform + base->log_uniform_weight);
+ lm3g->unigrams[wid].prob1.l = score;
+ /* This unigram by definition doesn't participate in any bigrams,
+ * so its backoff weight and bigram pointer are both undefined. */
+ lm3g->unigrams[wid].bo_wt1.l = 0;
+ lm3g->unigrams[wid].bigrams = 0;
+ /* Finally, increase the unigram count */
+ ++base->n_counts[0];
+ /* FIXME: Note that this can actually be quite bogus due to the
+ * presence of class words. If wid falls outside the unigram
+ * count, increase it to compensate, at the cost of no longer
+ * really knowing how many unigrams we have :( */
+ if (wid >= base->n_counts[0])
+ base->n_counts[0] = wid + 1;
+
+ return score;
+}
+
+void
+init_sorted_list(sorted_list_t * l)
+{
+ /* FIXME FIXME FIXME: Fixed size array!??! */
+ l->list = ckd_calloc(MAX_SORTED_ENTRIES,
+ sizeof(sorted_entry_t));
+ l->list[0].val.l = INT_MIN;
+ l->list[0].lower = 0;
+ l->list[0].higher = 0;
+ l->free = 1;
+}
+
+void
+free_sorted_list(sorted_list_t * l)
+{
+ free(l->list);
+}
+
+lmprob_t *
+vals_in_sorted_list(sorted_list_t * l)
+{
+ lmprob_t *vals;
+ int32 i;
+
+ vals = ckd_calloc(l->free, sizeof(lmprob_t));
+ for (i = 0; i < l->free; i++)
+ vals[i] = l->list[i].val;
+ return (vals);
+}
+
+int32
+sorted_id(sorted_list_t * l, int32 *val)
+{
+ int32 i = 0;
+
+ for (;;) {
+ if (*val == l->list[i].val.l)
+ return (i);
+ if (*val < l->list[i].val.l) {
+ if (l->list[i].lower == 0) {
+ if (l->free >= MAX_SORTED_ENTRIES) {
+ /* Make the best of a bad situation. */
+ E_WARN("sorted list overflow (%d => %d)\n",
+ *val, l->list[i].val.l);
+ return i;
+ }
+
+ l->list[i].lower = l->free;
+ (l->free)++;
+ i = l->list[i].lower;
+ l->list[i].val.l = *val;
+ return (i);
+ }
+ else
+ i = l->list[i].lower;
+ }
+ else {
+ if (l->list[i].higher == 0) {
+ if (l->free >= MAX_SORTED_ENTRIES) {
+ /* Make the best of a bad situation. */
+ E_WARN("sorted list overflow (%d => %d)\n",
+ *val, l->list[i].val);
+ return i;
+ }
+
+ l->list[i].higher = l->free;
+ (l->free)++;
+ i = l->list[i].higher;
+ l->list[i].val.l = *val;
+ return (i);
+ }
+ else
+ i = l->list[i].higher;
+ }
+ }
+}
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file lm3g_model.h Core Sphinx 3-gram code used in
+ * DMP/DMP32/ARPA (for now) model code.
+ *
+ * Author: A cast of thousands, probably.
+ */
+
+#ifndef __NGRAM_MODEL_LM3G_H__
+#define __NGRAM_MODEL_LM3G_H__
+
+#include "sphinxbase/listelem_alloc.h"
+
+#include "ngram_model_internal.h"
+
+/**
+ * Type used to store language model probabilities
+ */
+typedef union {
+ float32 f;
+ int32 l;
+} lmprob_t;
+
+/**
+ * Bigram probs and bo-wts, and trigram probs are kept in separate
+ * tables rather than within the bigram_t and trigram_t structures.
+ * These tables hold unique prob and bo-wt values, and can be < 64K
+ * long. The following tree structure is used to construct these
+ * tables of unique values. Whenever a new value is read from the LM
+ * file, the sorted tree structure is searched to see if the value
+ * already exists, and inserted if not found.
+ */
+typedef struct sorted_entry_s {
+ lmprob_t val; /**< value being kept in this node */
+ uint16 lower; /**< index of another entry. All descendants down
+ this path have their val < this node's val.
+ 0 => no son exists (0 is root index) */
+ uint16 higher; /**< index of another entry. All descendants down
+ this path have their val > this node's val
+ 0 => no son exists (0 is root index) */
+} sorted_entry_t;
+
+/**
+ * The sorted list. list is a (64K long) array. The first entry is the
+ * root of the tree and is created during initialization.
+ */
+typedef struct {
+ sorted_entry_t *list;
+ int32 free; /**< first free element in list */
+} sorted_list_t;
+
+#define MAX_SORTED_ENTRIES 65534
+
+/**
+ * Unigram structure (common among all lm3g implementations)
+ */
+typedef struct unigram_s {
+ lmprob_t prob1; /**< Unigram probability. */
+ lmprob_t bo_wt1; /**< Unigram backoff weight. */
+ int32 bigrams; /**< Index of 1st entry in lm_t.bigrams[] */
+} unigram_t;
+
+/**
+ * Bigram structure (might be implemented differently)
+ */
+typedef struct bigram_s bigram_t;
+/**
+ * Trigram structure (might be implemented differently)
+ */
+typedef struct trigram_s trigram_t;
+
+
+/*
+ * To conserve space, bigram info is kept in many tables. Since the number
+ * of distinct values << #bigrams, these table indices can be 16-bit values.
+ * prob2 and bo_wt2 are such indices, but keeping trigram index is less easy.
+ * It is supposed to be the index of the first trigram entry for each bigram.
+ * But such an index cannot be represented in 16-bits, hence the following
+ * segmentation scheme: Partition bigrams into segments of BG_SEG_SZ
+ * consecutive entries, such that #trigrams in each segment <= 2**16 (the
+ * corresponding trigram segment). The bigram_t.trigrams value is then a
+ * 16-bit relative index within the trigram segment. A separate table--
+ * lm_t.tseg_base--has the index of the 1st trigram for each bigram segment.
+ */
+#define BG_SEG_SZ 512 /* chosen so that #trigram/segment <= 2**16 */
+#define LOG_BG_SEG_SZ 9
+
+/**
+ * Trigram information cache.
+ *
+ * The following trigram information cache eliminates most traversals of 1g->2g->3g
+ * tree to locate trigrams for a given bigram (lw1,lw2). The organization is optimized
+ * for locality of access (to the same lw1), given lw2.
+ */
+typedef struct tginfo_s {
+ int32 w1; /**< lw1 component of bigram lw1,lw2. All bigrams with
+ same lw2 linked together (see lm_t.tginfo). */
+ int32 n_tg; /**< number tg for parent bigram lw1,lw2 */
+ int32 bowt; /**< tg bowt for lw1,lw2 */
+ int32 used; /**< whether used since last lm_reset */
+ trigram_t *tg; /**< Trigrams for lw1,lw2 */
+ struct tginfo_s *next; /**< Next lw1 with same parent lw2; NULL if none. */
+} tginfo_t;
+
+/**
+ * Common internal structure for Sphinx 3-gram models.
+ */
+typedef struct lm3g_model_s {
+ unigram_t *unigrams;
+ bigram_t *bigrams;
+ trigram_t *trigrams;
+ lmprob_t *prob2; /**< Table of actual bigram probs */
+ int32 n_prob2; /**< prob2 size */
+ lmprob_t *bo_wt2; /**< Table of actual bigram backoff weights */
+ int32 n_bo_wt2; /**< bo_wt2 size */
+ lmprob_t *prob3; /**< Table of actual trigram probs */
+ int32 n_prob3; /**< prob3 size */
+ int32 *tseg_base; /**< tseg_base[i>>LOG_BG_SEG_SZ] = index of 1st
+ trigram for bigram segment (i>>LOG_BG_SEG_SZ) */
+ tginfo_t **tginfo; /**< tginfo[lw2] is head of linked list of trigram information for
+ some cached subset of bigrams (*,lw2). */
+ listelem_alloc_t *le; /**< List element allocator for tginfo. */
+} lm3g_model_t;
+
+void lm3g_tginfo_free(ngram_model_t *base, lm3g_model_t *lm3g);
+void lm3g_tginfo_reset(ngram_model_t *base, lm3g_model_t *lm3g);
+void lm3g_apply_weights(ngram_model_t *base,
+ lm3g_model_t *lm3g,
+ float32 lw, float32 wip, float32 uw);
+int32 lm3g_add_ug(ngram_model_t *base,
+ lm3g_model_t *lm3g, int32 wid, int32 lweight);
+
+
+/**
+ * Initialize sorted list with the 0-th entry = MIN_PROB_F, which may be needed
+ * to replace spurious values in the Darpa LM file.
+ */
+void init_sorted_list(sorted_list_t *l);
+void free_sorted_list(sorted_list_t *l);
+lmprob_t *vals_in_sorted_list(sorted_list_t *l);
+int32 sorted_id(sorted_list_t * l, int32 *val);
+
+#endif /* __NGRAM_MODEL_LM3G_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file lm3g_templates.c Core Sphinx 3-gram code used in
+ * DMP/DMP32/ARPA (for now) model code.
+ */
+
+#include <assert.h>
+
+/* Locate a specific bigram within a bigram list */
+#define BINARY_SEARCH_THRESH 16
+static int32
+find_bg(bigram_t * bg, int32 n, int32 w)
+{
+ int32 i, b, e;
+
+ /* Binary search until segment size < threshold */
+ b = 0;
+ e = n;
+ while (e - b > BINARY_SEARCH_THRESH) {
+ i = (b + e) >> 1;
+ if (bg[i].wid < w)
+ b = i + 1;
+ else if (bg[i].wid > w)
+ e = i;
+ else
+ return i;
+ }
+
+ /* Linear search within narrowed segment */
+ for (i = b; (i < e) && (bg[i].wid != w); i++);
+ return ((i < e) ? i : -1);
+}
+
+static int32
+lm3g_bg_score(NGRAM_MODEL_TYPE *model,
+ int32 lw1, int32 lw2, int32 *n_used)
+{
+ int32 i, n, b, score;
+ bigram_t *bg;
+
+ if (lw1 < 0 || model->base.n < 2) {
+ *n_used = 1;
+ return model->lm3g.unigrams[lw2].prob1.l;
+ }
+
+ b = FIRST_BG(model, lw1);
+ n = FIRST_BG(model, lw1 + 1) - b;
+ bg = model->lm3g.bigrams + b;
+
+ if ((i = find_bg(bg, n, lw2)) >= 0) {
+ /* Access mode = bigram */
+ *n_used = 2;
+ score = model->lm3g.prob2[bg[i].prob2].l;
+ }
+ else {
+ /* Access mode = unigram */
+ *n_used = 1;
+ score = model->lm3g.unigrams[lw1].bo_wt1.l + model->lm3g.unigrams[lw2].prob1.l;
+ }
+
+ return (score);
+}
+
+static void
+load_tginfo(NGRAM_MODEL_TYPE *model, int32 lw1, int32 lw2)
+{
+ int32 i, n, b, t;
+ bigram_t *bg;
+ tginfo_t *tginfo;
+
+ /* First allocate space for tg information for bg lw1,lw2 */
+ tginfo = (tginfo_t *) listelem_malloc(model->lm3g.le);
+ tginfo->w1 = lw1;
+ tginfo->tg = NULL;
+ tginfo->next = model->lm3g.tginfo[lw2];
+ model->lm3g.tginfo[lw2] = tginfo;
+
+ /* Locate bigram lw1,lw2 */
+ b = model->lm3g.unigrams[lw1].bigrams;
+ n = model->lm3g.unigrams[lw1 + 1].bigrams - b;
+ bg = model->lm3g.bigrams + b;
+
+ if ((n > 0) && ((i = find_bg(bg, n, lw2)) >= 0)) {
+ tginfo->bowt = model->lm3g.bo_wt2[bg[i].bo_wt2].l;
+
+ /* Find t = Absolute first trigram index for bigram lw1,lw2 */
+ b += i; /* b = Absolute index of bigram lw1,lw2 on disk */
+ t = FIRST_TG(model, b);
+
+ tginfo->tg = model->lm3g.trigrams + t;
+
+ /* Find #tg for bigram w1,w2 */
+ tginfo->n_tg = FIRST_TG(model, b + 1) - t;
+ }
+ else { /* No bigram w1,w2 */
+ tginfo->bowt = 0;
+ tginfo->n_tg = 0;
+ }
+}
+
+/* Similar to find_bg */
+static int32
+find_tg(trigram_t * tg, int32 n, int32 w)
+{
+ int32 i, b, e;
+
+ b = 0;
+ e = n;
+ while (e - b > BINARY_SEARCH_THRESH) {
+ i = (b + e) >> 1;
+ if (tg[i].wid < w)
+ b = i + 1;
+ else if (tg[i].wid > w)
+ e = i;
+ else
+ return i;
+ }
+
+ for (i = b; (i < e) && (tg[i].wid != w); i++);
+ return ((i < e) ? i : -1);
+}
+
+static int32
+lm3g_tg_score(NGRAM_MODEL_TYPE *model, int32 lw1,
+ int32 lw2, int32 lw3, int32 *n_used)
+{
+ ngram_model_t *base = &model->base;
+ int32 i, n, score;
+ trigram_t *tg;
+ tginfo_t *tginfo, *prev_tginfo;
+
+ if ((base->n < 3) || (lw1 < 0) || (lw2 < 0))
+ return (lm3g_bg_score(model, lw2, lw3, n_used));
+
+ prev_tginfo = NULL;
+ for (tginfo = model->lm3g.tginfo[lw2]; tginfo; tginfo = tginfo->next) {
+ if (tginfo->w1 == lw1)
+ break;
+ prev_tginfo = tginfo;
+ }
+
+ if (!tginfo) {
+ load_tginfo(model, lw1, lw2);
+ tginfo = model->lm3g.tginfo[lw2];
+ }
+ else if (prev_tginfo) {
+ prev_tginfo->next = tginfo->next;
+ tginfo->next = model->lm3g.tginfo[lw2];
+ model->lm3g.tginfo[lw2] = tginfo;
+ }
+
+ tginfo->used = 1;
+
+ /* Trigrams for w1,w2 now pointed to by tginfo */
+ n = tginfo->n_tg;
+ tg = tginfo->tg;
+ if ((i = find_tg(tg, n, lw3)) >= 0) {
+ /* Access mode = trigram */
+ *n_used = 3;
+ score = model->lm3g.prob3[tg[i].prob3].l;
+ }
+ else {
+ score = tginfo->bowt + lm3g_bg_score(model, lw2, lw3, n_used);
+ }
+
+ return (score);
+}
+
+static int32
+lm3g_template_score(ngram_model_t *base, int32 wid,
+ int32 *history, int32 n_hist,
+ int32 *n_used)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
+ switch (n_hist) {
+ case 0:
+ /* Access mode: unigram */
+ *n_used = 1;
+ return model->lm3g.unigrams[wid].prob1.l;
+ case 1:
+ return lm3g_bg_score(model, history[0], wid, n_used);
+ case 2:
+ default:
+ /* Anything greater than 2 is the same as a trigram for now. */
+ return lm3g_tg_score(model, history[1], history[0], wid, n_used);
+ }
+}
+
+static int32
+lm3g_template_raw_score(ngram_model_t *base, int32 wid,
+ int32 *history, int32 n_hist,
+ int32 *n_used)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
+ int32 score;
+
+ switch (n_hist) {
+ case 0:
+ /* Access mode: unigram */
+ *n_used = 1;
+ /* Undo insertion penalty. */
+ score = model->lm3g.unigrams[wid].prob1.l - base->log_wip;
+ /* Undo language weight. */
+ score = (int32)(score / base->lw);
+ /* Undo unigram interpolation */
+ if (strcmp(base->word_str[wid], "<s>") != 0) { /* FIXME: configurable start_sym */
+ score = logmath_log(base->lmath,
+ logmath_exp(base->lmath, score)
+ - logmath_exp(base->lmath,
+ base->log_uniform + base->log_uniform_weight));
+ }
+ return score;
+ case 1:
+ score = lm3g_bg_score(model, history[0], wid, n_used);
+ break;
+ case 2:
+ default:
+ /* Anything greater than 2 is the same as a trigram for now. */
+ score = lm3g_tg_score(model, history[1], history[0], wid, n_used);
+ break;
+ }
+ /* FIXME (maybe): This doesn't undo unigram weighting in backoff cases. */
+ return (int32)((score - base->log_wip) / base->lw);
+}
+
+static int32
+lm3g_template_add_ug(ngram_model_t *base,
+ int32 wid, int32 lweight)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
+ return lm3g_add_ug(base, &model->lm3g, wid, lweight);
+}
+
+static void
+lm3g_template_flush(ngram_model_t *base)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
+ lm3g_tginfo_reset(base, &model->lm3g);
+}
+
+typedef struct lm3g_iter_s {
+ ngram_iter_t base;
+ unigram_t *ug;
+ bigram_t *bg;
+ trigram_t *tg;
+} lm3g_iter_t;
+
+static ngram_iter_t *
+lm3g_template_iter(ngram_model_t *base, int32 wid,
+ int32 *history, int32 n_hist)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
+ lm3g_iter_t *itor = ckd_calloc(1, sizeof(*itor));
+
+ ngram_iter_init((ngram_iter_t *)itor, base, n_hist, FALSE);
+
+ if (n_hist == 0) {
+ /* Unigram is the easiest. */
+ itor->ug = model->lm3g.unigrams + wid;
+ return (ngram_iter_t *)itor;
+ }
+ else if (n_hist == 1) {
+ int32 i, n, b;
+ /* Find the bigram, as in bg_score above (duplicate code...) */
+ itor->ug = model->lm3g.unigrams + history[0];
+ b = FIRST_BG(model, history[0]);
+ n = FIRST_BG(model, history[0] + 1) - b;
+ itor->bg = model->lm3g.bigrams + b;
+ /* If no such bigram exists then fail. */
+ if ((i = find_bg(itor->bg, n, wid)) < 0) {
+ ngram_iter_free((ngram_iter_t *)itor);
+ return NULL;
+ }
+ itor->bg += i;
+ return (ngram_iter_t *)itor;
+ }
+ else if (n_hist == 2) {
+ int32 i, n;
+ tginfo_t *tginfo, *prev_tginfo;
+ /* Find the trigram, as in tg_score above (duplicate code...) */
+ itor->ug = model->lm3g.unigrams + history[1];
+ prev_tginfo = NULL;
+ for (tginfo = model->lm3g.tginfo[history[0]];
+ tginfo; tginfo = tginfo->next) {
+ if (tginfo->w1 == history[1])
+ break;
+ prev_tginfo = tginfo;
+ }
+
+ if (!tginfo) {
+ load_tginfo(model, history[1], history[0]);
+ tginfo = model->lm3g.tginfo[history[0]];
+ }
+ else if (prev_tginfo) {
+ prev_tginfo->next = tginfo->next;
+ tginfo->next = model->lm3g.tginfo[history[0]];
+ model->lm3g.tginfo[history[0]] = tginfo;
+ }
+
+ tginfo->used = 1;
+
+ /* Trigrams for w1,w2 now pointed to by tginfo */
+ n = tginfo->n_tg;
+ itor->tg = tginfo->tg;
+ if ((i = find_tg(itor->tg, n, wid)) >= 0) {
+ itor->tg += i;
+ /* Now advance the bigram pointer accordingly. FIXME:
+ * Note that we actually already found the relevant bigram
+ * in load_tginfo. */
+ itor->bg = model->lm3g.bigrams;
+ while (FIRST_TG(model, (itor->bg - model->lm3g.bigrams + 1))
+ <= (itor->tg - model->lm3g.trigrams))
+ ++itor->bg;
+ return (ngram_iter_t *)itor;
+ }
+ else {
+ ngram_iter_free((ngram_iter_t *)itor);
+ return (ngram_iter_t *)NULL;
+ }
+ }
+ else {
+ /* Should not happen. */
+ assert(n_hist == 0); /* Guaranteed to fail. */
+ ngram_iter_free((ngram_iter_t *)itor);
+ return NULL;
+ }
+}
+
+static ngram_iter_t *
+lm3g_template_mgrams(ngram_model_t *base, int m)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
+ lm3g_iter_t *itor = ckd_calloc(1, sizeof(*itor));
+ ngram_iter_init((ngram_iter_t *)itor, base, m, FALSE);
+
+ itor->ug = model->lm3g.unigrams;
+ itor->bg = model->lm3g.bigrams;
+ itor->tg = model->lm3g.trigrams;
+
+ /* Advance bigram pointer to match first trigram. */
+ if (m > 1 && base->n_counts[1] > 1) {
+ while (FIRST_TG(model, (itor->bg - model->lm3g.bigrams + 1))
+ <= (itor->tg - model->lm3g.trigrams))
+ ++itor->bg;
+ }
+
+ /* Advance unigram pointer to match first bigram. */
+ if (m > 0 && base->n_counts[0] > 1) {
+ while (itor->ug[1].bigrams <= (itor->bg - model->lm3g.bigrams))
+ ++itor->ug;
+ }
+
+ return (ngram_iter_t *)itor;
+}
+
+static ngram_iter_t *
+lm3g_template_successors(ngram_iter_t *bitor)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)bitor->model;
+ lm3g_iter_t *from = (lm3g_iter_t *)bitor;
+ lm3g_iter_t *itor = ckd_calloc(1, sizeof(*itor));
+
+ itor->ug = from->ug;
+ switch (bitor->m) {
+ case 0:
+ /* Next itor bigrams is the same as this itor bigram or
+ itor bigrams is more than total count. This means no successors */
+ if (((itor->ug + 1) - model->lm3g.unigrams < bitor->model->n_counts[0] &&
+ itor->ug->bigrams == (itor->ug + 1)->bigrams) ||
+ itor->ug->bigrams == bitor->model->n_counts[1])
+ goto done;
+
+ /* Start iterating from first bigram successor of from->ug. */
+ itor->bg = model->lm3g.bigrams + itor->ug->bigrams;
+ break;
+ case 1:
+ itor->bg = from->bg;
+
+ /* This indicates no successors */
+ if (((itor->bg + 1) - model->lm3g.bigrams < bitor->model->n_counts[1] &&
+ FIRST_TG (model, itor->bg - model->lm3g.bigrams) ==
+ FIRST_TG (model, (itor->bg + 1) - model->lm3g.bigrams)) ||
+ FIRST_TG (model, itor->bg - model->lm3g.bigrams) == bitor->model->n_counts[2])
+ goto done;
+
+ /* Start iterating from first trigram successor of from->bg. */
+ itor->tg = (model->lm3g.trigrams
+ + FIRST_TG(model, (itor->bg - model->lm3g.bigrams)));
+#if 0
+ printf("%s %s => %d (%s)\n",
+ model->base.word_str[itor->ug - model->lm3g.unigrams],
+ model->base.word_str[itor->bg->wid],
+ FIRST_TG(model, (itor->bg - model->lm3g.bigrams)),
+ model->base.word_str[itor->tg->wid]);
+#endif
+ break;
+ case 2:
+ default:
+ /* All invalid! */
+ goto done;
+ }
+
+ ngram_iter_init((ngram_iter_t *)itor, bitor->model, bitor->m + 1, TRUE);
+ return (ngram_iter_t *)itor;
+ done:
+ ckd_free(itor);
+ return NULL;
+}
+
+static int32 const *
+lm3g_template_iter_get(ngram_iter_t *base,
+ int32 *out_score, int32 *out_bowt)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base->model;
+ lm3g_iter_t *itor = (lm3g_iter_t *)base;
+
+ base->wids[0] = itor->ug - model->lm3g.unigrams;
+ if (itor->bg) base->wids[1] = itor->bg->wid;
+ if (itor->tg) base->wids[2] = itor->tg->wid;
+#if 0
+ printf("itor_get: %d %d %d\n", base->wids[0], base->wids[1], base->wids[2]);
+#endif
+
+ switch (base->m) {
+ case 0:
+ *out_score = itor->ug->prob1.l;
+ *out_bowt = itor->ug->bo_wt1.l;
+ break;
+ case 1:
+ *out_score = model->lm3g.prob2[itor->bg->prob2].l;
+ if (model->lm3g.bo_wt2)
+ *out_bowt = model->lm3g.bo_wt2[itor->bg->bo_wt2].l;
+ else
+ *out_bowt = 0;
+ break;
+ case 2:
+ *out_score = model->lm3g.prob3[itor->tg->prob3].l;
+ *out_bowt = 0;
+ break;
+ default: /* Should not happen. */
+ return NULL;
+ }
+ return base->wids;
+}
+
+static ngram_iter_t *
+lm3g_template_iter_next(ngram_iter_t *base)
+{
+ NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base->model;
+ lm3g_iter_t *itor = (lm3g_iter_t *)base;
+
+ switch (base->m) {
+ case 0:
+ ++itor->ug;
+ /* Check for end condition. */
+ if (itor->ug - model->lm3g.unigrams >= base->model->n_counts[0])
+ goto done;
+ break;
+ case 1:
+ ++itor->bg;
+ /* Check for end condition. */
+ if (itor->bg - model->lm3g.bigrams >= base->model->n_counts[1])
+ goto done;
+ /* Advance unigram pointer if necessary in order to get one
+ * that points to this bigram. */
+ while (itor->bg - model->lm3g.bigrams >= itor->ug[1].bigrams) {
+ /* Stop if this is a successor iterator, since we don't
+ * want a new unigram. */
+ if (base->successor)
+ goto done;
+ ++itor->ug;
+ if (itor->ug == model->lm3g.unigrams + base->model->n_counts[0]) {
+ E_ERROR("Bigram %d has no valid unigram parent\n",
+ itor->bg - model->lm3g.bigrams);
+ goto done;
+ }
+ }
+ break;
+ case 2:
+ ++itor->tg;
+ /* Check for end condition. */
+ if (itor->tg - model->lm3g.trigrams >= base->model->n_counts[2])
+ goto done;
+ /* Advance bigram pointer if necessary. */
+ while (itor->tg - model->lm3g.trigrams >=
+ FIRST_TG(model, (itor->bg - model->lm3g.bigrams + 1))) {
+ if (base->successor)
+ goto done;
+ ++itor->bg;
+ if (itor->bg == model->lm3g.bigrams + base->model->n_counts[1]) {
+ E_ERROR("Trigram %d has no valid bigram parent\n",
+ itor->tg - model->lm3g.trigrams);
+
+ goto done;
+ }
+ }
+ /* Advance unigram pointer if necessary. */
+ while (itor->bg - model->lm3g.bigrams >= itor->ug[1].bigrams) {
+ ++itor->ug;
+ if (itor->ug == model->lm3g.unigrams + base->model->n_counts[0]) {
+ E_ERROR("Trigram %d has no valid unigram parent\n",
+ itor->tg - model->lm3g.trigrams);
+ goto done;
+ }
+ }
+ break;
+ default: /* Should not happen. */
+ goto done;
+ }
+
+ return (ngram_iter_t *)itor;
+done:
+ ngram_iter_free(base);
+ return NULL;
+}
+
+static void
+lm3g_template_iter_free(ngram_iter_t *base)
+{
+ ckd_free(base);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model.c N-Gram language models.
+ *
+ * Author: David Huggins-Daines, much code taken from sphinx3/src/libs3decoder/liblm
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <assert.h>
+
+#ifdef HAVE_ICONV
+#include <iconv.h>
+#endif
+
+#include "sphinxbase/ngram_model.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/filename.h"
+#include "sphinxbase/pio.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/logmath.h"
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/case.h"
+
+#include "ngram_model_internal.h"
+
+ngram_file_type_t
+ngram_file_name_to_type(const char *file_name)
+{
+ const char *ext;
+
+ ext = strrchr(file_name, '.');
+ if (ext == NULL) {
+ return NGRAM_INVALID;
+ }
+ if (0 == strcmp_nocase(ext, ".gz")) {
+ while (--ext >= file_name) {
+ if (*ext == '.') break;
+ }
+ if (ext < file_name) {
+ return NGRAM_INVALID;
+ }
+ }
+ else if (0 == strcmp_nocase(ext, ".bz2")) {
+ while (--ext >= file_name) {
+ if (*ext == '.') break;
+ }
+ if (ext < file_name) {
+ return NGRAM_INVALID;
+ }
+ }
+ /* We use strncmp because there might be a .gz on the end. */
+ if (0 == strncmp_nocase(ext, ".ARPA", 5))
+ return NGRAM_ARPA;
+ if (0 == strncmp_nocase(ext, ".DMP", 4))
+ return NGRAM_DMP;
+ return NGRAM_INVALID;
+ }
+
+ngram_file_type_t
+ngram_str_to_type(const char *str_name)
+{
+ if (0 == strcmp_nocase(str_name, "arpa"))
+ return NGRAM_ARPA;
+ if (0 == strcmp_nocase(str_name, "dmp"))
+ return NGRAM_DMP;
+ return NGRAM_INVALID;
+}
+
+char const *
+ngram_type_to_str(int type)
+{
+ switch (type) {
+ case NGRAM_ARPA:
+ return "arpa";
+ case NGRAM_DMP:
+ return "dmp";
+ default:
+ return NULL;
+ }
+}
+
+
+ ngram_model_t *
+ ngram_model_read(cmd_ln_t *config,
+ const char *file_name,
+ ngram_file_type_t file_type,
+ logmath_t *lmath)
+ {
+ ngram_model_t *model = NULL;
+
+ switch (file_type) {
+ case NGRAM_AUTO: {
+ if ((model = ngram_model_arpa_read(config, file_name, lmath)) != NULL)
+ break;
+ if ((model = ngram_model_dmp_read(config, file_name, lmath)) != NULL)
+ break;
+ return NULL;
+ }
+ case NGRAM_ARPA:
+ model = ngram_model_arpa_read(config, file_name, lmath);
+ break;
+ case NGRAM_DMP:
+ model = ngram_model_dmp_read(config, file_name, lmath);
+ break;
+ default:
+ E_ERROR("language model file type not supported\n");
+ return NULL;
+ }
+
+ /* Now set weights based on config if present. */
+ if (config) {
+ float32 lw = 1.0;
+ float32 wip = 1.0;
+ float32 uw = 1.0;
+
+ if (cmd_ln_exists_r(config, "-lw"))
+ lw = cmd_ln_float32_r(config, "-lw");
+ if (cmd_ln_exists_r(config, "-wip"))
+ wip = cmd_ln_float32_r(config, "-wip");
+ if (cmd_ln_exists_r(config, "-uw"))
+ uw = cmd_ln_float32_r(config, "-uw");
+
+ ngram_model_apply_weights(model, lw, wip, uw);
+ }
+
+ return model;
+ }
+
+ int
+ ngram_model_write(ngram_model_t *model, const char *file_name,
+ ngram_file_type_t file_type)
+ {
+ switch (file_type) {
+ case NGRAM_AUTO: {
+ file_type = ngram_file_name_to_type(file_name);
+ /* Default to ARPA (catches .lm and other things) */
+ if (file_type == NGRAM_INVALID)
+ file_type = NGRAM_ARPA;
+ return ngram_model_write(model, file_name, file_type);
+ }
+ case NGRAM_ARPA:
+ return ngram_model_arpa_write(model, file_name);
+ case NGRAM_DMP:
+ return ngram_model_dmp_write(model, file_name);
+ default:
+ E_ERROR("language model file type not supported\n");
+ return -1;
+ }
+ E_ERROR("language model file type not supported\n");
+ return -1;
+ }
+
+ int32
+ ngram_model_init(ngram_model_t *base,
+ ngram_funcs_t *funcs,
+ logmath_t *lmath,
+ int32 n, int32 n_unigram)
+ {
+ base->refcount = 1;
+ base->funcs = funcs;
+ base->n = n;
+ /* If this was previously initialized... */
+ if (base->n_counts == NULL)
+ base->n_counts = ckd_calloc(3, sizeof(*base->n_counts));
+ /* Don't reset weights if logmath object hasn't changed. */
+ if (base->lmath != lmath) {
+ /* Set default values for weights. */
+ base->lw = 1.0;
+ base->log_wip = 0; /* i.e. 1.0 */
+ base->log_uw = 0; /* i.e. 1.0 */
+ base->log_uniform = logmath_log(lmath, 1.0 / n_unigram);
+ base->log_uniform_weight = logmath_get_zero(lmath);
+ base->log_zero = logmath_get_zero(lmath);
+ base->lmath = lmath;
+ }
+ /* Allocate or reallocate space for word strings. */
+ if (base->word_str) {
+ /* Free all previous word strings if they were allocated. */
+ if (base->writable) {
+ int32 i;
+ for (i = 0; i < base->n_words; ++i) {
+ ckd_free(base->word_str[i]);
+ base->word_str[i] = NULL;
+ }
+ }
+ base->word_str = ckd_realloc(base->word_str, n_unigram * sizeof(char *));
+ }
+ else
+ base->word_str = ckd_calloc(n_unigram, sizeof(char *));
+ /* NOTE: They are no longer case-insensitive since we are allowing
+ * other encodings for word strings. Beware. */
+ if (base->wid)
+ hash_table_empty(base->wid);
+ else
+ base->wid = hash_table_new(n_unigram, FALSE);
+ base->n_counts[0] = base->n_1g_alloc = base->n_words = n_unigram;
+
+ return 0;
+}
+
+ngram_model_t *
+ngram_model_retain(ngram_model_t *model)
+{
+ ++model->refcount;
+ return model;
+}
+
+
+void
+ngram_model_flush(ngram_model_t *model)
+{
+ if (model->funcs && model->funcs->flush)
+ (*model->funcs->flush)(model);
+}
+
+int
+ngram_model_free(ngram_model_t *model)
+{
+ int i;
+
+ if (model == NULL)
+ return 0;
+ if (--model->refcount > 0)
+ return model->refcount;
+ if (model->funcs && model->funcs->free)
+ (*model->funcs->free)(model);
+ if (model->writable) {
+ /* Free all words. */
+ for (i = 0; i < model->n_words; ++i) {
+ ckd_free(model->word_str[i]);
+ }
+ }
+ else {
+ /* Free all class words. */
+ for (i = 0; i < model->n_classes; ++i) {
+ ngram_class_t *lmclass;
+ int32 j;
+
+ lmclass = model->classes[i];
+ for (j = 0; j < lmclass->n_words; ++j) {
+ ckd_free(model->word_str[lmclass->start_wid + j]);
+ }
+ for (j = 0; j < lmclass->n_hash; ++j) {
+ if (lmclass->nword_hash[j].wid != -1) {
+ ckd_free(model->word_str[lmclass->nword_hash[j].wid]);
+ }
+ }
+ }
+ }
+ for (i = 0; i < model->n_classes; ++i) {
+ ngram_class_free(model->classes[i]);
+ }
+ ckd_free(model->classes);
+ hash_table_free(model->wid);
+ ckd_free(model->word_str);
+ ckd_free(model->n_counts);
+ ckd_free(model);
+ return 0;
+}
+
+int
+ngram_model_casefold(ngram_model_t *model, int kase)
+{
+ int writable, i;
+ hash_table_t *new_wid;
+
+ /* Were word strings already allocated? */
+ writable = model->writable;
+ /* Either way, we are going to allocate some word strings. */
+ model->writable = TRUE;
+
+ /* And, don't forget, we need to rebuild the word to unigram ID
+ * mapping. */
+ new_wid = hash_table_new(model->n_words, FALSE);
+ for (i = 0; i < model->n_words; ++i) {
+ char *outstr;
+ if (writable) {
+ outstr = model->word_str[i];
+ }
+ else {
+ outstr = ckd_salloc(model->word_str[i]);
+ }
+ /* Don't case-fold <tags> or [classes] */
+ if (outstr[0] == '<' || outstr[0] == '[') {
+ }
+ else {
+ switch (kase) {
+ case NGRAM_UPPER:
+ ucase(outstr);
+ break;
+ case NGRAM_LOWER:
+ lcase(outstr);
+ break;
+ default:
+ ;
+ }
+ }
+ model->word_str[i] = outstr;
+
+ /* Now update the hash table. We might have terrible
+ * collisions here, so warn about them. */
+ if (hash_table_enter_int32(new_wid, model->word_str[i], i) != i) {
+ E_WARN("Duplicate word in dictionary after conversion: %s\n",
+ model->word_str[i]);
+ }
+ }
+ /* Swap out the hash table. */
+ hash_table_free(model->wid);
+ model->wid = new_wid;
+ return 0;
+}
+
+#ifdef HAVE_ICONV
+int
+ngram_model_recode(ngram_model_t *model, const char *from, const char *to)
+{
+ iconv_t ic;
+ char *outbuf;
+ size_t maxlen;
+ int i, writable;
+ hash_table_t *new_wid;
+
+ /* FIXME: Need to do a special case thing for the GB-HEX encoding
+ * used in Sphinx3 Mandarin models. */
+ if ((ic = iconv_open(to, from)) == (iconv_t)-1) {
+ E_ERROR_SYSTEM("iconv_open() failed");
+ return -1;
+ }
+ /* iconv(3) is a piece of crap and won't accept a NULL out buffer,
+ * unlike wcstombs(3). So we have to either call it over and over
+ * again until our buffer is big enough, or call it with a huge
+ * buffer and then copy things back to the output. We will use a
+ * mix of these two approaches here. We'll keep a single big
+ * buffer around, and expand it as necessary.
+ */
+ maxlen = 0;
+ for (i = 0; i < model->n_words; ++i) {
+ if (strlen(model->word_str[i]) > maxlen)
+ maxlen = strlen(model->word_str[i]);
+ }
+ /* Were word strings already allocated? */
+ writable = model->writable;
+ /* Either way, we are going to allocate some word strings. */
+ model->writable = TRUE;
+ /* Really should be big enough except for pathological cases. */
+ maxlen = maxlen * sizeof(int) + 15;
+ outbuf = ckd_calloc(maxlen, 1);
+ /* And, don't forget, we need to rebuild the word to unigram ID
+ * mapping. */
+ new_wid = hash_table_new(model->n_words, FALSE);
+ for (i = 0; i < model->n_words; ++i) {
+ ICONV_CONST char *in;
+ char *out;
+ size_t inleft, outleft, result;
+
+ start_conversion:
+ in = (ICONV_CONST char *)model->word_str[i];
+ /* Yes, this assumes that we don't have any NUL bytes. */
+ inleft = strlen(in);
+ out = outbuf;
+ outleft = maxlen;
+
+ while ((result = iconv(ic, &in, &inleft, &out, &outleft)) == (size_t)-1) {
+ if (errno != E2BIG) {
+ /* FIXME: if we already converted any words, then they
+ * are going to be in an inconsistent state. */
+ E_ERROR_SYSTEM("iconv() failed");
+ ckd_free(outbuf);
+ hash_table_free(new_wid);
+ return -1;
+ }
+ /* Reset the internal state of conversion. */
+ iconv(ic, NULL, NULL, NULL, NULL);
+ /* Make everything bigger. */
+ maxlen *= 2;
+ out = outbuf = ckd_realloc(outbuf, maxlen);
+ /* Reset the input pointers. */
+ in = (ICONV_CONST char *)model->word_str[i];
+ inleft = strlen(in);
+ }
+
+ /* Now flush a shift-out sequence, if any. */
+ if ((result = iconv(ic, NULL, NULL, &out, &outleft)) == (size_t)-1) {
+ if (errno != E2BIG) {
+ /* FIXME: if we already converted any words, then they
+ * are going to be in an inconsistent state. */
+ E_ERROR_SYSTEM("iconv() failed (state reset sequence)");
+ ckd_free(outbuf);
+ hash_table_free(new_wid);
+ return -1;
+ }
+ /* Reset the internal state of conversion. */
+ iconv(ic, NULL, NULL, NULL, NULL);
+ /* Make everything bigger. */
+ maxlen *= 2;
+ outbuf = ckd_realloc(outbuf, maxlen);
+ /* Be very evil. */
+ goto start_conversion;
+ }
+
+ result = maxlen - outleft;
+ /* Okay, that was hard, now let's go shopping. */
+ if (writable) {
+ /* Grow or shrink the output string as necessary. */
+ model->word_str[i] = ckd_realloc(model->word_str[i], result + 1);
+ model->word_str[i][result] = '\0';
+ }
+ else {
+ /* It actually was not allocated previously, so do that now. */
+ model->word_str[i] = ckd_calloc(result + 1, 1);
+ }
+ /* Copy the new thing in. */
+ memcpy(model->word_str[i], outbuf, result);
+
+ /* Now update the hash table. We might have terrible
+ * collisions if a non-reversible conversion was requested.,
+ * so warn about them. */
+ if (hash_table_enter_int32(new_wid, model->word_str[i], i) != i) {
+ E_WARN("Duplicate word in dictionary after conversion: %s\n",
+ model->word_str[i]);
+ }
+ }
+ ckd_free(outbuf);
+ iconv_close(ic);
+ /* Swap out the hash table. */
+ hash_table_free(model->wid);
+ model->wid = new_wid;
+
+ return 0;
+}
+#else /* !HAVE_ICONV */
+int
+ngram_model_recode(ngram_model_t *model, const char *from, const char *to)
+{
+ return -1;
+}
+#endif /* !HAVE_ICONV */
+
+int
+ngram_model_apply_weights(ngram_model_t *model,
+ float32 lw, float32 wip, float32 uw)
+{
+ return (*model->funcs->apply_weights)(model, lw, wip, uw);
+}
+
+float32
+ngram_model_get_weights(ngram_model_t *model, int32 *out_log_wip,
+ int32 *out_log_uw)
+{
+ if (out_log_wip) *out_log_wip = model->log_wip;
+ if (out_log_uw) *out_log_uw = model->log_uw;
+ return model->lw;
+}
+
+
+int32
+ngram_ng_score(ngram_model_t *model, int32 wid, int32 *history,
+ int32 n_hist, int32 *n_used)
+{
+ int32 score, class_weight = 0;
+ int i;
+
+ /* Closed vocabulary, OOV word probability is zero */
+ if (wid == NGRAM_INVALID_WID)
+ return model->log_zero;
+
+ /* "Declassify" wid and history */
+ if (NGRAM_IS_CLASSWID(wid)) {
+ ngram_class_t *lmclass = model->classes[NGRAM_CLASSID(wid)];
+
+ class_weight = ngram_class_prob(lmclass, wid);
+ if (class_weight == 1) /* Meaning, not found in class. */
+ return model->log_zero;
+ wid = lmclass->tag_wid;
+ }
+ for (i = 0; i < n_hist; ++i) {
+ if (history[i] != NGRAM_INVALID_WID && NGRAM_IS_CLASSWID(history[i]))
+ history[i] = model->classes[NGRAM_CLASSID(history[i])]->tag_wid;
+ }
+ score = (*model->funcs->score)(model, wid, history, n_hist, n_used);
+
+ /* Multiply by unigram in-class weight. */
+ return score + class_weight;
+}
+
+int32
+ngram_score(ngram_model_t *model, const char *word, ...)
+{
+ va_list history;
+ const char *hword;
+ int32 *histid;
+ int32 n_hist;
+ int32 n_used;
+ int32 prob;
+
+ va_start(history, word);
+ n_hist = 0;
+ while ((hword = va_arg(history, const char *)) != NULL)
+ ++n_hist;
+ va_end(history);
+
+ histid = ckd_calloc(n_hist, sizeof(*histid));
+ va_start(history, word);
+ n_hist = 0;
+ while ((hword = va_arg(history, const char *)) != NULL) {
+ histid[n_hist] = ngram_wid(model, hword);
+ ++n_hist;
+ }
+ va_end(history);
+
+ prob = ngram_ng_score(model, ngram_wid(model, word),
+ histid, n_hist, &n_used);
+ ckd_free(histid);
+ return prob;
+}
+
+int32
+ngram_tg_score(ngram_model_t *model, int32 w3, int32 w2, int32 w1, int32 *n_used)
+{
+ int32 hist[2];
+ hist[0] = w2;
+ hist[1] = w1;
+ return ngram_ng_score(model, w3, hist, 2, n_used);
+}
+
+int32
+ngram_bg_score(ngram_model_t *model, int32 w2, int32 w1, int32 *n_used)
+{
+ return ngram_ng_score(model, w2, &w1, 1, n_used);
+}
+
+int32
+ngram_ng_prob(ngram_model_t *model, int32 wid, int32 *history,
+ int32 n_hist, int32 *n_used)
+{
+ int32 prob, class_weight = 0;
+ int i;
+
+ /* Closed vocabulary, OOV word probability is zero */
+ if (wid == NGRAM_INVALID_WID)
+ return model->log_zero;
+
+ /* "Declassify" wid and history */
+ if (NGRAM_IS_CLASSWID(wid)) {
+ ngram_class_t *lmclass = model->classes[NGRAM_CLASSID(wid)];
+
+ class_weight = ngram_class_prob(lmclass, wid);
+ if (class_weight == 1) /* Meaning, not found in class. */
+ return class_weight;
+ wid = lmclass->tag_wid;
+ }
+ for (i = 0; i < n_hist; ++i) {
+ if (history[i] != NGRAM_INVALID_WID && NGRAM_IS_CLASSWID(history[i]))
+ history[i] = model->classes[NGRAM_CLASSID(history[i])]->tag_wid;
+ }
+ prob = (*model->funcs->raw_score)(model, wid, history,
+ n_hist, n_used);
+ /* Multiply by unigram in-class weight. */
+ return prob + class_weight;
+}
+
+int32
+ngram_prob(ngram_model_t *model, const char *word, ...)
+{
+ va_list history;
+ const char *hword;
+ int32 *histid;
+ int32 n_hist;
+ int32 n_used;
+ int32 prob;
+
+ va_start(history, word);
+ n_hist = 0;
+ while ((hword = va_arg(history, const char *)) != NULL)
+ ++n_hist;
+ va_end(history);
+
+ histid = ckd_calloc(n_hist, sizeof(*histid));
+ va_start(history, word);
+ n_hist = 0;
+ while ((hword = va_arg(history, const char *)) != NULL) {
+ histid[n_hist] = ngram_wid(model, hword);
+ ++n_hist;
+ }
+ va_end(history);
+
+ prob = ngram_ng_prob(model, ngram_wid(model, word),
+ histid, n_hist, &n_used);
+ ckd_free(histid);
+ return prob;
+}
+
+int32
+ngram_score_to_prob(ngram_model_t *base, int32 score)
+{
+ int32 prob;
+
+ /* Undo insertion penalty. */
+ prob = score - base->log_wip;
+ /* Undo language weight. */
+ prob = (int32)(prob / base->lw);
+
+ return prob;
+}
+
+int32
+ngram_unknown_wid(ngram_model_t *model)
+{
+ int32 val;
+
+ /* FIXME: This could be memoized for speed if necessary. */
+ /* Look up <UNK>, if not found return NGRAM_INVALID_WID. */
+ if (hash_table_lookup_int32(model->wid, "<UNK>", &val) == -1)
+ return NGRAM_INVALID_WID;
+ else
+ return val;
+}
+
+int32
+ngram_zero(ngram_model_t *model)
+{
+ return model->log_zero;
+}
+
+int32
+ngram_model_get_size(ngram_model_t *model)
+{
+ if (model != NULL)
+ return model->n;
+ return 0;
+}
+
+int32 const *
+ngram_model_get_counts(ngram_model_t *model)
+{
+ if (model != NULL)
+ return model->n_counts;
+ return NULL;
+}
+
+void
+ngram_iter_init(ngram_iter_t *itor, ngram_model_t *model,
+ int m, int successor)
+{
+ itor->model = model;
+ itor->wids = ckd_calloc(model->n, sizeof(*itor->wids));
+ itor->m = m;
+ itor->successor = successor;
+}
+
+ngram_iter_t *
+ngram_model_mgrams(ngram_model_t *model, int m)
+{
+ ngram_iter_t *itor;
+ /* The fact that m=n-1 is not exactly obvious. Prevent accidents. */
+ if (m >= model->n)
+ return NULL;
+ if (model->funcs->mgrams == NULL)
+ return NULL;
+ itor = (*model->funcs->mgrams)(model, m);
+ return itor;
+}
+
+ngram_iter_t *
+ngram_iter(ngram_model_t *model, const char *word, ...)
+{
+ va_list history;
+ const char *hword;
+ int32 *histid;
+ int32 n_hist;
+ ngram_iter_t *itor;
+
+ va_start(history, word);
+ n_hist = 0;
+ while ((hword = va_arg(history, const char *)) != NULL)
+ ++n_hist;
+ va_end(history);
+
+ histid = ckd_calloc(n_hist, sizeof(*histid));
+ va_start(history, word);
+ n_hist = 0;
+ while ((hword = va_arg(history, const char *)) != NULL) {
+ histid[n_hist] = ngram_wid(model, hword);
+ ++n_hist;
+ }
+ va_end(history);
+
+ itor = ngram_ng_iter(model, ngram_wid(model, word), histid, n_hist);
+ ckd_free(histid);
+ return itor;
+}
+
+ngram_iter_t *
+ngram_ng_iter(ngram_model_t *model, int32 wid, int32 *history, int32 n_hist)
+{
+ if (n_hist >= model->n)
+ return NULL;
+ if (model->funcs->iter == NULL)
+ return NULL;
+ return (*model->funcs->iter)(model, wid, history, n_hist);
+}
+
+ngram_iter_t *
+ngram_iter_successors(ngram_iter_t *itor)
+{
+ /* Stop when we are at the highest order N-Gram. */
+ if (itor->m == itor->model->n - 1)
+ return NULL;
+ return (*itor->model->funcs->successors)(itor);
+}
+
+int32 const *
+ngram_iter_get(ngram_iter_t *itor,
+ int32 *out_score,
+ int32 *out_bowt)
+{
+ return (*itor->model->funcs->iter_get)(itor, out_score, out_bowt);
+}
+
+ngram_iter_t *
+ngram_iter_next(ngram_iter_t *itor)
+{
+ return (*itor->model->funcs->iter_next)(itor);
+}
+
+void
+ngram_iter_free(ngram_iter_t *itor)
+{
+ ckd_free(itor->wids);
+ (*itor->model->funcs->iter_free)(itor);
+}
+
+int32
+ngram_wid(ngram_model_t *model, const char *word)
+{
+ int32 val;
+
+ if (hash_table_lookup_int32(model->wid, word, &val) == -1)
+ return ngram_unknown_wid(model);
+ else
+ return val;
+}
+
+const char *
+ngram_word(ngram_model_t *model, int32 wid)
+{
+ /* Remove any class tag */
+ wid = NGRAM_BASEWID(wid);
+ if (wid >= model->n_words)
+ return NULL;
+ return model->word_str[wid];
+}
+
+/**
+ * Add a word to the word string and ID mapping.
+ */
+int32
+ngram_add_word_internal(ngram_model_t *model,
+ const char *word,
+ int32 classid)
+{
+ void *dummy;
+ int32 wid;
+
+ /* Take the next available word ID */
+ wid = model->n_words;
+ if (classid >= 0) {
+ wid = NGRAM_CLASSWID(wid, classid);
+ }
+ /* Check for hash collisions. */
+ if (hash_table_lookup(model->wid, word, &dummy) == 0) {
+ E_ERROR("Duplicate definition of word %s\n", word);
+ return NGRAM_INVALID_WID;
+ }
+ /* Reallocate word_str if necessary. */
+ if (model->n_words >= model->n_1g_alloc) {
+ model->n_1g_alloc += UG_ALLOC_STEP;
+ model->word_str = ckd_realloc(model->word_str,
+ sizeof(*model->word_str) * model->n_1g_alloc);
+ }
+ /* Add the word string in the appropriate manner. */
+ /* Class words are always dynamically allocated. */
+ model->word_str[model->n_words] = ckd_salloc(word);
+ /* Now enter it into the hash table. */
+ if (hash_table_enter_int32(model->wid, model->word_str[model->n_words], wid) != wid) {
+ E_ERROR("Hash insertion failed for word %s => %p (should not happen)\n",
+ model->word_str[model->n_words], (void *)(long)(wid));
+ }
+ /* Increment number of words. */
+ ++model->n_words;
+ return wid;
+}
+
+int32
+ngram_model_add_word(ngram_model_t *model,
+ const char *word, float32 weight)
+{
+ int32 wid, prob = model->log_zero;
+
+ wid = ngram_add_word_internal(model, word, -1);
+ if (wid == NGRAM_INVALID_WID)
+ return wid;
+
+ /* Do what needs to be done to add the word to the unigram. */
+ if (model->funcs && model->funcs->add_ug)
+ prob = (*model->funcs->add_ug)(model, wid, logmath_log(model->lmath, weight));
+ if (prob == 0) {
+ if (model->writable)
+ ckd_free(model->word_str[wid]);
+ return -1;
+ }
+ return wid;
+}
+
+ngram_class_t *
+ngram_class_new(ngram_model_t *model, int32 tag_wid, int32 start_wid, glist_t classwords)
+{
+ ngram_class_t *lmclass;
+ gnode_t *gn;
+ float32 tprob;
+ int i;
+
+ lmclass = ckd_calloc(1, sizeof(*lmclass));
+ lmclass->tag_wid = tag_wid;
+ /* wid_base is the wid (minus class tag) of the first word in the list. */
+ lmclass->start_wid = start_wid;
+ lmclass->n_words = glist_count(classwords);
+ lmclass->prob1 = ckd_calloc(lmclass->n_words, sizeof(*lmclass->prob1));
+ lmclass->nword_hash = NULL;
+ lmclass->n_hash = 0;
+ tprob = 0.0;
+ for (gn = classwords; gn; gn = gnode_next(gn)) {
+ tprob += gnode_float32(gn);
+ }
+ if (tprob > 1.1 || tprob < 0.9) {
+ E_WARN("Total class probability is %f, will normalize\n", tprob);
+ for (gn = classwords; gn; gn = gnode_next(gn)) {
+ gn->data.fl /= tprob;
+ }
+ }
+ for (i = 0, gn = classwords; gn; ++i, gn = gnode_next(gn)) {
+ lmclass->prob1[i] = logmath_log(model->lmath, gnode_float32(gn));
+ }
+
+ return lmclass;
+}
+
+int32
+ngram_class_add_word(ngram_class_t *lmclass, int32 wid, int32 lweight)
+{
+ int32 hash;
+
+ if (lmclass->nword_hash == NULL) {
+ /* Initialize everything in it to -1 */
+ lmclass->nword_hash = ckd_malloc(NGRAM_HASH_SIZE * sizeof(*lmclass->nword_hash));
+ memset(lmclass->nword_hash, 0xff, NGRAM_HASH_SIZE * sizeof(*lmclass->nword_hash));
+ lmclass->n_hash = NGRAM_HASH_SIZE;
+ lmclass->n_hash_inuse = 0;
+ }
+ /* Stupidest possible hash function. This will work pretty well
+ * when this function is called repeatedly with contiguous word
+ * IDs, though... */
+ hash = wid & (lmclass->n_hash - 1);
+ if (lmclass->nword_hash[hash].wid == -1) {
+ /* Good, no collision. */
+ lmclass->nword_hash[hash].wid = wid;
+ lmclass->nword_hash[hash].prob1 = lweight;
+ ++lmclass->n_hash_inuse;
+ return hash;
+ }
+ else {
+ int32 next; /**< Next available bucket. */
+ /* Collision... Find the end of the hash chain. */
+ while (lmclass->nword_hash[hash].next != -1)
+ hash = lmclass->nword_hash[hash].next;
+ assert(hash != -1);
+ /* Does we has any more bukkit? */
+ if (lmclass->n_hash_inuse == lmclass->n_hash) {
+ /* Oh noes! Ok, we makes more. */
+ lmclass->nword_hash = ckd_realloc(lmclass->nword_hash,
+ lmclass->n_hash * 2 * sizeof(*lmclass->nword_hash));
+ memset(lmclass->nword_hash + lmclass->n_hash,
+ 0xff, lmclass->n_hash * sizeof(*lmclass->nword_hash));
+ /* Just use the next allocated one (easy) */
+ next = lmclass->n_hash;
+ lmclass->n_hash *= 2;
+ }
+ else {
+ /* Look for any available bucket. We hope this doesn't happen. */
+ for (next = 0; next < lmclass->n_hash; ++next)
+ if (lmclass->nword_hash[next].wid == -1)
+ break;
+ /* This should absolutely not happen. */
+ assert(next != lmclass->n_hash);
+ }
+ lmclass->nword_hash[next].wid = wid;
+ lmclass->nword_hash[next].prob1 = lweight;
+ lmclass->nword_hash[hash].next = next;
+ ++lmclass->n_hash_inuse;
+ return next;
+ }
+}
+
+void
+ngram_class_free(ngram_class_t *lmclass)
+{
+ ckd_free(lmclass->nword_hash);
+ ckd_free(lmclass->prob1);
+ ckd_free(lmclass);
+}
+
+int32
+ngram_model_add_class_word(ngram_model_t *model,
+ const char *classname,
+ const char *word,
+ float32 weight)
+{
+ ngram_class_t *lmclass;
+ int32 classid, tag_wid, wid, i, scale;
+ float32 fprob;
+
+ /* Find the class corresponding to classname. Linear search
+ * probably okay here since there won't be very many classes, and
+ * this doesn't have to be fast. */
+ tag_wid = ngram_wid(model, classname);
+ if (tag_wid == NGRAM_INVALID_WID) {
+ E_ERROR("No such word or class tag: %s\n", classname);
+ return tag_wid;
+ }
+ for (classid = 0; classid < model->n_classes; ++classid) {
+ if (model->classes[classid]->tag_wid == tag_wid)
+ break;
+ }
+ /* Hmm, no such class. It's probably not a good idea to create one. */
+ if (classid == model->n_classes) {
+ E_ERROR("Word %s is not a class tag (call ngram_model_add_class() first)\n", classname);
+ return NGRAM_INVALID_WID;
+ }
+ lmclass = model->classes[classid];
+
+ /* Add this word to the model's set of words. */
+ wid = ngram_add_word_internal(model, word, classid);
+ if (wid == NGRAM_INVALID_WID)
+ return wid;
+
+ /* This is the fixed probability of the new word. */
+ fprob = weight * 1.0f / (lmclass->n_words + lmclass->n_hash_inuse + 1);
+ /* Now normalize everything else to fit it in. This is
+ * accomplished by simply scaling all the other probabilities
+ * by (1-fprob). */
+ scale = logmath_log(model->lmath, 1.0 - fprob);
+ for (i = 0; i < lmclass->n_words; ++i)
+ lmclass->prob1[i] += scale;
+ for (i = 0; i < lmclass->n_hash; ++i)
+ if (lmclass->nword_hash[i].wid != -1)
+ lmclass->nword_hash[i].prob1 += scale;
+
+ /* Now add it to the class hash table. */
+ return ngram_class_add_word(lmclass, wid, logmath_log(model->lmath, fprob));
+}
+
+int32
+ngram_model_add_class(ngram_model_t *model,
+ const char *classname,
+ float32 classweight,
+ char **words,
+ const float32 *weights,
+ int32 n_words)
+{
+ ngram_class_t *lmclass;
+ glist_t classwords = NULL;
+ int32 i, start_wid = -1;
+ int32 classid, tag_wid;
+
+ /* Check if classname already exists in model. If not, add it.*/
+ if ((tag_wid = ngram_wid(model, classname)) == ngram_unknown_wid(model)) {
+ tag_wid = ngram_model_add_word(model, classname, classweight);
+ if (tag_wid == NGRAM_INVALID_WID)
+ return -1;
+ }
+
+ if (model->n_classes == 128) {
+ E_ERROR("Number of classes cannot exceed 128 (sorry)\n");
+ return -1;
+ }
+ classid = model->n_classes;
+ for (i = 0; i < n_words; ++i) {
+ int32 wid;
+
+ wid = ngram_add_word_internal(model, words[i], classid);
+ if (wid == NGRAM_INVALID_WID)
+ return -1;
+ if (start_wid == -1)
+ start_wid = NGRAM_BASEWID(wid);
+ classwords = glist_add_float32(classwords, weights[i]);
+ }
+ classwords = glist_reverse(classwords);
+ lmclass = ngram_class_new(model, tag_wid, start_wid, classwords);
+ glist_free(classwords);
+ if (lmclass == NULL)
+ return -1;
+
+ ++model->n_classes;
+ if (model->classes == NULL)
+ model->classes = ckd_calloc(1, sizeof(*model->classes));
+ else
+ model->classes = ckd_realloc(model->classes,
+ model->n_classes * sizeof(*model->classes));
+ model->classes[classid] = lmclass;
+ return classid;
+}
+
+int32
+ngram_class_prob(ngram_class_t *lmclass, int32 wid)
+{
+ int32 base_wid = NGRAM_BASEWID(wid);
+
+ if (base_wid < lmclass->start_wid
+ || base_wid > lmclass->start_wid + lmclass->n_words) {
+ int32 hash;
+
+ /* Look it up in the hash table. */
+ hash = wid & (lmclass->n_hash - 1);
+ while (hash != -1 && lmclass->nword_hash[hash].wid != wid)
+ hash = lmclass->nword_hash[hash].next;
+ if (hash == -1)
+ return 1;
+ return lmclass->nword_hash[hash].prob1;
+ }
+ else {
+ return lmclass->prob1[base_wid - lmclass->start_wid];
+ }
+}
+
+int32
+read_classdef_file(hash_table_t *classes, const char *file_name)
+{
+ FILE *fp;
+ int32 is_pipe;
+ int inclass; /**< Are we currently reading a list of class words? */
+ int32 rv = -1;
+ gnode_t *gn;
+ glist_t classwords = NULL;
+ glist_t classprobs = NULL;
+ char *classname = NULL;
+
+ if ((fp = fopen_comp(file_name, "r", &is_pipe)) == NULL) {
+ E_ERROR("File %s not found\n", file_name);
+ return -1;
+ }
+
+ inclass = FALSE;
+ while (!feof(fp)) {
+ char line[512];
+ char *wptr[2];
+ int n_words;
+
+ if (fgets(line, sizeof(line), fp) == NULL)
+ break;
+
+ n_words = str2words(line, wptr, 2);
+ if (n_words <= 0)
+ continue;
+
+ if (inclass) {
+ /* Look for an end of class marker. */
+ if (n_words == 2 && 0 == strcmp(wptr[0], "END")) {
+ classdef_t *classdef;
+ gnode_t *word, *weight;
+ int32 i;
+
+ if (classname == NULL || 0 != strcmp(wptr[1], classname))
+ goto error_out;
+ inclass = FALSE;
+
+ /* Construct a class from the list of words collected. */
+ classdef = ckd_calloc(1, sizeof(*classdef));
+ classwords = glist_reverse(classwords);
+ classprobs = glist_reverse(classprobs);
+ classdef->n_words = glist_count(classwords);
+ classdef->words = ckd_calloc(classdef->n_words,
+ sizeof(*classdef->words));
+ classdef->weights = ckd_calloc(classdef->n_words,
+ sizeof(*classdef->weights));
+ word = classwords;
+ weight = classprobs;
+ for (i = 0; i < classdef->n_words; ++i) {
+ classdef->words[i] = gnode_ptr(word);
+ classdef->weights[i] = gnode_float32(weight);
+ word = gnode_next(word);
+ weight = gnode_next(weight);
+ }
+
+ /* Add this class to the hash table. */
+ if (hash_table_enter(classes, classname, classdef) != classdef) {
+ classdef_free(classdef);
+ goto error_out;
+ }
+
+ /* Reset everything. */
+ glist_free(classwords);
+ glist_free(classprobs);
+ classwords = NULL;
+ classprobs = NULL;
+ classname = NULL;
+ }
+ else {
+ float32 fprob;
+
+ if (n_words == 2)
+ fprob = (float32)atof_c(wptr[1]);
+ else
+ fprob = 1.0f;
+ /* Add it to the list of words for this class. */
+ classwords = glist_add_ptr(classwords, ckd_salloc(wptr[0]));
+ classprobs = glist_add_float32(classprobs, fprob);
+ }
+ }
+ else {
+ /* Start a new LM class if the LMCLASS marker is seen */
+ if (n_words == 2 && 0 == strcmp(wptr[0], "LMCLASS")) {
+ if (inclass)
+ goto error_out;
+ inclass = TRUE;
+ classname = ckd_salloc(wptr[1]);
+ }
+ /* Otherwise, just ignore whatever junk we got */
+ }
+ }
+ rv = 0; /* Success. */
+
+error_out:
+ /* Free all the stuff we might have allocated. */
+ fclose_comp(fp, is_pipe);
+ for (gn = classwords; gn; gn = gnode_next(gn))
+ ckd_free(gnode_ptr(gn));
+ glist_free(classwords);
+ glist_free(classprobs);
+ ckd_free(classname);
+
+ return rv;
+}
+
+void
+classdef_free(classdef_t *classdef)
+{
+ int32 i;
+ for (i = 0; i < classdef->n_words; ++i)
+ ckd_free(classdef->words[i]);
+ ckd_free(classdef->words);
+ ckd_free(classdef->weights);
+ ckd_free(classdef);
+}
+
+
+int32
+ngram_model_read_classdef(ngram_model_t *model,
+ const char *file_name)
+{
+ hash_table_t *classes;
+ glist_t hl = NULL;
+ gnode_t *gn;
+ int32 rv = -1;
+
+ classes = hash_table_new(0, FALSE);
+ if (read_classdef_file(classes, file_name) < 0) {
+ hash_table_free(classes);
+ return -1;
+ }
+
+ /* Create a new class in the language model for each classdef. */
+ hl = hash_table_tolist(classes, NULL);
+ for (gn = hl; gn; gn = gnode_next(gn)) {
+ hash_entry_t *he = gnode_ptr(gn);
+ classdef_t *classdef = he->val;
+
+ if (ngram_model_add_class(model, he->key, 1.0,
+ classdef->words,
+ classdef->weights,
+ classdef->n_words) < 0)
+ goto error_out;
+ }
+ rv = 0;
+
+error_out:
+ for (gn = hl; gn; gn = gnode_next(gn)) {
+ hash_entry_t *he = gnode_ptr(gn);
+ ckd_free((char *)he->key);
+ classdef_free(he->val);
+ }
+ glist_free(hl);
+ hash_table_free(classes);
+ return rv;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model_arpa.c ARPA format language models
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "sphinxbase/ckd_alloc.h"
+#include <string.h>
+#include <limits.h>
+#include <assert.h>
+
+#include "sphinxbase/err.h"
+#include "sphinxbase/pio.h"
+#include "sphinxbase/listelem_alloc.h"
+#include "sphinxbase/strfuncs.h"
+
+#include "ngram_model_arpa.h"
+
+static ngram_funcs_t ngram_model_arpa_funcs;
+
+#define TSEG_BASE(m,b) ((m)->lm3g.tseg_base[(b)>>LOG_BG_SEG_SZ])
+#define FIRST_BG(m,u) ((m)->lm3g.unigrams[u].bigrams)
+#define FIRST_TG(m,b) (TSEG_BASE((m),(b))+((m)->lm3g.bigrams[b].trigrams))
+
+/*
+ * Read and return #unigrams, #bigrams, #trigrams as stated in input file.
+ */
+static int
+ReadNgramCounts(lineiter_t **li, int32 * n_ug, int32 * n_bg, int32 * n_tg)
+{
+ int32 ngram, ngram_cnt;
+
+ /* skip file until past the '\data\' marker */
+ while (*li) {
+ string_trim((*li)->buf, STRING_BOTH);
+ if (strcmp((*li)->buf, "\\data\\") == 0)
+ break;
+ *li = lineiter_next(*li);
+ }
+ if (*li == NULL || strcmp((*li)->buf, "\\data\\") != 0) {
+ E_INFO("No \\data\\ mark in LM file\n");
+ return -1;
+ }
+
+ *n_ug = *n_bg = *n_tg = 0;
+ while ((*li = lineiter_next(*li))) {
+ if (sscanf((*li)->buf, "ngram %d=%d", &ngram, &ngram_cnt) != 2)
+ break;
+ switch (ngram) {
+ case 1:
+ *n_ug = ngram_cnt;
+ break;
+ case 2:
+ *n_bg = ngram_cnt;
+ break;
+ case 3:
+ *n_tg = ngram_cnt;
+ break;
+ default:
+ E_ERROR("Unknown ngram (%d)\n", ngram);
+ return -1;
+ }
+ }
+ if (*li == NULL) {
+ E_ERROR("EOF while reading ngram counts\n");
+ return -1;
+ }
+
+ /* Position iterator to the unigrams header '\1-grams:\' */
+ while ((*li = lineiter_next(*li))) {
+ string_trim((*li)->buf, STRING_BOTH);
+ if (strcmp((*li)->buf, "\\1-grams:") == 0)
+ break;
+ }
+ if (*li == NULL) {
+ E_ERROR_SYSTEM("Failed to read \\1-grams: mark");
+ return -1;
+ }
+
+ if ((*n_ug <= 0) || (*n_bg < 0) || (*n_tg < 0)) {
+ E_ERROR("Bad or missing ngram count\n");
+ return -1;
+ }
+ return 0;
+}
+
+/*
+ * Read in the unigrams from given file into the LM structure model.
+ * On entry to this procedure, the iterator is positioned to the
+ * header line '\1-grams:'.
+ */
+static int
+ReadUnigrams(lineiter_t **li, ngram_model_arpa_t * model)
+{
+ ngram_model_t *base = &model->base;
+ int32 wcnt;
+ float p1;
+
+ E_INFO("Reading unigrams\n");
+
+ wcnt = 0;
+ while ((*li = lineiter_next(*li))) {
+ char *wptr[3], *name;
+ float32 bo_wt = 0.0f;
+ int n;
+
+ string_trim((*li)->buf, STRING_BOTH);
+ if (strcmp((*li)->buf, "\\2-grams:") == 0
+ || strcmp((*li)->buf, "\\end\\") == 0)
+ break;
+
+ if ((n = str2words((*li)->buf, wptr, 3)) < 2) {
+ if ((*li)->buf[0] != '\0')
+ E_WARN("Format error; unigram ignored: %s\n", (*li)->buf);
+ continue;
+ }
+ else {
+ p1 = (float)atof_c(wptr[0]);
+ name = wptr[1];
+ if (n == 3)
+ bo_wt = (float)atof_c(wptr[2]);
+ }
+
+ if (wcnt >= base->n_counts[0]) {
+ E_ERROR("Too many unigrams\n");
+ return -1;
+ }
+
+ /* Associate name with word id */
+ base->word_str[wcnt] = ckd_salloc(name);
+ if ((hash_table_enter(base->wid, base->word_str[wcnt], (void *)(long)wcnt))
+ != (void *)(long)wcnt) {
+ E_WARN("Duplicate word in dictionary: %s\n", base->word_str[wcnt]);
+ }
+ model->lm3g.unigrams[wcnt].prob1.l = logmath_log10_to_log(base->lmath, p1);
+ model->lm3g.unigrams[wcnt].bo_wt1.l = logmath_log10_to_log(base->lmath, bo_wt);
+ wcnt++;
+ }
+
+ if (base->n_counts[0] != wcnt) {
+ E_WARN("lm_t.ucount(%d) != #unigrams read(%d)\n",
+ base->n_counts[0], wcnt);
+ base->n_counts[0] = wcnt;
+ base->n_words = wcnt;
+ }
+ return 0;
+}
+
+/*
+ * Read bigrams from given file into given model structure.
+ */
+static int
+ReadBigrams(lineiter_t **li, ngram_model_arpa_t * model)
+{
+ ngram_model_t *base = &model->base;
+ int32 w1, w2, prev_w1, bgcount;
+ bigram_t *bgptr;
+
+ E_INFO("Reading bigrams\n");
+
+ bgcount = 0;
+ bgptr = model->lm3g.bigrams;
+ prev_w1 = -1;
+
+ while ((*li = lineiter_next(*li))) {
+ float32 p, bo_wt = 0.0f;
+ int32 p2, bo_wt2;
+ char *wptr[4], *word1, *word2;
+ int n;
+
+ string_trim((*li)->buf, STRING_BOTH);
+ wptr[3] = NULL;
+ if ((n = str2words((*li)->buf, wptr, 4)) < 3) {
+ if ((*li)->buf[0] != '\0')
+ break;
+ continue;
+ }
+ else {
+ p = (float32)atof_c(wptr[0]);
+ word1 = wptr[1];
+ word2 = wptr[2];
+ if (wptr[3])
+ bo_wt = (float32)atof_c(wptr[3]);
+ }
+
+ if ((w1 = ngram_wid(base, word1)) == NGRAM_INVALID_WID) {
+ E_ERROR("Unknown word: %s, skipping bigram (%s %s)\n",
+ word1, word1, word2);
+ continue;
+ }
+ if ((w2 = ngram_wid(base, word2)) == NGRAM_INVALID_WID) {
+ E_ERROR("Unknown word: %s, skipping bigram (%s %s)\n",
+ word2, word1, word2);
+ continue;
+ }
+
+ /* FIXME: Should use logmath_t quantization here. */
+ /* HACK!! to quantize probs to 4 decimal digits */
+ p = (float32)((int32)(p * 10000)) / 10000;
+ bo_wt = (float32)((int32)(bo_wt * 10000)) / 10000;
+
+ p2 = logmath_log10_to_log(base->lmath, p);
+ bo_wt2 = logmath_log10_to_log(base->lmath, bo_wt);
+
+ if (bgcount >= base->n_counts[1]) {
+ E_ERROR("Too many bigrams\n");
+ return -1;
+ }
+
+ bgptr->wid = w2;
+ bgptr->prob2 = sorted_id(&model->sorted_prob2, &p2);
+ if (base->n_counts[2] > 0)
+ bgptr->bo_wt2 = sorted_id(&model->sorted_bo_wt2, &bo_wt2);
+
+ if (w1 != prev_w1) {
+ if (w1 < prev_w1) {
+ E_ERROR("Bigrams not in unigram order\n");
+ return -1;
+ }
+
+ for (prev_w1++; prev_w1 <= w1; prev_w1++)
+ model->lm3g.unigrams[prev_w1].bigrams = bgcount;
+ prev_w1 = w1;
+ }
+ bgcount++;
+ bgptr++;
+
+ if ((bgcount & 0x0000ffff) == 0) {
+ E_INFOCONT(".");
+ }
+ }
+ if (*li == NULL || ((strcmp((*li)->buf, "\\end\\") != 0)
+ && (strcmp((*li)->buf, "\\3-grams:") != 0))) {
+ E_ERROR("Bad bigram: %s\n", (*li)->buf);
+ return -1;
+ }
+
+ for (prev_w1++; prev_w1 <= base->n_counts[0]; prev_w1++)
+ model->lm3g.unigrams[prev_w1].bigrams = bgcount;
+
+ return 0;
+}
+
+/*
+ * Very similar to ReadBigrams.
+ */
+static int
+ReadTrigrams(lineiter_t **li, ngram_model_arpa_t * model)
+{
+ ngram_model_t *base = &model->base;
+ int32 i, w1, w2, w3, prev_w1, prev_w2, tgcount, prev_bg, bg, endbg;
+ int32 seg, prev_seg, prev_seg_lastbg;
+ trigram_t *tgptr;
+ bigram_t *bgptr;
+
+ E_INFO("Reading trigrams\n");
+
+ tgcount = 0;
+ tgptr = model->lm3g.trigrams;
+ prev_w1 = -1;
+ prev_w2 = -1;
+ prev_bg = -1;
+ prev_seg = -1;
+
+ while ((*li = lineiter_next(*li))) {
+ float32 p;
+ int32 p3;
+ char *wptr[4], *word1, *word2, *word3;
+
+ string_trim((*li)->buf, STRING_BOTH);
+ if (str2words((*li)->buf, wptr, 4) != 4) {
+ if ((*li)->buf[0] != '\0')
+ break;
+ continue;
+ }
+ else {
+ p = (float32)atof_c(wptr[0]);
+ word1 = wptr[1];
+ word2 = wptr[2];
+ word3 = wptr[3];
+ }
+
+ if ((w1 = ngram_wid(base, word1)) == NGRAM_INVALID_WID) {
+ E_ERROR("Unknown word: %s, skipping trigram (%s %s %s)\n",
+ word1, word1, word2, word3);
+ continue;
+ }
+ if ((w2 = ngram_wid(base, word2)) == NGRAM_INVALID_WID) {
+ E_ERROR("Unknown word: %s, skipping trigram (%s %s %s)\n",
+ word2, word1, word2, word3);
+ continue;
+ }
+ if ((w3 = ngram_wid(base, word3)) == NGRAM_INVALID_WID) {
+ E_ERROR("Unknown word: %s, skipping trigram (%s %s %s)\n",
+ word3, word1, word2, word3);
+ continue;
+ }
+
+ /* FIXME: Should use logmath_t quantization here. */
+ /* HACK!! to quantize probs to 4 decimal digits */
+ p = (float32)((int32)(p * 10000)) / 10000;
+ p3 = logmath_log10_to_log(base->lmath, p);
+
+ if (tgcount >= base->n_counts[2]) {
+ E_ERROR("Too many trigrams\n");
+ return -1;
+ }
+
+ tgptr->wid = w3;
+ tgptr->prob3 = sorted_id(&model->sorted_prob3, &p3);
+
+ if ((w1 != prev_w1) || (w2 != prev_w2)) {
+ /* Trigram for a new bigram; update tg info for all previous bigrams */
+ if ((w1 < prev_w1) || ((w1 == prev_w1) && (w2 < prev_w2))) {
+ E_ERROR("Trigrams not in bigram order\n");
+ return -1;
+ }
+
+ bg = (w1 !=
+ prev_w1) ? model->lm3g.unigrams[w1].bigrams : prev_bg + 1;
+ endbg = model->lm3g.unigrams[w1 + 1].bigrams;
+ bgptr = model->lm3g.bigrams + bg;
+ for (; (bg < endbg) && (bgptr->wid != w2); bg++, bgptr++);
+ if (bg >= endbg) {
+ E_ERROR("Missing bigram for trigram: %s", (*li)->buf);
+ return -1;
+ }
+
+ /* bg = bigram entry index for <w1,w2>. Update tseg_base */
+ seg = bg >> LOG_BG_SEG_SZ;
+ for (i = prev_seg + 1; i <= seg; i++)
+ model->lm3g.tseg_base[i] = tgcount;
+
+ /* Update trigrams pointers for all bigrams until bg */
+ if (prev_seg < seg) {
+ int32 tgoff = 0;
+
+ if (prev_seg >= 0) {
+ tgoff = tgcount - model->lm3g.tseg_base[prev_seg];
+ if (tgoff > 65535) {
+ E_ERROR("Size of trigram segment is bigger than 65535, such a big language models are not supported, use smaller vocabulary\n");
+ return -1;
+ }
+ }
+
+ prev_seg_lastbg = ((prev_seg + 1) << LOG_BG_SEG_SZ) - 1;
+ bgptr = model->lm3g.bigrams + prev_bg;
+ for (++prev_bg, ++bgptr; prev_bg <= prev_seg_lastbg;
+ prev_bg++, bgptr++)
+ bgptr->trigrams = tgoff;
+
+ for (; prev_bg <= bg; prev_bg++, bgptr++)
+ bgptr->trigrams = 0;
+ }
+ else {
+ int32 tgoff;
+
+ tgoff = tgcount - model->lm3g.tseg_base[prev_seg];
+ if (tgoff > 65535) {
+ E_ERROR("Size of trigram segment is bigger than 65535, such a big language models are not supported, use smaller vocabulary\n");
+ return -1;
+ }
+
+ bgptr = model->lm3g.bigrams + prev_bg;
+ for (++prev_bg, ++bgptr; prev_bg <= bg; prev_bg++, bgptr++)
+ bgptr->trigrams = tgoff;
+ }
+
+ prev_w1 = w1;
+ prev_w2 = w2;
+ prev_bg = bg;
+ prev_seg = seg;
+ }
+
+ tgcount++;
+ tgptr++;
+
+ if ((tgcount & 0x0000ffff) == 0) {
+ E_INFOCONT(".");
+ }
+ }
+ if (*li == NULL || strcmp((*li)->buf, "\\end\\") != 0) {
+ E_ERROR("Bad trigram: %s\n", (*li)->buf);
+ return -1;
+ }
+
+ for (prev_bg++; prev_bg <= base->n_counts[1]; prev_bg++) {
+ if ((prev_bg & (BG_SEG_SZ - 1)) == 0)
+ model->lm3g.tseg_base[prev_bg >> LOG_BG_SEG_SZ] = tgcount;
+ if ((tgcount - model->lm3g.tseg_base[prev_bg >> LOG_BG_SEG_SZ]) > 65535) {
+ E_ERROR("Size of trigram segment is bigger than 65535, such a big language models are not supported, use smaller vocabulary\n");
+ return -1;
+ }
+ model->lm3g.bigrams[prev_bg].trigrams =
+ tgcount - model->lm3g.tseg_base[prev_bg >> LOG_BG_SEG_SZ];
+ }
+ return 0;
+}
+
+static unigram_t *
+new_unigram_table(int32 n_ug)
+{
+ unigram_t *table;
+ int32 i;
+
+ table = ckd_calloc(n_ug, sizeof(unigram_t));
+ for (i = 0; i < n_ug; i++) {
+ table[i].prob1.l = INT_MIN;
+ table[i].bo_wt1.l = INT_MIN;
+ }
+ return table;
+}
+
+ngram_model_t *
+ngram_model_arpa_read(cmd_ln_t *config,
+ const char *file_name,
+ logmath_t *lmath)
+{
+ lineiter_t *li;
+ FILE *fp;
+ int32 is_pipe;
+ int32 n_unigram;
+ int32 n_bigram;
+ int32 n_trigram;
+ int32 n;
+ ngram_model_arpa_t *model;
+ ngram_model_t *base;
+
+ if ((fp = fopen_comp(file_name, "r", &is_pipe)) == NULL) {
+ E_ERROR("File %s not found\n", file_name);
+ return NULL;
+ }
+ li = lineiter_start(fp);
+
+ /* Read #unigrams, #bigrams, #trigrams from file */
+ if (ReadNgramCounts(&li, &n_unigram, &n_bigram, &n_trigram) == -1) {
+ lineiter_free(li);
+ fclose_comp(fp, is_pipe);
+ return NULL;
+ }
+ E_INFO("ngrams 1=%d, 2=%d, 3=%d\n", n_unigram, n_bigram, n_trigram);
+
+ /* Allocate space for LM, including initial OOVs and placeholders; initialize it */
+ model = ckd_calloc(1, sizeof(*model));
+ base = &model->base;
+ if (n_trigram > 0)
+ n = 3;
+ else if (n_bigram > 0)
+ n = 2;
+ else
+ n = 1;
+ /* Initialize base model. */
+ ngram_model_init(base, &ngram_model_arpa_funcs, lmath, n, n_unigram);
+ base->n_counts[0] = n_unigram;
+ base->n_counts[1] = n_bigram;
+ base->n_counts[2] = n_trigram;
+ base->writable = TRUE;
+
+ /*
+ * Allocate one extra unigram and bigram entry: sentinels to terminate
+ * followers (bigrams and trigrams, respectively) of previous entry.
+ */
+ model->lm3g.unigrams = new_unigram_table(n_unigram + 1);
+ model->lm3g.bigrams =
+ ckd_calloc(n_bigram + 1, sizeof(bigram_t));
+ if (n_trigram > 0)
+ model->lm3g.trigrams =
+ ckd_calloc(n_trigram, sizeof(trigram_t));
+
+ if (n_trigram > 0) {
+ model->lm3g.tseg_base =
+ ckd_calloc((n_bigram + 1) / BG_SEG_SZ + 1,
+ sizeof(int32));
+ }
+ if (ReadUnigrams(&li, model) == -1) {
+ fclose_comp(fp, is_pipe);
+ ngram_model_free(base);
+ return NULL;
+ }
+ E_INFO("%8d = #unigrams created\n", base->n_counts[0]);
+
+ init_sorted_list(&model->sorted_prob2);
+ if (base->n_counts[2] > 0)
+ init_sorted_list(&model->sorted_bo_wt2);
+
+ if (base->n_counts[1] > 0) {
+ if (ReadBigrams(&li, model) == -1) {
+ fclose_comp(fp, is_pipe);
+ ngram_model_free(base);
+ return NULL;
+ }
+
+ base->n_counts[1] = FIRST_BG(model, base->n_counts[0]);
+ model->lm3g.n_prob2 = model->sorted_prob2.free;
+ model->lm3g.prob2 = vals_in_sorted_list(&model->sorted_prob2);
+ free_sorted_list(&model->sorted_prob2);
+ E_INFO("%8d = #bigrams created\n", base->n_counts[1]);
+ E_INFO("%8d = #prob2 entries\n", model->lm3g.n_prob2);
+ }
+
+ if (base->n_counts[2] > 0) {
+ /* Create trigram bo-wts array */
+ model->lm3g.n_bo_wt2 = model->sorted_bo_wt2.free;
+ model->lm3g.bo_wt2 = vals_in_sorted_list(&model->sorted_bo_wt2);
+ free_sorted_list(&model->sorted_bo_wt2);
+ E_INFO("%8d = #bo_wt2 entries\n", model->lm3g.n_bo_wt2);
+
+ init_sorted_list(&model->sorted_prob3);
+
+ if (ReadTrigrams(&li, model) == -1) {
+ fclose_comp(fp, is_pipe);
+ ngram_model_free(base);
+ return NULL;
+ }
+
+ base->n_counts[2] = FIRST_TG(model, base->n_counts[1]);
+ model->lm3g.n_prob3 = model->sorted_prob3.free;
+ model->lm3g.prob3 = vals_in_sorted_list(&model->sorted_prob3);
+ E_INFO("%8d = #trigrams created\n", base->n_counts[2]);
+ E_INFO("%8d = #prob3 entries\n", model->lm3g.n_prob3);
+
+ free_sorted_list(&model->sorted_prob3);
+
+ /* Initialize tginfo */
+ model->lm3g.tginfo = ckd_calloc(n_unigram, sizeof(tginfo_t *));
+ model->lm3g.le = listelem_alloc_init(sizeof(tginfo_t));
+ }
+
+ lineiter_free(li);
+ fclose_comp(fp, is_pipe);
+ return base;
+}
+
+int
+ngram_model_arpa_write(ngram_model_t *model,
+ const char *file_name)
+{
+ ngram_iter_t *itor;
+ FILE *fh;
+ int i;
+
+ if ((fh = fopen(file_name, "w")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s for writing", file_name);
+ return -1;
+ }
+ fprintf(fh, "This is an ARPA-format language model file, generated by CMU Sphinx\n");
+
+ /* The ARPA format doesn't require any extra information that
+ * N-Gram iterators can't give us, so this is very
+ * straightforward compared with DMP writing. */
+
+ /* Write N-gram counts. */
+ fprintf(fh, "\\data\\\n");
+ for (i = 0; i < model->n; ++i) {
+ fprintf(fh, "ngram %d=%d\n", i+1, model->n_counts[i]);
+ }
+
+ /* Write N-grams */
+ for (i = 0; i < model->n; ++i) {
+ fprintf(fh, "\n\\%d-grams:\n", i + 1);
+ for (itor = ngram_model_mgrams(model, i); itor; itor = ngram_iter_next(itor)) {
+ int32 const *wids;
+ int32 score, bowt;
+ int j;
+
+ wids = ngram_iter_get(itor, &score, &bowt);
+ fprintf(fh, "%.4f ", logmath_log_to_log10(model->lmath, score));
+ for (j = 0; j <= i; ++j) {
+ assert(wids[j] < model->n_counts[0]);
+ fprintf(fh, "%s ", model->word_str[wids[j]]);
+ }
+ if (i < model->n-1)
+ fprintf(fh, "%.4f", logmath_log_to_log10(model->lmath, bowt));
+ fprintf(fh, "\n");
+ }
+ }
+ fprintf(fh, "\n\\end\\\n");
+ return fclose(fh);
+}
+
+static int
+ngram_model_arpa_apply_weights(ngram_model_t *base, float32 lw,
+ float32 wip, float32 uw)
+{
+ ngram_model_arpa_t *model = (ngram_model_arpa_t *)base;
+ lm3g_apply_weights(base, &model->lm3g, lw, wip, uw);
+ return 0;
+}
+
+/* Lousy "templating" for things that are largely the same in DMP and
+ * ARPA models, except for the bigram and trigram types and some
+ * names. */
+#define NGRAM_MODEL_TYPE ngram_model_arpa_t
+#include "lm3g_templates.c"
+
+static void
+ngram_model_arpa_free(ngram_model_t *base)
+{
+ ngram_model_arpa_t *model = (ngram_model_arpa_t *)base;
+ ckd_free(model->lm3g.unigrams);
+ ckd_free(model->lm3g.bigrams);
+ ckd_free(model->lm3g.trigrams);
+ ckd_free(model->lm3g.prob2);
+ ckd_free(model->lm3g.bo_wt2);
+ ckd_free(model->lm3g.prob3);
+ lm3g_tginfo_free(base, &model->lm3g);
+ ckd_free(model->lm3g.tseg_base);
+}
+
+static ngram_funcs_t ngram_model_arpa_funcs = {
+ ngram_model_arpa_free, /* free */
+ ngram_model_arpa_apply_weights, /* apply_weights */
+ lm3g_template_score, /* score */
+ lm3g_template_raw_score, /* raw_score */
+ lm3g_template_add_ug, /* add_ug */
+ lm3g_template_flush, /* flush */
+ lm3g_template_iter, /* iter */
+ lm3g_template_mgrams, /* mgrams */
+ lm3g_template_successors, /* successors */
+ lm3g_template_iter_get, /* iter_get */
+ lm3g_template_iter_next, /* iter_next */
+ lm3g_template_iter_free /* iter_free */
+};
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model_arpa.h ARPABO text format for N-Gram models
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#ifndef __NGRAM_MODEL_ARPA_H__
+#define __NGRAM_MODEL_ARPA_H__
+
+#include "ngram_model_internal.h"
+#include "lm3g_model.h"
+
+/**
+ * Bigram structure.
+ */
+struct bigram_s {
+ uint32 wid; /**< Index of unigram entry for this. (NOT dictionary id.) */
+ uint16 prob2; /**< Index into array of actual bigram probs */
+ uint16 bo_wt2; /**< Index into array of actual bigram backoff wts */
+ uint16 trigrams; /**< Index of 1st entry in lm_t.trigrams[],
+ RELATIVE TO its segment base (see above) */
+};
+
+/**
+ * Trigram structure.
+ *
+ * As with bigrams, trigram prob info kept in a separate table for conserving
+ * memory space.
+ */
+struct trigram_s {
+ uint32 wid; /**< Index of unigram entry for this. (NOT dictionary id.) */
+ uint16 prob3; /**< Index into array of actual trigram probs */
+};
+
+
+/**
+ * Subclass of ngram_model for ARPA file reading.
+ */
+typedef struct ngram_model_arpa_s {
+ ngram_model_t base; /**< Base ngram_model_t structure */
+ lm3g_model_t lm3g; /**< Shared lm3g structure */
+
+ /* Arrays of unique bigram probs and bo-wts, and trigram probs
+ * (these are temporary, actually) */
+ sorted_list_t sorted_prob2;
+ sorted_list_t sorted_bo_wt2;
+ sorted_list_t sorted_prob3;
+} ngram_model_arpa_t;
+
+#endif /* __NGRAM_MODEL_ARPA_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model_dmp.c DMP format language models
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <limits.h>
+
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/pio.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/byteorder.h"
+#include "sphinxbase/listelem_alloc.h"
+
+#include "ngram_model_dmp.h"
+
+static const char darpa_hdr[] = "Darpa Trigram LM";
+static ngram_funcs_t ngram_model_dmp_funcs;
+
+#define TSEG_BASE(m,b) ((m)->lm3g.tseg_base[(b)>>LOG_BG_SEG_SZ])
+#define FIRST_BG(m,u) ((m)->lm3g.unigrams[u].bigrams)
+#define FIRST_TG(m,b) (TSEG_BASE((m),(b))+((m)->lm3g.bigrams[b].trigrams))
+
+static unigram_t *
+new_unigram_table(int32 n_ug)
+{
+ unigram_t *table;
+ int32 i;
+
+ table = ckd_calloc(n_ug, sizeof(unigram_t));
+ for (i = 0; i < n_ug; i++) {
+ table[i].prob1.f = -99.0;
+ table[i].bo_wt1.f = -99.0;
+ }
+ return table;
+}
+
+ngram_model_t *
+ngram_model_dmp_read(cmd_ln_t *config,
+ const char *file_name,
+ logmath_t *lmath)
+{
+ ngram_model_t *base;
+ ngram_model_dmp_t *model;
+ FILE *fp;
+ int do_mmap, do_swap;
+ int32 is_pipe;
+ int32 i, j, k, vn, n, ts;
+ int32 n_unigram;
+ int32 n_bigram;
+ int32 n_trigram;
+ char str[1024];
+ unigram_t *ugptr;
+ bigram_t *bgptr;
+ trigram_t *tgptr;
+ char *tmp_word_str;
+ char *map_base = NULL;
+ size_t offset = 0, filesize;
+
+ base = NULL;
+ do_mmap = FALSE;
+ if (config)
+ do_mmap = cmd_ln_boolean_r(config, "-mmap");
+
+ if ((fp = fopen_comp(file_name, "rb", &is_pipe)) == NULL) {
+ E_ERROR("Dump file %s not found\n", file_name);
+ goto error_out;
+ }
+
+ if (is_pipe && do_mmap) {
+ E_WARN("Dump file is compressed, will not use memory-mapped I/O\n");
+ do_mmap = 0;
+ }
+
+ do_swap = FALSE;
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (k != strlen(darpa_hdr)+1) {
+ SWAP_INT32(&k);
+ if (k != strlen(darpa_hdr)+1) {
+ E_ERROR("Wrong magic header size number %x: %s is not a dump file\n", k, file_name);
+ goto error_out;
+ }
+ do_swap = 1;
+ }
+ if (fread(str, 1, k, fp) != (size_t) k) {
+ E_ERROR("Cannot read header\n");
+ goto error_out;
+ }
+ if (strncmp(str, darpa_hdr, k) != 0) {
+ E_ERROR("Wrong header %s: %s is not a dump file\n", darpa_hdr);
+ goto error_out;
+ }
+
+ if (do_mmap) {
+ if (do_swap) {
+ E_INFO
+ ("Byteswapping required, will not use memory-mapped I/O for LM file\n");
+ do_mmap = 0;
+ }
+ else {
+ E_INFO("Will use memory-mapped I/O for LM file\n");
+#ifdef __ADSPBLACKFIN__ /* This is true for both VisualDSP++ and uClinux. */
+ E_FATAL("memory mapping is not supported at the moment.");
+#else
+#endif
+ }
+ }
+
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ if (fread(str, 1, k, fp) != (size_t) k) {
+ E_ERROR("Cannot read LM filename in header\n");
+ goto error_out;
+ }
+
+ /* read version#, if present (must be <= 0) */
+ if (fread(&vn, sizeof(vn), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&vn);
+ if (vn <= 0) {
+ /* read and don't compare timestamps (we don't care) */
+ if (fread(&ts, sizeof(ts), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&ts);
+
+ /* read and skip format description */
+ for (;;) {
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ if (k == 0)
+ break;
+ if (fread(str, 1, k, fp) != (size_t) k) {
+ E_ERROR("Failed to read word\n");
+ goto error_out;
+ }
+ }
+ /* read model->ucount */
+ if (fread(&n_unigram, sizeof(n_unigram), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&n_unigram);
+ }
+ else {
+ n_unigram = vn;
+ }
+
+ /* read model->bcount, tcount */
+ if (fread(&n_bigram, sizeof(n_bigram), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&n_bigram);
+ if (fread(&n_trigram, sizeof(n_trigram), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&n_trigram);
+ E_INFO("ngrams 1=%d, 2=%d, 3=%d\n", n_unigram, n_bigram, n_trigram);
+
+ /* Allocate space for LM, including initial OOVs and placeholders; initialize it */
+ model = ckd_calloc(1, sizeof(*model));
+ base = &model->base;
+ if (n_trigram > 0)
+ n = 3;
+ else if (n_bigram > 0)
+ n = 2;
+ else
+ n = 1;
+ ngram_model_init(base, &ngram_model_dmp_funcs, lmath, n, n_unigram);
+ base->n_counts[0] = n_unigram;
+ base->n_counts[1] = n_bigram;
+ base->n_counts[2] = n_trigram;
+
+ /* read unigrams (always in memory, as they contain dictionary
+ * mappings that can't be precomputed, and also could have OOVs added) */
+ model->lm3g.unigrams = new_unigram_table(n_unigram + 1);
+ ugptr = model->lm3g.unigrams;
+ for (i = 0; i <= n_unigram; ++i) {
+ /* Skip over the mapping ID, we don't care about it. */
+ if (fread(ugptr, sizeof(int32), 1, fp) != 1) {
+ E_ERROR("Failed to read maping id %d\n", i);
+ goto error_out;
+ }
+ /* Read the actual unigram structure. */
+ if (fread(ugptr, sizeof(unigram_t), 1, fp) != 1) {
+ E_ERROR("Failed to read unigrams data\n");
+ ngram_model_free(base);
+ fclose_comp(fp, is_pipe);
+ return NULL;
+ }
+ /* Byte swap if necessary. */
+ if (do_swap) {
+ SWAP_INT32(&ugptr->prob1.l);
+ SWAP_INT32(&ugptr->bo_wt1.l);
+ SWAP_INT32(&ugptr->bigrams);
+ }
+ /* Convert values to log. */
+ ugptr->prob1.l = logmath_log10_to_log(lmath, ugptr->prob1.f);
+ ugptr->bo_wt1.l = logmath_log10_to_log(lmath, ugptr->bo_wt1.f);
+ E_DEBUG(2, ("ug %d: prob %d bo %d bigrams %d\n",
+ i, ugptr->prob1.l, ugptr->bo_wt1.l, ugptr->bigrams));
+ ++ugptr;
+ }
+ E_INFO("%8d = LM.unigrams(+trailer) read\n", n_unigram);
+
+ /* Now mmap() the file and read in the rest of the (read-only) stuff. */
+ if (do_mmap) {
+ offset = ftell(fp);
+ fseek(fp, 0, SEEK_END);
+ filesize = ftell(fp);
+ fseek(fp, offset, SEEK_SET);
+
+ /* Check for improper word alignment. */
+ if (offset & 0x3) {
+ E_WARN("-mmap specified, but trigram index is not word-aligned. Will not memory-map.\n");
+ do_mmap = FALSE;
+ }
+ else {
+ model->dump_mmap = mmio_file_read(file_name);
+ if (model->dump_mmap == NULL) {
+ do_mmap = FALSE;
+ }
+ else {
+ map_base = mmio_file_ptr(model->dump_mmap);
+ }
+ }
+ }
+
+ if (n_bigram > 0) {
+ /* read bigrams */
+ if (do_mmap) {
+ model->lm3g.bigrams = (bigram_t *) (map_base + offset);
+ offset += (n_bigram + 1) * sizeof(bigram_t);
+ }
+ else {
+ model->lm3g.bigrams =
+ ckd_calloc(n_bigram + 1, sizeof(bigram_t));
+ if (fread(model->lm3g.bigrams, sizeof(bigram_t), n_bigram + 1, fp)
+ != (size_t) n_bigram + 1) {
+ E_ERROR("Failed to read bigrams data\n");
+ goto error_out;
+ }
+ if (do_swap) {
+ for (i = 0, bgptr = model->lm3g.bigrams; i <= n_bigram;
+ i++, bgptr++) {
+ SWAP_INT16(&bgptr->wid);
+ SWAP_INT16(&bgptr->prob2);
+ SWAP_INT16(&bgptr->bo_wt2);
+ SWAP_INT16(&bgptr->trigrams);
+ }
+ }
+ }
+ E_INFO("%8d = LM.bigrams(+trailer) read\n", n_bigram);
+ }
+
+ /* read trigrams */
+ if (n_trigram > 0) {
+ if (do_mmap) {
+ model->lm3g.trigrams = (trigram_t *) (map_base + offset);
+ offset += n_trigram * sizeof(trigram_t);
+ }
+ else {
+ model->lm3g.trigrams =
+ ckd_calloc(n_trigram, sizeof(trigram_t));
+ if (fread
+ (model->lm3g.trigrams, sizeof(trigram_t), n_trigram, fp)
+ != (size_t) n_trigram) {
+ E_ERROR("Failed to read trigrams data\n");
+ goto error_out;
+ }
+ if (do_swap) {
+ for (i = 0, tgptr = model->lm3g.trigrams; i < n_trigram;
+ i++, tgptr++) {
+ SWAP_INT16(&tgptr->wid);
+ SWAP_INT16(&tgptr->prob3);
+ }
+ }
+ }
+ E_INFO("%8d = LM.trigrams read\n", n_trigram);
+ /* Initialize tginfo */
+ model->lm3g.tginfo = ckd_calloc(n_unigram, sizeof(tginfo_t *));
+ model->lm3g.le = listelem_alloc_init(sizeof(tginfo_t));
+ }
+
+ if (n_bigram > 0) {
+ /* read n_prob2 and prob2 array (in memory) */
+ if (do_mmap)
+ fseek(fp, offset, SEEK_SET);
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ model->lm3g.n_prob2 = k;
+ model->lm3g.prob2 = ckd_calloc(k, sizeof(*model->lm3g.prob2));
+ if (fread(model->lm3g.prob2, sizeof(*model->lm3g.prob2), k, fp) != (size_t) k) {
+ E_ERROR("fread(prob2) failed\n");
+ goto error_out;
+ }
+ for (i = 0; i < k; i++) {
+ if (do_swap)
+ SWAP_INT32(&model->lm3g.prob2[i].l);
+ /* Convert values to log. */
+ model->lm3g.prob2[i].l = logmath_log10_to_log(lmath, model->lm3g.prob2[i].f);
+ }
+ E_INFO("%8d = LM.prob2 entries read\n", k);
+ }
+
+ /* read n_bo_wt2 and bo_wt2 array (in memory) */
+ if (base->n > 2) {
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ model->lm3g.n_bo_wt2 = k;
+ model->lm3g.bo_wt2 = ckd_calloc(k, sizeof(*model->lm3g.bo_wt2));
+ if (fread(model->lm3g.bo_wt2, sizeof(*model->lm3g.bo_wt2), k, fp) != (size_t) k) {
+ E_ERROR("Failed to read backoff weights\n");
+ goto error_out;
+ }
+ for (i = 0; i < k; i++) {
+ if (do_swap)
+ SWAP_INT32(&model->lm3g.bo_wt2[i].l);
+ /* Convert values to log. */
+ model->lm3g.bo_wt2[i].l = logmath_log10_to_log(lmath, model->lm3g.bo_wt2[i].f);
+ }
+ E_INFO("%8d = LM.bo_wt2 entries read\n", k);
+ }
+
+ /* read n_prob3 and prob3 array (in memory) */
+ if (base->n > 2) {
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ model->lm3g.n_prob3 = k;
+ model->lm3g.prob3 = ckd_calloc(k, sizeof(*model->lm3g.prob3));
+ if (fread(model->lm3g.prob3, sizeof(*model->lm3g.prob3), k, fp) != (size_t) k) {
+ E_ERROR("Failed to read trigram probability\n");
+ goto error_out;
+ }
+ for (i = 0; i < k; i++) {
+ if (do_swap)
+ SWAP_INT32(&model->lm3g.prob3[i].l);
+ /* Convert values to log. */
+ model->lm3g.prob3[i].l = logmath_log10_to_log(lmath, model->lm3g.prob3[i].f);
+ }
+ E_INFO("%8d = LM.prob3 entries read\n", k);
+ }
+
+ /* read tseg_base size and tseg_base */
+ if (do_mmap)
+ offset = ftell(fp);
+ if (n_trigram > 0) {
+ if (do_mmap) {
+ memcpy(&k, map_base + offset, sizeof(k));
+ offset += sizeof(int32);
+ model->lm3g.tseg_base = (int32 *) (map_base + offset);
+ offset += k * sizeof(int32);
+ }
+ else {
+ k = (n_bigram + 1) / BG_SEG_SZ + 1;
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ model->lm3g.tseg_base = ckd_calloc(k, sizeof(int32));
+ if (fread(model->lm3g.tseg_base, sizeof(int32), k, fp) !=
+ (size_t) k) {
+ E_ERROR("Failed to read trigram index\n");
+ goto error_out;
+ }
+ if (do_swap)
+ for (i = 0; i < k; i++)
+ SWAP_INT32(&model->lm3g.tseg_base[i]);
+ }
+ E_INFO("%8d = LM.tseg_base entries read\n", k);
+ }
+
+ /* read ascii word strings */
+ if (do_mmap) {
+ memcpy(&k, map_base + offset, sizeof(k));
+ offset += sizeof(int32);
+ tmp_word_str = (char *) (map_base + offset);
+ offset += k;
+ }
+ else {
+ base->writable = TRUE;
+ if (fread(&k, sizeof(k), 1, fp) != 1)
+ goto error_out;
+ if (do_swap) SWAP_INT32(&k);
+ tmp_word_str = ckd_calloc(k, 1);
+ if (fread(tmp_word_str, 1, k, fp) != (size_t) k) {
+ E_ERROR("Failed to read words\n");
+ goto error_out;
+ }
+ }
+
+ /* First make sure string just read contains n_counts[0] words (PARANOIA!!) */
+ for (i = 0, j = 0; i < k; i++)
+ if (tmp_word_str[i] == '\0')
+ j++;
+ if (j != n_unigram) {
+ E_ERROR("Error reading word strings (%d doesn't match n_unigrams %d)\n",
+ j, n_unigram);
+ goto error_out;
+ }
+
+ /* Break up string just read into words */
+ if (do_mmap) {
+ j = 0;
+ for (i = 0; i < n_unigram; i++) {
+ base->word_str[i] = tmp_word_str + j;
+ if (hash_table_enter(base->wid, base->word_str[i],
+ (void *)(long)i) != (void *)(long)i) {
+ E_WARN("Duplicate word in dictionary: %s\n", base->word_str[i]);
+ }
+ j += strlen(base->word_str[i]) + 1;
+ }
+ }
+ else {
+ j = 0;
+ for (i = 0; i < n_unigram; i++) {
+ base->word_str[i] = ckd_salloc(tmp_word_str + j);
+ if (hash_table_enter(base->wid, base->word_str[i],
+ (void *)(long)i) != (void *)(long)i) {
+ E_WARN("Duplicate word in dictionary: %s\n", base->word_str[i]);
+ }
+ j += strlen(base->word_str[i]) + 1;
+ }
+ free(tmp_word_str);
+ }
+ E_INFO("%8d = ascii word strings read\n", i);
+
+ fclose_comp(fp, is_pipe);
+ return base;
+
+error_out:
+ if (fp)
+ fclose_comp(fp, is_pipe);
+ ngram_model_free(base);
+ return NULL;
+}
+
+ngram_model_dmp_t *
+ngram_model_dmp_build(ngram_model_t *base)
+{
+ ngram_model_dmp_t *model;
+ ngram_model_t *newbase;
+ ngram_iter_t *itor;
+ sorted_list_t sorted_prob2;
+ sorted_list_t sorted_bo_wt2;
+ sorted_list_t sorted_prob3;
+ bigram_t *bgptr;
+ trigram_t *tgptr;
+ int i, bgcount, tgcount, seg;
+
+ if (base->funcs == &ngram_model_dmp_funcs) {
+ E_INFO("Using existing DMP model.\n");
+ return (ngram_model_dmp_t *)ngram_model_retain(base);
+ }
+
+ /* Initialize new base model structure with params from base. */
+ E_INFO("Building DMP model...\n");
+ model = ckd_calloc(1, sizeof(*model));
+ newbase = &model->base;
+ ngram_model_init(newbase, &ngram_model_dmp_funcs,
+ logmath_retain(base->lmath),
+ base->n, base->n_counts[0]);
+ /* Copy N-gram counts over. */
+ memcpy(newbase->n_counts, base->n_counts,
+ base->n * sizeof(*base->n_counts));
+ /* Make sure word strings are freed. */
+ newbase->writable = TRUE;
+ /* Initialize unigram table and string table. */
+ model->lm3g.unigrams = new_unigram_table(newbase->n_counts[0] + 1);
+ for (itor = ngram_model_mgrams(base, 0); itor;
+ itor = ngram_iter_next(itor)) {
+ int32 prob1, bo_wt1;
+ int32 const *wids;
+
+ /* Can't guarantee they will go in unigram order, so just to
+ * be correct, we do this... */
+ wids = ngram_iter_get(itor, &prob1, &bo_wt1);
+ model->lm3g.unigrams[wids[0]].prob1.l = prob1;
+ model->lm3g.unigrams[wids[0]].bo_wt1.l = bo_wt1;
+ newbase->word_str[wids[0]] = ckd_salloc(ngram_word(base, wids[0]));
+ if ((hash_table_enter_int32(newbase->wid,
+ newbase->word_str[wids[0]], wids[0]))
+ != wids[0]) {
+ E_WARN("Duplicate word in dictionary: %s\n", newbase->word_str[wids[0]]);
+ }
+ }
+ E_INFO("%8d = #unigrams created\n", newbase->n_counts[0]);
+
+ if (newbase->n < 2)
+ return model;
+
+ /* Construct quantized probability table for bigrams and
+ * (optionally) trigrams. Hesitate to use the "sorted list" thing
+ * since it isn't so useful, but it's there already. */
+ init_sorted_list(&sorted_prob2);
+ if (newbase->n > 2) {
+ init_sorted_list(&sorted_bo_wt2);
+ init_sorted_list(&sorted_prob3);
+ }
+ /* Construct bigram and trigram arrays. */
+ bgptr = model->lm3g.bigrams = ckd_calloc(newbase->n_counts[1] + 1, sizeof(bigram_t));
+ if (newbase->n > 2) {
+ tgptr = model->lm3g.trigrams = ckd_calloc(newbase->n_counts[2], sizeof(trigram_t));
+ model->lm3g.tseg_base =
+ ckd_calloc((newbase->n_counts[1] + 1) / BG_SEG_SZ + 1, sizeof(int32));
+ }
+ else
+ tgptr = NULL;
+ /* Since bigrams and trigrams have to be contiguous with others
+ * with the same N-1-gram, we traverse them in depth-first order
+ * to build the bigram and trigram arrays. */
+ for (i = 0; i < newbase->n_counts[0]; ++i) {
+ ngram_iter_t *uitor;
+ bgcount = bgptr - model->lm3g.bigrams;
+ /* First bigram index (same as next if no bigrams...) */
+ model->lm3g.unigrams[i].bigrams = bgcount;
+ E_DEBUG(2, ("unigram %d: %s => bigram %d\n", i, newbase->word_str[i], bgcount));
+ /* All bigrams corresponding to unigram i */
+ uitor = ngram_ng_iter(base, i, NULL, 0);
+ for (itor = ngram_iter_successors(uitor);
+ itor; ++bgptr, itor = ngram_iter_next(itor)) {
+ int32 prob2, bo_wt2;
+ int32 const *wids;
+ ngram_iter_t *titor;
+
+ wids = ngram_iter_get(itor, &prob2, &bo_wt2);
+
+ assert (bgptr - model->lm3g.bigrams < newbase->n_counts[1]);
+
+ bgptr->wid = wids[1];
+ bgptr->prob2 = sorted_id(&sorted_prob2, &prob2);
+ if (newbase->n > 2) {
+ tgcount = (tgptr - model->lm3g.trigrams);
+ bgcount = (bgptr - model->lm3g.bigrams);
+
+ /* Backoff weight (only if there are trigrams...) */
+ bgptr->bo_wt2 = sorted_id(&sorted_bo_wt2, &bo_wt2);
+
+ /* Find bigram segment for this bigram (this isn't
+ * used unless there are trigrams) */
+ seg = bgcount >> LOG_BG_SEG_SZ;
+ /* If we just crossed a bigram segment boundary, then
+ * point tseg_base for the new segment to the current
+ * trigram pointer. */
+ if (seg != (bgcount - 1) >> LOG_BG_SEG_SZ)
+ model->lm3g.tseg_base[seg] = tgcount;
+ /* Now calculate the trigram offset. */
+ bgptr->trigrams = tgcount - model->lm3g.tseg_base[seg];
+ E_DEBUG(2, ("bigram %d %s %s => trigram %d:%d\n",
+ bgcount,
+ newbase->word_str[wids[0]],
+ newbase->word_str[wids[1]],
+ seg, bgptr->trigrams));
+
+ /* And fill in successors' trigram info. */
+ for (titor = ngram_iter_successors(itor);
+ titor; ++tgptr, titor = ngram_iter_next(titor)) {
+ int32 prob3, dummy;
+
+ assert(tgptr - model->lm3g.trigrams < newbase->n_counts[2]);
+ wids = ngram_iter_get(titor, &prob3, &dummy);
+ tgptr->wid = wids[2];
+ tgptr->prob3 = sorted_id(&sorted_prob3, &prob3);
+ E_DEBUG(2, ("trigram %d %s %s %s => prob %d\n",
+ tgcount,
+ newbase->word_str[wids[0]],
+ newbase->word_str[wids[1]],
+ newbase->word_str[wids[2]],
+ tgptr->prob3));
+ }
+ }
+ }
+ ngram_iter_free(uitor);
+ }
+ /* Add sentinal unigram and bigram records. */
+ bgcount = bgptr - model->lm3g.bigrams;
+ tgcount = tgptr - model->lm3g.trigrams;
+ seg = bgcount >> LOG_BG_SEG_SZ;
+ if (seg != (bgcount - 1) >> LOG_BG_SEG_SZ)
+ model->lm3g.tseg_base[seg] = tgcount;
+ model->lm3g.unigrams[i].bigrams = bgcount;
+ if (newbase->n > 2)
+ bgptr->trigrams = tgcount - model->lm3g.tseg_base[seg];
+
+ /* Now create probability tables. */
+ model->lm3g.n_prob2 = sorted_prob2.free;
+ model->lm3g.prob2 = vals_in_sorted_list(&sorted_prob2);
+ E_INFO("%8d = #bigrams created\n", newbase->n_counts[1]);
+ E_INFO("%8d = #prob2 entries\n", model->lm3g.n_prob2);
+ free_sorted_list(&sorted_prob2);
+ if (newbase->n > 2) {
+ /* Create trigram bo-wts array. */
+ model->lm3g.n_bo_wt2 = sorted_bo_wt2.free;
+ model->lm3g.bo_wt2 = vals_in_sorted_list(&sorted_bo_wt2);
+ free_sorted_list(&sorted_bo_wt2);
+ E_INFO("%8d = #bo_wt2 entries\n", model->lm3g.n_bo_wt2);
+ /* Create trigram probability table. */
+ model->lm3g.n_prob3 = sorted_prob3.free;
+ model->lm3g.prob3 = vals_in_sorted_list(&sorted_prob3);
+ E_INFO("%8d = #trigrams created\n", newbase->n_counts[2]);
+ E_INFO("%8d = #prob3 entries\n", model->lm3g.n_prob3);
+ free_sorted_list(&sorted_prob3);
+ /* Initialize tginfo */
+ model->lm3g.tginfo = ckd_calloc(newbase->n_counts[0], sizeof(tginfo_t *));
+ model->lm3g.le = listelem_alloc_init(sizeof(tginfo_t));
+ }
+
+ return model;
+}
+
+static void
+fwrite_int32(FILE *fh, int32 val)
+{
+ fwrite(&val, 4, 1, fh);
+}
+
+static void
+fwrite_ug(FILE *fh, unigram_t *ug, logmath_t *lmath)
+{
+ int32 bogus = -1;
+ float32 log10val;
+
+ /* Bogus dictionary mapping field. */
+ fwrite(&bogus, 4, 1, fh);
+ /* Convert values to log10. */
+ log10val = logmath_log_to_log10(lmath, ug->prob1.l);
+ fwrite(&log10val, 4, 1, fh);
+ log10val = logmath_log_to_log10(lmath, ug->bo_wt1.l);
+ fwrite(&log10val, 4, 1, fh);
+ fwrite_int32(fh, ug->bigrams);
+}
+
+static void
+fwrite_bg(FILE *fh, bigram_t *bg)
+{
+ fwrite(bg, sizeof(*bg), 1, fh);
+}
+
+static void
+fwrite_tg(FILE *fh, trigram_t *tg)
+{
+ fwrite(tg, sizeof(*tg), 1, fh);
+}
+
+/** Please look at the definition of
+ */
+static char const *fmtdesc[] = {
+ "BEGIN FILE FORMAT DESCRIPTION",
+ "Header string length (int32) and string (including trailing 0)",
+ "Original LM filename string-length (int32) and filename (including trailing 0)",
+ "(int32) version number (present iff value <= 0)",
+ "(int32) original LM file modification timestamp (iff version# present)",
+ "(int32) string-length and string (including trailing 0) (iff version# present)",
+ "... previous entry continued any number of times (iff version# present)",
+ "(int32) 0 (terminating sequence of strings) (iff version# present)",
+ "(int32) log_bg_seg_sz (present iff different from default value of LOG2_BG_SEG_SZ)",
+ "(int32) lm_t.ucount (must be > 0)",
+ "(int32) lm_t.bcount",
+ "(int32) lm_t.tcount",
+ "lm_t.ucount+1 unigrams (including sentinel)",
+ "lm_t.bcount+1 bigrams (including sentinel 64 bits (bg_t) each if version=-1/-2, 128 bits (bg32_t) each if version=-3",
+ "lm_t.tcount trigrams (present iff lm_t.tcount > 0 32 bits (tg_t) each if version=-1/-2, 64 bits (tg32_t) each if version=-3)",
+ "(int32) lm_t.n_prob2",
+ "(int32) lm_t.prob2[]",
+ "(int32) lm_t.n_bo_wt2 (present iff lm_t.tcount > 0)",
+ "(int32) lm_t.bo_wt2[] (present iff lm_t.tcount > 0)",
+ "(int32) lm_t.n_prob3 (present iff lm_t.tcount > 0)",
+ "(int32) lm_t.prob3[] (present iff lm_t.tcount > 0)",
+ "(int32) (lm_t.bcount+1)/BG_SEG_SZ+1 (present iff lm_t.tcount > 0)",
+ "(int32) lm_t.tseg_base[] (present iff lm_t.tcount > 0)",
+ "(int32) Sum(all word string-lengths, including trailing 0 for each)",
+ "All word strings (including trailing 0 for each)",
+ "END FILE FORMAT DESCRIPTION",
+ NULL,
+};
+
+static void
+ngram_model_dmp_write_header(FILE * fh)
+{
+ int32 k;
+ k = strlen(darpa_hdr) + 1;
+ fwrite_int32(fh, k);
+ fwrite(darpa_hdr, 1, k, fh);
+}
+
+static void
+ngram_model_dmp_write_lm_filename(FILE * fh, const char *lmfile)
+{
+ int32 k;
+
+ k = strlen(lmfile) + 1;
+ fwrite_int32(fh, k);
+ fwrite(lmfile, 1, k, fh);
+}
+
+#define LMDMP_VERSION_TG_16BIT -1 /**< VERSION 1 is the simplest DMP file which
+ is trigram or lower which used 16 bits in
+ bigram and trigram.*/
+
+static void
+ngram_model_dmp_write_version(FILE * fh, int32 mtime)
+{
+ fwrite_int32(fh, LMDMP_VERSION_TG_16BIT); /* version # */
+ fwrite_int32(fh, mtime);
+}
+
+static void
+ngram_model_dmp_write_ngram_counts(FILE * fh, ngram_model_t *model)
+{
+ fwrite_int32(fh, model->n_counts[0]);
+ fwrite_int32(fh, model->n_counts[1]);
+ fwrite_int32(fh, model->n_counts[2]);
+}
+
+static void
+ngram_model_dmp_write_fmtdesc(FILE * fh)
+{
+ int32 i, k;
+ long pos;
+
+ /* Write file format description into header */
+ for (i = 0; fmtdesc[i] != NULL; i++) {
+ k = strlen(fmtdesc[i]) + 1;
+ fwrite_int32(fh, k);
+ fwrite(fmtdesc[i], 1, k, fh);
+ }
+ /* Pad it out in order to achieve 32-bit alignment */
+ pos = ftell(fh);
+ k = pos & 3;
+ if (k) {
+ fwrite_int32(fh, 4-k);
+ fwrite("!!!!", 1, 4-k, fh);
+ }
+ fwrite_int32(fh, 0);
+}
+
+static void
+ngram_model_dmp_write_unigram(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i;
+
+ for (i = 0; i <= model->n_counts[0]; i++) {
+ fwrite_ug(fh, &(lm->lm3g.unigrams[i]), model->lmath);
+ }
+}
+
+
+static void
+ngram_model_dmp_write_bigram(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i;
+
+ for (i = 0; i <= model->n_counts[1]; i++) {
+ fwrite_bg(fh, &(lm->lm3g.bigrams[i]));
+ }
+
+}
+
+static void
+ngram_model_dmp_write_trigram(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i;
+
+ for (i = 0; i < model->n_counts[2]; i++) {
+ fwrite_tg(fh, &(lm->lm3g.trigrams[i]));
+ }
+}
+
+static void
+ngram_model_dmp_write_bgprob(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i;
+
+ fwrite_int32(fh, lm->lm3g.n_prob2);
+ for (i = 0; i < lm->lm3g.n_prob2; i++) {
+ float32 log10val = logmath_log_to_log10(model->lmath, lm->lm3g.prob2[i].l);
+ fwrite(&log10val, 4, 1, fh);
+ }
+}
+
+static void
+ngram_model_dmp_write_tgbowt(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i;
+
+ fwrite_int32(fh, lm->lm3g.n_bo_wt2);
+ for (i = 0; i < lm->lm3g.n_bo_wt2; i++) {
+ float32 log10val = logmath_log_to_log10(model->lmath, lm->lm3g.bo_wt2[i].l);
+ fwrite(&log10val, 4, 1, fh);
+ }
+}
+
+static void
+ngram_model_dmp_write_tgprob(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i;
+
+ fwrite_int32(fh, lm->lm3g.n_prob3);
+ for (i = 0; i < lm->lm3g.n_prob3; i++) {
+ float32 log10val = logmath_log_to_log10(model->lmath, lm->lm3g.prob3[i].l);
+ fwrite(&log10val, 4, 1, fh);
+ }
+}
+
+static void
+ngram_model_dmp_write_tg_segbase(FILE *fh, ngram_model_t *model)
+{
+ ngram_model_dmp_t *lm = (ngram_model_dmp_t *)model;
+ int32 i, k;
+
+ k = (model->n_counts[1] + 1) / BG_SEG_SZ + 1;
+ fwrite_int32(fh, k);
+ for (i = 0; i < k; i++)
+ fwrite_int32(fh, lm->lm3g.tseg_base[i]);
+}
+
+static void
+ngram_model_dmp_write_wordstr(FILE *fh, ngram_model_t *model)
+{
+ int32 i, k;
+
+ k = 0;
+ for (i = 0; i < model->n_counts[0]; i++)
+ k += strlen(model->word_str[i]) + 1;
+ fwrite_int32(fh, k);
+ for (i = 0; i < model->n_counts[0]; i++)
+ fwrite(model->word_str[i], 1,
+ strlen(model->word_str[i]) + 1, fh);
+}
+
+int
+ngram_model_dmp_write(ngram_model_t *base,
+ const char *file_name)
+{
+ ngram_model_dmp_t *model;
+ ngram_model_t *newbase;
+ FILE *fh;
+
+ /* First, construct a DMP model from the base model. */
+ model = ngram_model_dmp_build(base);
+ newbase = &model->base;
+
+ /* Now write it, confident in the knowledge that it's the right
+ * kind of language model internally. */
+ if ((fh = fopen(file_name, "wb")) == NULL) {
+ E_ERROR("Cannot create file %s\n", file_name);
+ return -1;
+ }
+ ngram_model_dmp_write_header(fh);
+ ngram_model_dmp_write_lm_filename(fh, file_name);
+ ngram_model_dmp_write_version(fh, 0);
+ ngram_model_dmp_write_fmtdesc(fh);
+ ngram_model_dmp_write_ngram_counts(fh, newbase);
+ ngram_model_dmp_write_unigram(fh, newbase);
+ if (newbase->n > 1) {
+ ngram_model_dmp_write_bigram(fh, newbase);
+ if (newbase->n > 2) {
+ ngram_model_dmp_write_trigram(fh, newbase);
+ }
+ ngram_model_dmp_write_bgprob(fh, newbase);
+ if (newbase->n > 2) {
+ ngram_model_dmp_write_tgbowt(fh, newbase);
+ ngram_model_dmp_write_tgprob(fh, newbase);
+ ngram_model_dmp_write_tg_segbase(fh, newbase);
+ }
+ }
+ ngram_model_dmp_write_wordstr(fh, newbase);
+ ngram_model_free(newbase);
+
+ return fclose(fh);
+}
+
+static int
+ngram_model_dmp_apply_weights(ngram_model_t *base, float32 lw,
+ float32 wip, float32 uw)
+{
+ ngram_model_dmp_t *model = (ngram_model_dmp_t *)base;
+ lm3g_apply_weights(base, &model->lm3g, lw, wip, uw);
+ return 0;
+}
+
+/* Lousy "templating" for things that are largely the same in DMP and
+ * ARPA models, except for the bigram and trigram types and some
+ * names. */
+#define NGRAM_MODEL_TYPE ngram_model_dmp_t
+#include "lm3g_templates.c"
+
+static void
+ngram_model_dmp_free(ngram_model_t *base)
+{
+ ngram_model_dmp_t *model = (ngram_model_dmp_t *)base;
+
+ ckd_free(model->lm3g.unigrams);
+ ckd_free(model->lm3g.prob2);
+ if (model->dump_mmap) {
+ mmio_file_unmap(model->dump_mmap);
+ }
+ else {
+ ckd_free(model->lm3g.bigrams);
+ if (base->n > 2) {
+ ckd_free(model->lm3g.trigrams);
+ ckd_free(model->lm3g.tseg_base);
+ }
+ }
+ if (base->n > 2) {
+ ckd_free(model->lm3g.bo_wt2);
+ ckd_free(model->lm3g.prob3);
+ }
+
+ lm3g_tginfo_free(base, &model->lm3g);
+}
+
+static ngram_funcs_t ngram_model_dmp_funcs = {
+ ngram_model_dmp_free, /* free */
+ ngram_model_dmp_apply_weights, /* apply_weights */
+ lm3g_template_score, /* score */
+ lm3g_template_raw_score, /* raw_score */
+ lm3g_template_add_ug, /* add_ug */
+ lm3g_template_flush, /* flush */
+ lm3g_template_iter, /* iter */
+ lm3g_template_mgrams, /* mgrams */
+ lm3g_template_successors, /* successors */
+ lm3g_template_iter_get, /* iter_get */
+ lm3g_template_iter_next, /* iter_next */
+ lm3g_template_iter_free /* iter_free */
+};
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model_dmp.h DMP format for N-Gram models
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#ifndef __NGRAM_MODEL_DMP_H__
+#define __NGRAM_MODEL_DMP_H__
+
+#include "sphinxbase/mmio.h"
+
+#include "ngram_model_internal.h"
+#include "lm3g_model.h"
+
+/**
+ * On-disk representation of bigrams.
+ */
+struct bigram_s {
+ uint16 wid; /**< Index of unigram entry for this. (NOT dictionary id.) */
+ uint16 prob2; /**< Index into array of actual bigram probs */
+ uint16 bo_wt2; /**< Index into array of actual bigram backoff wts */
+ uint16 trigrams; /**< Index of 1st entry in lm_t.trigrams[],
+ RELATIVE TO its segment base (see lm3g_model.h) */
+};
+
+/**
+ * On-disk representation of trigrams.
+ *
+ * As with bigrams, trigram prob info kept in a separate table for conserving
+ * memory space.
+ */
+struct trigram_s {
+ uint16 wid; /**< Index of unigram entry for this. (NOT dictionary id.) */
+ uint16 prob3; /**< Index into array of actual trigram probs */
+};
+
+/**
+ * Subclass of ngram_model for DMP file reading.
+ */
+typedef struct ngram_model_dmp_s {
+ ngram_model_t base; /**< Base ngram_model_t structure */
+ lm3g_model_t lm3g; /**< Common lm3g_model_t structure */
+ mmio_file_t *dump_mmap; /**< mmap() of dump file (or NULL if none) */
+} ngram_model_dmp_t;
+
+/**
+ * Construct a DMP format model from a generic base model.
+ *
+ * Note: If base is already a DMP format model, this just calls
+ * ngram_model_retain(), and any changes will also be made in the base
+ * model.
+ */
+ngram_model_dmp_t *ngram_model_dmp_build(ngram_model_t *base);
+
+
+#endif /* __NGRAM_MODEL_DMP_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model_dmp32.c DMP32 format language models
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "sphinxbase/ckd_alloc.h"
+
+#include "ngram_model_internal.h"
+
+static ngram_funcs_t ngram_model_dmp32_funcs;
+
+ngram_model_t *
+ngram_model_dmp32_read(cmd_ln_t *config,
+ const char *file_name,
+ logmath_t *lmath)
+{
+ return NULL;
+}
+
+int
+ngram_model_dmp32_write(ngram_model_t *model,
+ const char *file_name)
+{
+ return -1;
+}
+
+static int
+ngram_model_dmp32_apply_weights(ngram_model_t *model, float32 lw,
+ float32 wip, float32 uw)
+{
+ return 0;
+}
+
+static int32
+ngram_model_dmp32_score(ngram_model_t *model, int32 wid,
+ int32 *history, int32 n_hist,
+ int32 *n_used)
+{
+ return model->log_zero;
+}
+
+static int32
+ngram_model_dmp32_raw_score(ngram_model_t *model, int32 wid,
+ int32 *history, int32 n_hist,
+ int32 *n_used)
+{
+ return model->log_zero;
+}
+
+static void
+ngram_model_dmp32_free(ngram_model_t *base)
+{
+ ckd_free(base);
+}
+
+static ngram_funcs_t ngram_model_dmp32_funcs = {
+ ngram_model_dmp32_free, /* free */
+ ngram_model_dmp32_apply_weights, /* apply_weights */
+ ngram_model_dmp32_score, /* score */
+ ngram_model_dmp32_raw_score, /* raw_score */
+ NULL /* add_ug */
+};
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * \file ngram_model_internal.h Internal structures for N-Gram models
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#ifndef __NGRAM_MODEL_INTERNAL_H__
+#define __NGRAM_MODEL_INTERNAL_H__
+
+#include "sphinxbase/ngram_model.h"
+#include "sphinxbase/hash_table.h"
+
+/**
+ * Common implementation of ngram_model_t.
+ *
+ * The details of bigram, trigram, and higher-order N-gram storage, if any, can
+ * vary somewhat depending on the file format in use.
+ */
+struct ngram_model_s {
+ int refcount; /**< Reference count */
+ int32 *n_counts; /**< Counts for 1, 2, 3, ... grams */
+ int32 n_1g_alloc; /**< Number of allocated word strings (for new word addition) */
+ int32 n_words; /**< Number of actual word strings (NOT the same as the
+ number of unigrams, due to class words). */
+ uint8 n; /**< This is an n-gram model (1, 2, 3, ...). */
+ uint8 n_classes; /**< Number of classes (maximum 128) */
+ uint8 writable; /**< Are word strings writable? */
+ uint8 flags; /**< Any other flags we might care about
+ (FIXME: Merge this and writable) */
+ logmath_t *lmath; /**< Log-math object */
+ float32 lw; /**< Language model scaling factor */
+ int32 log_wip; /**< Log of word insertion penalty */
+ int32 log_uw; /**< Log of unigram weight */
+ int32 log_uniform; /**< Log of uniform (0-gram) probability */
+ int32 log_uniform_weight; /**< Log of uniform weight (i.e. 1 - unigram weight) */
+ int32 log_zero; /**< Zero probability, cached here for quick lookup */
+ char **word_str; /**< Unigram names */
+ hash_table_t *wid; /**< Mapping of unigram names to word IDs. */
+ int32 *tmp_wids; /**< Temporary array of word IDs for ngram_model_get_ngram() */
+ struct ngram_class_s **classes; /**< Word class definitions. */
+ struct ngram_funcs_s *funcs; /**< Implementation-specific methods. */
+};
+
+/**
+ * Implementation of ngram_class_t.
+ */
+struct ngram_class_s {
+ int32 tag_wid; /**< Base word ID for this class tag */
+ int32 start_wid; /**< Starting base word ID for this class' words */
+ int32 n_words; /**< Number of base words for this class */
+ int32 *prob1; /**< Probability table for base words */
+ /**
+ * Custom hash table for additional words.
+ */
+ struct ngram_hash_s {
+ int32 wid; /**< Word ID of this bucket */
+ int32 prob1; /**< Probability for this word */
+ int32 next; /**< Index of next bucket (or -1 for no collision) */
+ } *nword_hash;
+ int32 n_hash; /**< Number of buckets in nword_hash (power of 2) */
+ int32 n_hash_inuse; /**< Number of words in nword_hash */
+};
+
+#define NGRAM_HASH_SIZE 128
+
+#define NGRAM_BASEWID(wid) ((wid)&0xffffff)
+#define NGRAM_CLASSID(wid) (((wid)>>24) & 0x7f)
+#define NGRAM_CLASSWID(wid,classid) (((classid)<<24) | 0x80000000 | (wid))
+#define NGRAM_IS_CLASSWID(wid) ((wid)&0x80000000)
+
+#define UG_ALLOC_STEP 10
+
+/** Implementation-specific functions for operating on ngram_model_t objects */
+typedef struct ngram_funcs_s {
+ /**
+ * Implementation-specific function for freeing an ngram_model_t.
+ */
+ void (*free)(ngram_model_t *model);
+ /**
+ * Implementation-specific function for applying language model weights.
+ */
+ int (*apply_weights)(ngram_model_t *model,
+ float32 lw,
+ float32 wip,
+ float32 uw);
+ /**
+ * Implementation-specific function for querying language model score.
+ */
+ int32 (*score)(ngram_model_t *model,
+ int32 wid,
+ int32 *history,
+ int32 n_hist,
+ int32 *n_used);
+ /**
+ * Implementation-specific function for querying raw language
+ * model probability.
+ */
+ int32 (*raw_score)(ngram_model_t *model,
+ int32 wid,
+ int32 *history,
+ int32 n_hist,
+ int32 *n_used);
+ /**
+ * Implementation-specific function for adding unigrams.
+ *
+ * This function updates the internal structures of a language
+ * model to add the given unigram with the given weight (defined
+ * as a log-factor applied to the uniform distribution). This
+ * includes reallocating or otherwise resizing the set of unigrams.
+ *
+ * @return The language model score (not raw log-probability) of
+ * the new word, or 0 for failure.
+ */
+ int32 (*add_ug)(ngram_model_t *model,
+ int32 wid, int32 lweight);
+ /**
+ * Implementation-specific function for purging N-Gram cache
+ */
+ void (*flush)(ngram_model_t *model);
+
+ /**
+ * Implementation-specific function for iterating.
+ */
+ ngram_iter_t * (*iter)(ngram_model_t *model, int32 wid, int32 *history, int32 n_hist);
+
+ /**
+ * Implementation-specific function for iterating.
+ */
+ ngram_iter_t * (*mgrams)(ngram_model_t *model, int32 m);
+
+ /**
+ * Implementation-specific function for iterating.
+ */
+ ngram_iter_t * (*successors)(ngram_iter_t *itor);
+
+ /**
+ * Implementation-specific function for iterating.
+ */
+ int32 const * (*iter_get)(ngram_iter_t *itor,
+ int32 *out_score,
+ int32 *out_bowt);
+
+ /**
+ * Implementation-specific function for iterating.
+ */
+ ngram_iter_t * (*iter_next)(ngram_iter_t *itor);
+
+ /**
+ * Implementation-specific function for iterating.
+ */
+ void (*iter_free)(ngram_iter_t *itor);
+} ngram_funcs_t;
+
+/**
+ * Base iterator structure for N-grams.
+ */
+struct ngram_iter_s {
+ ngram_model_t *model;
+ int32 *wids; /**< Scratch space for word IDs. */
+ int16 m; /**< Order of history. */
+ int16 successor; /**< Is this a successor iterator? */
+};
+
+/**
+ * One class definition from a classdef file.
+ */
+typedef struct classdef_s {
+ char **words;
+ float32 *weights;
+ int32 n_words;
+} classdef_t;
+
+/**
+ * Initialize the base ngram_model_t structure.
+ */
+int32
+ngram_model_init(ngram_model_t *model,
+ ngram_funcs_t *funcs,
+ logmath_t *lmath,
+ int32 n, int32 n_unigram);
+
+/**
+ * Read an N-Gram model from an ARPABO text file.
+ */
+ngram_model_t *ngram_model_arpa_read(cmd_ln_t *config,
+ const char *file_name,
+ logmath_t *lmath);
+/**
+ * Read an N-Gram model from a Sphinx .DMP binary file.
+ */
+ngram_model_t *ngram_model_dmp_read(cmd_ln_t *config,
+ const char *file_name,
+ logmath_t *lmath);
+/**
+ * Read an N-Gram model from a Sphinx .DMP32 binary file.
+ */
+ngram_model_t *ngram_model_dmp32_read(cmd_ln_t *config,
+ const char *file_name,
+ logmath_t *lmath);
+
+/**
+ * Write an N-Gram model to an ARPABO text file.
+ */
+int ngram_model_arpa_write(ngram_model_t *model,
+ const char *file_name);
+/**
+ * Write an N-Gram model to a Sphinx .DMP binary file.
+ */
+int ngram_model_dmp_write(ngram_model_t *model,
+ const char *file_name);
+
+/**
+ * Read a probdef file.
+ */
+int32 read_classdef_file(hash_table_t *classes, const char *classdef_file);
+
+/**
+ * Free a class definition.
+ */
+void classdef_free(classdef_t *classdef);
+
+/**
+ * Allocate and initialize an N-Gram class.
+ */
+ngram_class_t *ngram_class_new(ngram_model_t *model, int32 tag_wid,
+ int32 start_wid, glist_t classwords);
+
+/**
+ * Deallocate an N-Gram class.
+ */
+void ngram_class_free(ngram_class_t *lmclass);
+
+/**
+ * Get the in-class log probability for a word in an N-Gram class.
+ *
+ * @return This probability, or 1 if word not found.
+ */
+int32 ngram_class_prob(ngram_class_t *lmclass, int32 wid);
+
+/**
+ * Initialize base M-Gram iterator structure.
+ */
+void ngram_iter_init(ngram_iter_t *itor, ngram_model_t *model,
+ int m, int successor);
+
+#endif /* __NGRAM_MODEL_INTERNAL_H__ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2008 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file ngram_model_set.c Set of language models.
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/filename.h"
+
+#include "ngram_model_set.h"
+
+static ngram_funcs_t ngram_model_set_funcs;
+
+static int
+my_compare(const void *a, const void *b)
+{
+ /* Make sure <UNK> floats to the beginning. */
+ if (strcmp(*(char * const *)a, "<UNK>") == 0)
+ return -1;
+ else if (strcmp(*(char * const *)b, "<UNK>") == 0)
+ return 1;
+ else
+ return strcmp(*(char * const *)a, *(char * const *)b);
+}
+
+static void
+build_widmap(ngram_model_t *base, logmath_t *lmath, int32 n)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ ngram_model_t **models = set->lms;
+ hash_table_t *vocab;
+ glist_t hlist;
+ gnode_t *gn;
+ int32 i;
+
+ /* Construct a merged vocabulary and a set of word-ID mappings. */
+ vocab = hash_table_new(models[0]->n_words, FALSE);
+ /* Create the set of merged words. */
+ for (i = 0; i < set->n_models; ++i) {
+ int32 j;
+ for (j = 0; j < models[i]->n_words; ++j) {
+ /* Ignore collisions. */
+ (void)hash_table_enter_int32(vocab, models[i]->word_str[j], j);
+ }
+ }
+ /* Create the array of words, then sort it. */
+ if (hash_table_lookup(vocab, "<UNK>", NULL) != 0)
+ (void)hash_table_enter_int32(vocab, "<UNK>", 0);
+ /* Now we know the number of unigrams, initialize the base model. */
+ ngram_model_init(base, &ngram_model_set_funcs, lmath, n, hash_table_inuse(vocab));
+ base->writable = FALSE; /* We will reuse the pointers from the submodels. */
+ i = 0;
+ hlist = hash_table_tolist(vocab, NULL);
+ for (gn = hlist; gn; gn = gnode_next(gn)) {
+ hash_entry_t *ent = gnode_ptr(gn);
+ base->word_str[i++] = (char *)ent->key;
+ }
+ glist_free(hlist);
+ qsort(base->word_str, base->n_words, sizeof(*base->word_str), my_compare);
+
+ /* Now create the word ID mappings. */
+ if (set->widmap)
+ ckd_free_2d((void **)set->widmap);
+ set->widmap = (int32 **) ckd_calloc_2d(base->n_words, set->n_models,
+ sizeof(**set->widmap));
+ for (i = 0; i < base->n_words; ++i) {
+ int32 j;
+ /* Also create the master wid mapping. */
+ (void)hash_table_enter_int32(base->wid, base->word_str[i], i);
+ /* printf("%s: %d => ", base->word_str[i], i); */
+ for (j = 0; j < set->n_models; ++j) {
+ set->widmap[i][j] = ngram_wid(models[j], base->word_str[i]);
+ /* printf("%d ", set->widmap[i][j]); */
+ }
+ /* printf("\n"); */
+ }
+ hash_table_free(vocab);
+}
+
+ngram_model_t *
+ngram_model_set_init(cmd_ln_t *config,
+ ngram_model_t **models,
+ char **names,
+ const float32 *weights,
+ int32 n_models)
+{
+ ngram_model_set_t *model;
+ ngram_model_t *base;
+ logmath_t *lmath;
+ int32 i, n;
+
+ if (n_models == 0) /* WTF */
+ return NULL;
+
+ /* Do consistency checking on the models. They must all use the
+ * same logbase and shift. */
+ lmath = models[0]->lmath;
+ for (i = 1; i < n_models; ++i) {
+ if (logmath_get_base(models[i]->lmath) != logmath_get_base(lmath)
+ || logmath_get_shift(models[i]->lmath) != logmath_get_shift(lmath)) {
+ E_ERROR("Log-math parameters don't match, will not create LM set\n");
+ return NULL;
+ }
+ }
+
+ /* Allocate the combined model, initialize it. */
+ model = ckd_calloc(1, sizeof(*model));
+ base = &model->base;
+ model->n_models = n_models;
+ model->lms = ckd_calloc(n_models, sizeof(*model->lms));
+ model->names = ckd_calloc(n_models, sizeof(*model->names));
+ /* Initialize weights to a uniform distribution */
+ model->lweights = ckd_calloc(n_models, sizeof(*model->lweights));
+ {
+ int32 uniform = logmath_log(lmath, 1.0/n_models);
+ for (i = 0; i < n_models; ++i)
+ model->lweights[i] = uniform;
+ }
+ /* Default to interpolate if weights were given. */
+ if (weights)
+ model->cur = -1;
+
+ n = 0;
+ for (i = 0; i < n_models; ++i) {
+ model->lms[i] = models[i];
+ model->names[i] = ckd_salloc(names[i]);
+ if (weights)
+ model->lweights[i] = logmath_log(lmath, weights[i]);
+ /* N is the maximum of all merged models. */
+ if (models[i]->n > n)
+ n = models[i]->n;
+ }
+ /* Allocate the history mapping table. */
+ model->maphist = ckd_calloc(n - 1, sizeof(*model->maphist));
+
+ /* Now build the word-ID mapping and merged vocabulary. */
+ build_widmap(base, lmath, n);
+ return base;
+}
+
+ngram_model_t *
+ngram_model_set_read(cmd_ln_t *config,
+ const char *lmctlfile,
+ logmath_t *lmath)
+{
+ FILE *ctlfp;
+ glist_t lms = NULL;
+ glist_t lmnames = NULL;
+ __BIGSTACKVARIABLE__ char str[1024];
+ ngram_model_t *set = NULL;
+ hash_table_t *classes;
+ char *basedir, *c;
+
+ /* Read all the class definition files to accumulate a mapping of
+ * classnames to definitions. */
+ classes = hash_table_new(0, FALSE);
+ if ((ctlfp = fopen(lmctlfile, "r")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s", lmctlfile);
+ return NULL;
+ }
+
+ /* Try to find the base directory to append to relative paths in
+ * the lmctl file. */
+ if ((c = strrchr(lmctlfile, '/')) || (c = strrchr(lmctlfile, '\\'))) {
+ /* Include the trailing slash. */
+ basedir = ckd_calloc(c - lmctlfile + 2, 1);
+ memcpy(basedir, lmctlfile, c - lmctlfile + 1);
+ }
+ else {
+ basedir = NULL;
+ }
+ E_INFO("Reading LM control file '%s'\n", lmctlfile);
+ if (basedir)
+ E_INFO("Will prepend '%s' to unqualified paths\n", basedir);
+
+ if (fscanf(ctlfp, "%1023s", str) == 1) {
+ if (strcmp(str, "{") == 0) {
+ /* Load LMclass files */
+ while ((fscanf(ctlfp, "%1023s", str) == 1)
+ && (strcmp(str, "}") != 0)) {
+ char *deffile;
+ if (basedir && !path_is_absolute(str))
+ deffile = string_join(basedir, str, NULL);
+ else
+ deffile = ckd_salloc(str);
+ E_INFO("Reading classdef from '%s'\n", deffile);
+ if (read_classdef_file(classes, deffile) < 0) {
+ ckd_free(deffile);
+ goto error_out;
+ }
+ ckd_free(deffile);
+ }
+
+ if (strcmp(str, "}") != 0) {
+ E_ERROR("Unexpected EOF in %s\n", lmctlfile);
+ goto error_out;
+ }
+
+ /* This might be the first LM name. */
+ if (fscanf(ctlfp, "%1023s", str) != 1)
+ str[0] = '\0';
+ }
+ }
+ else
+ str[0] = '\0';
+
+ /* Read in one LM at a time and add classes to them as necessary. */
+ while (str[0] != '\0') {
+ char *lmfile;
+ ngram_model_t *lm;
+
+ if (basedir && str[0] != '/' && str[0] != '\\')
+ lmfile = string_join(basedir, str, NULL);
+ else
+ lmfile = ckd_salloc(str);
+ E_INFO("Reading lm from '%s'\n", lmfile);
+ lm = ngram_model_read(config, lmfile, NGRAM_AUTO, lmath);
+ if (lm == NULL) {
+ ckd_free(lmfile);
+ goto error_out;
+ }
+ if (fscanf(ctlfp, "%1023s", str) != 1) {
+ E_ERROR("LMname missing after LMFileName '%s'\n", lmfile);
+ ckd_free(lmfile);
+ goto error_out;
+ }
+ ckd_free(lmfile);
+ lms = glist_add_ptr(lms, lm);
+ lmnames = glist_add_ptr(lmnames, ckd_salloc(str));
+
+ if (fscanf(ctlfp, "%1023s", str) == 1) {
+ if (strcmp(str, "{") == 0) {
+ /* LM uses classes; read their names */
+ while ((fscanf(ctlfp, "%1023s", str) == 1) &&
+ (strcmp(str, "}") != 0)) {
+ void *val;
+ classdef_t *classdef;
+
+ if (hash_table_lookup(classes, str, &val) == -1) {
+ E_ERROR("Unknown class %s in control file\n", str);
+ goto error_out;
+ }
+ classdef = val;
+ if (ngram_model_add_class(lm, str, 1.0,
+ classdef->words, classdef->weights,
+ classdef->n_words) < 0) {
+ goto error_out;
+ }
+ E_INFO("Added class %s containing %d words\n",
+ str, classdef->n_words);
+ }
+ if (strcmp(str, "}") != 0) {
+ E_ERROR("Unexpected EOF in %s\n", lmctlfile);
+ goto error_out;
+ }
+ if (fscanf(ctlfp, "%1023s", str) != 1)
+ str[0] = '\0';
+ }
+ }
+ else
+ str[0] = '\0';
+ }
+ fclose(ctlfp);
+
+ /* Now construct arrays out of lms and lmnames, and build an
+ * ngram_model_set. */
+ lms = glist_reverse(lms);
+ lmnames = glist_reverse(lmnames);
+ {
+ int32 n_models;
+ ngram_model_t **lm_array;
+ char **name_array;
+ gnode_t *lm_node, *name_node;
+ int32 i;
+
+ n_models = glist_count(lms);
+ lm_array = ckd_calloc(n_models, sizeof(*lm_array));
+ name_array = ckd_calloc(n_models, sizeof(*name_array));
+ lm_node = lms;
+ name_node = lmnames;
+ for (i = 0; i < n_models; ++i) {
+ lm_array[i] = gnode_ptr(lm_node);
+ name_array[i] = gnode_ptr(name_node);
+ lm_node = gnode_next(lm_node);
+ name_node = gnode_next(name_node);
+ }
+ set = ngram_model_set_init(config, lm_array, name_array,
+ NULL, n_models);
+ ckd_free(lm_array);
+ ckd_free(name_array);
+ }
+error_out:
+ {
+ gnode_t *gn;
+ glist_t hlist;
+
+ if (set == NULL) {
+ for (gn = lms; gn; gn = gnode_next(gn)) {
+ ngram_model_free(gnode_ptr(gn));
+ }
+ }
+ glist_free(lms);
+ for (gn = lmnames; gn; gn = gnode_next(gn)) {
+ ckd_free(gnode_ptr(gn));
+ }
+ glist_free(lmnames);
+ hlist = hash_table_tolist(classes, NULL);
+ for (gn = hlist; gn; gn = gnode_next(gn)) {
+ hash_entry_t *he = gnode_ptr(gn);
+ ckd_free((char *)he->key);
+ classdef_free(he->val);
+ }
+ glist_free(hlist);
+ hash_table_free(classes);
+ ckd_free(basedir);
+ }
+ return set;
+}
+
+int32
+ngram_model_set_count(ngram_model_t *base)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ return set->n_models;
+}
+
+ngram_model_set_iter_t *
+ngram_model_set_iter(ngram_model_t *base)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ ngram_model_set_iter_t *itor;
+
+ if (set == NULL || set->n_models == 0)
+ return NULL;
+ itor = ckd_calloc(1, sizeof(*itor));
+ itor->set = set;
+ return itor;
+}
+
+ngram_model_set_iter_t *
+ngram_model_set_iter_next(ngram_model_set_iter_t *itor)
+{
+ if (++itor->cur == itor->set->n_models) {
+ ngram_model_set_iter_free(itor);
+ return NULL;
+ }
+ return itor;
+}
+
+void
+ngram_model_set_iter_free(ngram_model_set_iter_t *itor)
+{
+ ckd_free(itor);
+}
+
+ngram_model_t *
+ngram_model_set_iter_model(ngram_model_set_iter_t *itor,
+ char const **lmname)
+{
+ if (lmname) *lmname = itor->set->names[itor->cur];
+ return itor->set->lms[itor->cur];
+}
+
+ngram_model_t *
+ngram_model_set_lookup(ngram_model_t *base,
+ const char *name)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 i;
+
+ if (name == NULL) {
+ if (set->cur == -1)
+ return NULL;
+ else
+ return set->lms[set->cur];
+ }
+
+ /* There probably won't be very many submodels. */
+ for (i = 0; i < set->n_models; ++i)
+ if (0 == strcmp(set->names[i], name))
+ break;
+ if (i == set->n_models)
+ return NULL;
+ return set->lms[i];
+}
+
+ngram_model_t *
+ngram_model_set_select(ngram_model_t *base,
+ const char *name)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 i;
+
+ /* There probably won't be very many submodels. */
+ for (i = 0; i < set->n_models; ++i)
+ if (0 == strcmp(set->names[i], name))
+ break;
+ if (i == set->n_models)
+ return NULL;
+ set->cur = i;
+ return set->lms[set->cur];
+}
+
+const char *
+ngram_model_set_current(ngram_model_t *base)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+
+ if (set->cur == -1)
+ return NULL;
+ else
+ return set->names[set->cur];
+}
+
+int32
+ngram_model_set_current_wid(ngram_model_t *base,
+ int32 set_wid)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+
+ if (set->cur == -1 || set_wid >= base->n_words)
+ return NGRAM_INVALID_WID;
+ else
+ return set->widmap[set_wid][set->cur];
+}
+
+int32
+ngram_model_set_known_wid(ngram_model_t *base,
+ int32 set_wid)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+
+ if (set_wid >= base->n_words)
+ return FALSE;
+ else if (set->cur == -1) {
+ int32 i;
+ for (i = 0; i < set->n_models; ++i) {
+ if (set->widmap[set_wid][i] != ngram_unknown_wid(set->lms[i]))
+ return TRUE;
+ }
+ return FALSE;
+ }
+ else
+ return (set->widmap[set_wid][set->cur]
+ != ngram_unknown_wid(set->lms[set->cur]));
+}
+
+ngram_model_t *
+ngram_model_set_interp(ngram_model_t *base,
+ const char **names,
+ const float32 *weights)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+
+ /* If we have a set of weights here, then set them. */
+ if (names && weights) {
+ int32 i, j;
+
+ /* We hope there aren't many models. */
+ for (i = 0; i < set->n_models; ++i) {
+ for (j = 0; j < set->n_models; ++j)
+ if (0 == strcmp(names[i], set->names[j]))
+ break;
+ if (j == set->n_models) {
+ E_ERROR("Unknown LM name %s\n", names[i]);
+ return NULL;
+ }
+ set->lweights[j] = logmath_log(base->lmath, weights[i]);
+ }
+ }
+ else if (weights) {
+ memcpy(set->lweights, weights, set->n_models * sizeof(*set->lweights));
+ }
+ /* Otherwise just enable existing weights. */
+ set->cur = -1;
+ return base;
+}
+
+ngram_model_t *
+ngram_model_set_add(ngram_model_t *base,
+ ngram_model_t *model,
+ const char *name,
+ float32 weight,
+ int reuse_widmap)
+
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ float32 fprob;
+ int32 scale, i;
+
+ /* Add it to the array of lms. */
+ ++set->n_models;
+ set->lms = ckd_realloc(set->lms, set->n_models * sizeof(*set->lms));
+ set->lms[set->n_models - 1] = model;
+ set->names = ckd_realloc(set->names, set->n_models * sizeof(*set->names));
+ set->names[set->n_models - 1] = ckd_salloc(name);
+ /* Expand the history mapping table if necessary. */
+ if (model->n > base->n) {
+ base->n = model->n;
+ set->maphist = ckd_realloc(set->maphist,
+ (model->n - 1) * sizeof(*set->maphist));
+ }
+
+ /* Renormalize the interpolation weights. */
+ fprob = weight * 1.0 / set->n_models;
+ set->lweights = ckd_realloc(set->lweights,
+ set->n_models * sizeof(*set->lweights));
+ set->lweights[set->n_models - 1] = logmath_log(base->lmath, fprob);
+ /* Now normalize everything else to fit it in. This is
+ * accomplished by simply scaling all the other probabilities
+ * by (1-fprob). */
+ scale = logmath_log(base->lmath, 1.0 - fprob);
+ for (i = 0; i < set->n_models - 1; ++i)
+ set->lweights[i] += scale;
+
+ /* Reuse the old word ID mapping if requested. */
+ if (reuse_widmap) {
+ int32 **new_widmap;
+
+ /* Tack another column onto the widmap array. */
+ new_widmap = (int32 **)ckd_calloc_2d(base->n_words, set->n_models,
+ sizeof (**new_widmap));
+ for (i = 0; i < base->n_words; ++i) {
+ /* Copy all the existing mappings. */
+ memcpy(new_widmap[i], set->widmap[i],
+ (set->n_models - 1) * sizeof(**new_widmap));
+ /* Create the new mapping. */
+ new_widmap[i][set->n_models-1] = ngram_wid(model, base->word_str[i]);
+ }
+ ckd_free_2d((void **)set->widmap);
+ set->widmap = new_widmap;
+ }
+ else {
+ build_widmap(base, base->lmath, base->n);
+ }
+ return model;
+}
+
+ngram_model_t *
+ngram_model_set_remove(ngram_model_t *base,
+ const char *name,
+ int reuse_widmap)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ ngram_model_t *submodel;
+ int32 lmidx, scale, n, i;
+ float32 fprob;
+
+ for (lmidx = 0; lmidx < set->n_models; ++lmidx)
+ if (0 == strcmp(name, set->names[lmidx]))
+ break;
+ if (lmidx == set->n_models)
+ return NULL;
+ submodel = set->lms[lmidx];
+
+ /* Renormalize the interpolation weights by scaling them by
+ * 1/(1-fprob) */
+ fprob = logmath_exp(base->lmath, set->lweights[lmidx]);
+ scale = logmath_log(base->lmath, 1.0 - fprob);
+
+ /* Remove it from the array of lms, renormalize remaining weights,
+ * and recalcluate n. */
+ --set->n_models;
+ n = 0;
+ ckd_free(set->names[lmidx]);
+ set->names[lmidx] = NULL;
+ for (i = 0; i < set->n_models; ++i) {
+ if (i >= lmidx) {
+ set->lms[i] = set->lms[i+1];
+ set->names[i] = set->names[i+1];
+ set->lweights[i] = set->lweights[i+1];
+ }
+ set->lweights[i] -= scale;
+ if (set->lms[i]->n > n)
+ n = set->lms[i]->n;
+ }
+ /* There's no need to shrink these arrays. */
+ set->lms[set->n_models] = NULL;
+ set->lweights[set->n_models] = base->log_zero;
+ /* No need to shrink maphist either. */
+
+ /* Reuse the existing word ID mapping if requested. */
+ if (reuse_widmap) {
+ /* Just go through and shrink each row. */
+ for (i = 0; i < base->n_words; ++i) {
+ memmove(set->widmap[i] + lmidx, set->widmap[i] + lmidx + 1,
+ (set->n_models - lmidx) * sizeof(**set->widmap));
+ }
+ }
+ else {
+ build_widmap(base, base->lmath, n);
+ }
+ return submodel;
+}
+
+void
+ngram_model_set_map_words(ngram_model_t *base,
+ const char **words,
+ int32 n_words)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 i;
+
+ /* Recreate the word mapping. */
+ if (base->writable) {
+ for (i = 0; i < base->n_words; ++i) {
+ ckd_free(base->word_str[i]);
+ }
+ }
+ ckd_free(base->word_str);
+ ckd_free_2d((void **)set->widmap);
+ base->writable = TRUE;
+ base->n_words = base->n_1g_alloc = n_words;
+ base->word_str = ckd_calloc(n_words, sizeof(*base->word_str));
+ set->widmap = (int32 **)ckd_calloc_2d(n_words, set->n_models, sizeof(**set->widmap));
+ hash_table_empty(base->wid);
+ for (i = 0; i < n_words; ++i) {
+ int32 j;
+ base->word_str[i] = ckd_salloc(words[i]);
+ (void)hash_table_enter_int32(base->wid, base->word_str[i], i);
+ for (j = 0; j < set->n_models; ++j) {
+ set->widmap[i][j] = ngram_wid(set->lms[j], base->word_str[i]);
+ }
+ }
+}
+
+static int
+ngram_model_set_apply_weights(ngram_model_t *base, float32 lw,
+ float32 wip, float32 uw)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 i;
+
+ /* Apply weights to each sub-model. */
+ for (i = 0; i < set->n_models; ++i)
+ ngram_model_apply_weights(set->lms[i], lw, wip, uw);
+ return 0;
+}
+
+static int32
+ngram_model_set_score(ngram_model_t *base, int32 wid,
+ int32 *history, int32 n_hist,
+ int32 *n_used)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 mapwid;
+ int32 score;
+ int32 i;
+
+ /* Truncate the history. */
+ if (n_hist > base->n - 1)
+ n_hist = base->n - 1;
+
+ /* Interpolate if there is no current. */
+ if (set->cur == -1) {
+ score = base->log_zero;
+ for (i = 0; i < set->n_models; ++i) {
+ int32 j;
+ /* Map word and history IDs for each model. */
+ mapwid = set->widmap[wid][i];
+ for (j = 0; j < n_hist; ++j) {
+ if (history[j] == NGRAM_INVALID_WID)
+ set->maphist[j] = NGRAM_INVALID_WID;
+ else
+ set->maphist[j] = set->widmap[history[j]][i];
+ }
+ score = logmath_add(base->lmath, score,
+ set->lweights[i] +
+ ngram_ng_score(set->lms[i],
+ mapwid, set->maphist, n_hist, n_used));
+ }
+ }
+ else {
+ int32 j;
+ /* Map word and history IDs (FIXME: do this in a function?) */
+ mapwid = set->widmap[wid][set->cur];
+ for (j = 0; j < n_hist; ++j) {
+ if (history[j] == NGRAM_INVALID_WID)
+ set->maphist[j] = NGRAM_INVALID_WID;
+ else
+ set->maphist[j] = set->widmap[history[j]][set->cur];
+ }
+ score = ngram_ng_score(set->lms[set->cur],
+ mapwid, set->maphist, n_hist, n_used);
+ }
+
+ return score;
+}
+
+static int32
+ngram_model_set_raw_score(ngram_model_t *base, int32 wid,
+ int32 *history, int32 n_hist,
+ int32 *n_used)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 mapwid;
+ int32 score;
+ int32 i;
+
+ /* Truncate the history. */
+ if (n_hist > base->n - 1)
+ n_hist = base->n - 1;
+
+ /* Interpolate if there is no current. */
+ if (set->cur == -1) {
+ score = base->log_zero;
+ for (i = 0; i < set->n_models; ++i) {
+ int32 j;
+ /* Map word and history IDs for each model. */
+ mapwid = set->widmap[wid][i];
+ for (j = 0; j < n_hist; ++j) {
+ if (history[j] == NGRAM_INVALID_WID)
+ set->maphist[j] = NGRAM_INVALID_WID;
+ else
+ set->maphist[j] = set->widmap[history[j]][i];
+ }
+ score = logmath_add(base->lmath, score,
+ set->lweights[i] +
+ ngram_ng_prob(set->lms[i],
+ mapwid, set->maphist, n_hist, n_used));
+ }
+ }
+ else {
+ int32 j;
+ /* Map word and history IDs (FIXME: do this in a function?) */
+ mapwid = set->widmap[wid][set->cur];
+ for (j = 0; j < n_hist; ++j) {
+ if (history[j] == NGRAM_INVALID_WID)
+ set->maphist[j] = NGRAM_INVALID_WID;
+ else
+ set->maphist[j] = set->widmap[history[j]][set->cur];
+ }
+ score = ngram_ng_prob(set->lms[set->cur],
+ mapwid, set->maphist, n_hist, n_used);
+ }
+
+ return score;
+}
+
+static int32
+ngram_model_set_add_ug(ngram_model_t *base,
+ int32 wid, int32 lweight)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 *newwid;
+ int32 i, prob;
+
+ /* At this point the word has already been added to the master
+ model and we have a new word ID for it. Add it to active
+ submodels and track the word IDs. */
+ newwid = ckd_calloc(set->n_models, sizeof(*newwid));
+ prob = base->log_zero;
+ for (i = 0; i < set->n_models; ++i) {
+ int32 wprob, n_hist;
+
+ /* Only add to active models. */
+ if (set->cur == -1 || set->cur == i) {
+ /* Did this word already exist? */
+ newwid[i] = ngram_wid(set->lms[i], base->word_str[wid]);
+ if (newwid[i] == NGRAM_INVALID_WID) {
+ /* Add it to the submodel. */
+ newwid[i] = ngram_model_add_word(set->lms[i], base->word_str[wid],
+ logmath_exp(base->lmath, lweight));
+ if (newwid[i] == NGRAM_INVALID_WID) {
+ ckd_free(newwid);
+ return base->log_zero;
+ }
+ }
+ /* Now get the unigram probability for the new word and either
+ * interpolate it or use it (if this is the current model). */
+ wprob = ngram_ng_prob(set->lms[i], newwid[i], NULL, 0, &n_hist);
+ if (set->cur == i)
+ prob = wprob;
+ else if (set->cur == -1)
+ prob = logmath_add(base->lmath, prob, set->lweights[i] + wprob);
+ }
+ else {
+ newwid[i] = NGRAM_INVALID_WID;
+ }
+ }
+ /* Okay we have the word IDs for this in all the submodels. Now
+ do some complicated memory mangling to add this to the
+ widmap. */
+ set->widmap = ckd_realloc(set->widmap, base->n_words * sizeof(*set->widmap));
+ set->widmap[0] = ckd_realloc(set->widmap[0],
+ base->n_words
+ * set->n_models
+ * sizeof(**set->widmap));
+ for (i = 0; i < base->n_words; ++i)
+ set->widmap[i] = set->widmap[0] + i * set->n_models;
+ memcpy(set->widmap[wid], newwid, set->n_models * sizeof(*newwid));
+ ckd_free(newwid);
+ return prob;
+}
+
+static void
+ngram_model_set_free(ngram_model_t *base)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 i;
+
+ for (i = 0; i < set->n_models; ++i)
+ ngram_model_free(set->lms[i]);
+ ckd_free(set->lms);
+ for (i = 0; i < set->n_models; ++i)
+ ckd_free(set->names[i]);
+ ckd_free(set->names);
+ ckd_free(set->lweights);
+ ckd_free(set->maphist);
+ ckd_free_2d((void **)set->widmap);
+}
+
+static void
+ngram_model_set_flush(ngram_model_t *base)
+{
+ ngram_model_set_t *set = (ngram_model_set_t *)base;
+ int32 i;
+
+ for (i = 0; i < set->n_models; ++i)
+ ngram_model_flush(set->lms[i]);
+}
+
+static ngram_funcs_t ngram_model_set_funcs = {
+ ngram_model_set_free, /* free */
+ ngram_model_set_apply_weights, /* apply_weights */
+ ngram_model_set_score, /* score */
+ ngram_model_set_raw_score, /* raw_score */
+ ngram_model_set_add_ug, /* add_ug */
+ ngram_model_set_flush /* flush */
+};
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file ngram_model_set.h Set of language models.
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#ifndef __NGRAM_MODEL_SET_H__
+#define __NGRAM_MODEL_SET_H__
+
+#include "ngram_model_internal.h"
+#include "lm3g_model.h"
+
+/**
+ * Subclass of ngram_model for grouping language models.
+ */
+typedef struct ngram_model_set_s {
+ ngram_model_t base; /**< Base ngram_model_t structure. */
+
+ int32 n_models; /**< Number of models in this set. */
+ int32 cur; /**< Currently selected model, or -1 for none. */
+ ngram_model_t **lms; /**< Language models in this set. */
+ char **names; /**< Names for language models. */
+ int32 *lweights; /**< Log interpolation weights. */
+ int32 **widmap; /**< Word ID mapping for submodels. */
+ int32 *maphist; /**< Word ID mapping for N-Gram history. */
+} ngram_model_set_t;
+
+/**
+ * Iterator over a model set.
+ */
+struct ngram_model_set_iter_s {
+ ngram_model_set_t *set;
+ int32 cur;
+};
+
+#endif /* __NGRAM_MODEL_SET_H__ */
--- /dev/null
+noinst_LTLIBRARIES = libsphinxutil.la
+
+if LAPACK_LITE
+LAPACK_LITE_SRCS = \
+ slamch.c \
+ slapack_lite.c \
+ blas_lite.c \
+ f2c_lite.c
+endif
+
+libsphinxutil_la_SOURCES = \
+ bitvec.c \
+ bio.c \
+ case.c \
+ ckd_alloc.c \
+ dtoa.c \
+ listelem_alloc.c \
+ cmd_ln.c \
+ err.c \
+ filename.c \
+ genrand.c \
+ glist.c \
+ hash_table.c \
+ heap.c \
+ huff_code.c \
+ info.c \
+ logmath.c \
+ mmio.c \
+ pio.c \
+ matrix.c \
+ profile.c \
+ sbthread.c \
+ strfuncs.c \
+ unlimit.c \
+ utf8.c \
+ $(LAPACK_LITE_SRCS)
+
+EXTRA_DIST = \
+ slamch.c \
+ slapack_lite.c \
+ blas_lite.c \
+ f2c_lite.c \
+ err_wince.c \
+ string_wce.c \
+ errno.c
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LIBOBJS = @LIBOBJS@
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libsphinxbase/util
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libsphinxutil_la_LIBADD =
+am__libsphinxutil_la_SOURCES_DIST = bitvec.c bio.c case.c ckd_alloc.c \
+ dtoa.c listelem_alloc.c cmd_ln.c err.c filename.c genrand.c \
+ glist.c hash_table.c heap.c huff_code.c info.c logmath.c \
+ mmio.c pio.c matrix.c profile.c sbthread.c strfuncs.c \
+ unlimit.c utf8.c slamch.c slapack_lite.c blas_lite.c \
+ f2c_lite.c
+@LAPACK_LITE_TRUE@am__objects_1 = slamch.lo slapack_lite.lo \
+@LAPACK_LITE_TRUE@ blas_lite.lo f2c_lite.lo
+am_libsphinxutil_la_OBJECTS = bitvec.lo bio.lo case.lo ckd_alloc.lo \
+ dtoa.lo listelem_alloc.lo cmd_ln.lo err.lo filename.lo \
+ genrand.lo glist.lo hash_table.lo heap.lo huff_code.lo info.lo \
+ logmath.lo mmio.lo pio.lo matrix.lo profile.lo sbthread.lo \
+ strfuncs.lo unlimit.lo utf8.lo $(am__objects_1)
+libsphinxutil_la_OBJECTS = $(am_libsphinxutil_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libsphinxutil_la_SOURCES)
+DIST_SOURCES = $(am__libsphinxutil_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LTLIBRARIES = libsphinxutil.la
+@LAPACK_LITE_TRUE@LAPACK_LITE_SRCS = \
+@LAPACK_LITE_TRUE@ slamch.c \
+@LAPACK_LITE_TRUE@ slapack_lite.c \
+@LAPACK_LITE_TRUE@ blas_lite.c \
+@LAPACK_LITE_TRUE@ f2c_lite.c
+
+libsphinxutil_la_SOURCES = \
+ bitvec.c \
+ bio.c \
+ case.c \
+ ckd_alloc.c \
+ dtoa.c \
+ listelem_alloc.c \
+ cmd_ln.c \
+ err.c \
+ filename.c \
+ genrand.c \
+ glist.c \
+ hash_table.c \
+ heap.c \
+ huff_code.c \
+ info.c \
+ logmath.c \
+ mmio.c \
+ pio.c \
+ matrix.c \
+ profile.c \
+ sbthread.c \
+ strfuncs.c \
+ unlimit.c \
+ utf8.c \
+ $(LAPACK_LITE_SRCS)
+
+EXTRA_DIST = \
+ slamch.c \
+ slapack_lite.c \
+ blas_lite.c \
+ f2c_lite.c \
+ err_wince.c \
+ string_wce.c \
+ errno.c
+
+INCLUDES = -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libsphinxbase/util/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/libsphinxbase/util/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsphinxutil.la: $(libsphinxutil_la_OBJECTS) $(libsphinxutil_la_DEPENDENCIES)
+ $(LINK) $(libsphinxutil_la_OBJECTS) $(libsphinxutil_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitvec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blas_lite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/case.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ckd_alloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_ln.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtoa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/err.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/f2c_lite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filename.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genrand.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glist.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash_table.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/heap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huff_code.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listelem_alloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logmath.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbthread.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slamch.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slapack_lite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strfuncs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * bio.c -- Sphinx-3 binary file I/O functions.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1996 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.4 2005/06/21 20:40:46 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Add the $ keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:46 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 02-Jul-1997 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Bugfix: Added byteswapping in bio_verify_chksum().
+ *
+ * 18-Dec-1996 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+#include "sphinxbase/bio.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+
+
+#define BIO_HDRARG_MAX 32
+#define END_COMMENT "*end_comment*\n"
+
+
+static void
+bcomment_read(FILE * fp)
+{
+ __BIGSTACKVARIABLE__ char iline[16384];
+
+ while (fgets(iline, sizeof(iline), fp) != NULL) {
+ if (strcmp(iline, END_COMMENT) == 0)
+ return;
+ }
+ E_FATAL("Missing %s marker\n", END_COMMENT);
+}
+
+
+static int32
+swap_check(FILE * fp)
+{
+ uint32 magic;
+
+ if (fread(&magic, sizeof(uint32), 1, fp) != 1) {
+ E_ERROR("Cannot read BYTEORDER MAGIC NO.\n");
+ return -1;
+ }
+
+ if (magic != BYTE_ORDER_MAGIC) {
+ /* either need to swap or got bogus magic number */
+ SWAP_INT32(&magic);
+
+ if (magic == BYTE_ORDER_MAGIC)
+ return 1;
+
+ SWAP_INT32(&magic);
+ E_ERROR("Bad BYTEORDER MAGIC NO: %08x, expecting %08x\n",
+ magic, BYTE_ORDER_MAGIC);
+ return -1;
+ }
+
+ return 0;
+}
+
+
+void
+bio_hdrarg_free(char **argname, char **argval)
+{
+ int32 i;
+
+ if (argname == NULL)
+ return;
+ for (i = 0; argname[i]; i++) {
+ ckd_free(argname[i]);
+ ckd_free(argval[i]);
+ }
+ ckd_free(argname);
+ ckd_free(argval);
+}
+
+
+int32
+bio_writehdr_version(FILE * fp, char *version)
+{
+ uint32 b;
+
+ fprintf(fp, "s3\n");
+ fprintf(fp, "version %s\n", version);
+ fprintf(fp, "endhdr\n");
+ fflush(fp);
+
+ b = (uint32) BYTE_ORDER_MAGIC;
+ fwrite(&b, sizeof(uint32), 1, fp);
+ fflush(fp);
+
+ return 0;
+}
+
+
+int32
+bio_writehdr(FILE *fp, ...)
+{
+ char const *key;
+ va_list args;
+ uint32 b;
+
+ fprintf(fp, "s3\n");
+ va_start(args, fp);
+ while ((key = va_arg(args, char const *)) != NULL) {
+ char const *val = va_arg(args, char const *);
+ if (val == NULL) {
+ E_ERROR("Wrong number of arguments\n");
+ va_end(args);
+ return -1;
+ }
+ fprintf(fp, "%s %s\n", key, val);
+ }
+ va_end(args);
+
+ fprintf(fp, "endhdr\n");
+ fflush(fp);
+
+ b = (uint32) BYTE_ORDER_MAGIC;
+ if (fwrite(&b, sizeof(uint32), 1, fp) != 1)
+ return -1;
+ fflush(fp);
+
+ return 0;
+}
+
+
+int32
+bio_readhdr(FILE * fp, char ***argname, char ***argval, int32 * swap)
+{
+ __BIGSTACKVARIABLE__ char line[16384], word[4096];
+ int32 i, l;
+ int32 lineno;
+
+ *argname = (char **) ckd_calloc(BIO_HDRARG_MAX + 1, sizeof(char *));
+ *argval = (char **) ckd_calloc(BIO_HDRARG_MAX, sizeof(char *));
+
+ lineno = 0;
+ if (fgets(line, sizeof(line), fp) == NULL){
+ E_ERROR("Premature EOF, line %d\n", lineno);
+ goto error_out;
+ }
+ lineno++;
+
+ if ((line[0] == 's') && (line[1] == '3') && (line[2] == '\n')) {
+ /* New format (post Dec-1996, including checksums); read argument-value pairs */
+ for (i = 0;;) {
+ if (fgets(line, sizeof(line), fp) == NULL) {
+ E_ERROR("Premature EOF, line %d\n", lineno);
+ goto error_out;
+ }
+ lineno++;
+
+ if (sscanf(line, "%s%n", word, &l) != 1) {
+ E_ERROR("Header format error, line %d\n", lineno);
+ goto error_out;
+ }
+ if (strcmp(word, "endhdr") == 0)
+ break;
+ if (word[0] == '#') /* Skip comments */
+ continue;
+
+ if (i >= BIO_HDRARG_MAX) {
+ E_ERROR
+ ("Max arg-value limit(%d) exceeded; increase BIO_HDRARG_MAX\n",
+ BIO_HDRARG_MAX);
+ goto error_out;
+ }
+
+ (*argname)[i] = ckd_salloc(word);
+ if (sscanf(line + l, "%s", word) != 1) { /* Multi-word values not allowed */
+ E_ERROR("Header format error, line %d\n", lineno);
+ goto error_out;
+ }
+ (*argval)[i] = ckd_salloc(word);
+ i++;
+ }
+ }
+ else {
+ /* Old format (without checksums); the first entry must be the version# */
+ if (sscanf(line, "%s", word) != 1) {
+ E_ERROR("Header format error, line %d\n", lineno);
+ goto error_out;
+ }
+
+ (*argname)[0] = ckd_salloc("version");
+ (*argval)[0] = ckd_salloc(word);
+ i = 1;
+
+ bcomment_read(fp);
+ }
+ (*argname)[i] = NULL;
+
+ if ((*swap = swap_check(fp)) < 0) {
+ E_ERROR("swap_check failed\n");
+ goto error_out;
+ }
+
+ return 0;
+error_out:
+ bio_hdrarg_free(*argname, *argval);
+ *argname = *argval = NULL;
+ return -1;
+}
+
+
+static uint32
+chksum_accum(void *buf, int32 el_sz, int32 n_el, uint32 sum)
+{
+ int32 i;
+ uint8 *i8;
+ uint16 *i16;
+ uint32 *i32;
+
+ switch (el_sz) {
+ case 1:
+ i8 = (uint8 *) buf;
+ for (i = 0; i < n_el; i++)
+ sum = (sum << 5 | sum >> 27) + i8[i];
+ break;
+ case 2:
+ i16 = (uint16 *) buf;
+ for (i = 0; i < n_el; i++)
+ sum = (sum << 10 | sum >> 22) + i16[i];
+ break;
+ case 4:
+ i32 = (uint32 *) buf;
+ for (i = 0; i < n_el; i++)
+ sum = (sum << 20 | sum >> 12) + i32[i];
+ break;
+ default:
+ E_FATAL("Unsupported elemsize for checksum: %d\n", el_sz);
+ break;
+ }
+
+ return sum;
+}
+
+
+static void
+swap_buf(void *buf, int32 el_sz, int32 n_el)
+{
+ int32 i;
+ uint16 *buf16;
+ uint32 *buf32;
+
+ switch (el_sz) {
+ case 1:
+ break;
+ case 2:
+ buf16 = (uint16 *) buf;
+ for (i = 0; i < n_el; i++)
+ SWAP_INT16(buf16 + i);
+ break;
+ case 4:
+ buf32 = (uint32 *) buf;
+ for (i = 0; i < n_el; i++)
+ SWAP_INT32(buf32 + i);
+ break;
+ default:
+ E_FATAL("Unsupported elemsize for byteswapping: %d\n", el_sz);
+ break;
+ }
+}
+
+
+int32
+bio_fread(void *buf, int32 el_sz, int32 n_el, FILE * fp, int32 swap,
+ uint32 * chksum)
+{
+ if (fread(buf, el_sz, n_el, fp) != (size_t) n_el)
+ return -1;
+
+ if (swap)
+ swap_buf(buf, el_sz, n_el);
+
+ if (chksum)
+ *chksum = chksum_accum(buf, el_sz, n_el, *chksum);
+
+ return n_el;
+}
+
+int32
+bio_fwrite(void *buf, int32 el_sz, int32 n_el, FILE *fp,
+ int32 swap, uint32 *chksum)
+{
+ if (chksum)
+ *chksum = chksum_accum(buf, el_sz, n_el, *chksum);
+ if (swap) {
+ void *nbuf;
+ int rv;
+
+ nbuf = ckd_calloc(n_el, el_sz);
+ memcpy(nbuf, buf, n_el * el_sz);
+ swap_buf(nbuf, el_sz, n_el);
+ rv = fwrite(nbuf, el_sz, n_el, fp);
+ ckd_free(nbuf);
+ return rv;
+ }
+ else {
+ return fwrite(buf, el_sz, n_el, fp);
+ }
+}
+
+int32
+bio_fread_1d(void **buf, size_t el_sz, uint32 * n_el, FILE * fp,
+ int32 sw, uint32 * ck)
+{
+ /* Read 1-d array size */
+ if (bio_fread(n_el, sizeof(int32), 1, fp, sw, ck) != 1)
+ E_FATAL("fread(arraysize) failed\n");
+ if (*n_el <= 0)
+ E_FATAL("Bad arraysize: %d\n", *n_el);
+
+ /* Allocate memory for array data */
+ *buf = (void *) ckd_calloc(*n_el, el_sz);
+
+ /* Read array data */
+ if (bio_fread(*buf, el_sz, *n_el, fp, sw, ck) != *n_el)
+ E_FATAL("fread(arraydata) failed\n");
+
+ return *n_el;
+}
+
+int32
+bio_fread_2d(void ***arr,
+ size_t e_sz,
+ uint32 *d1,
+ uint32 *d2,
+ FILE *fp,
+ uint32 swap,
+ uint32 *chksum)
+{
+ uint32 l_d1, l_d2;
+ uint32 n;
+ size_t ret;
+ void *raw;
+
+ ret = bio_fread(&l_d1, sizeof(uint32), 1, fp, swap, chksum);
+ if (ret != 1) {
+ if (ret == 0) {
+ E_ERROR_SYSTEM("Unable to read complete data");
+ }
+ else {
+ E_ERROR_SYSTEM("OS error in bio_fread_2d");
+ }
+ return -1;
+ }
+ ret = bio_fread(&l_d2, sizeof(uint32), 1, fp, swap, chksum);
+ if (ret != 1) {
+ if (ret == 0) {
+ E_ERROR_SYSTEM("Unable to read complete data");
+ }
+ else {
+ E_ERROR_SYSTEM("OS error in bio_fread_2d");
+ }
+ return -1;
+ }
+ if (bio_fread_1d(&raw, e_sz, &n, fp, swap, chksum) != n)
+ return -1;
+
+ assert(n == l_d1*l_d2);
+
+ *d1 = l_d1;
+ *d2 = l_d2;
+ *arr = ckd_alloc_2d_ptr(l_d1, l_d2, raw, e_sz);
+
+ return n;
+}
+
+int32
+bio_fread_3d(void ****arr,
+ size_t e_sz,
+ uint32 *d1,
+ uint32 *d2,
+ uint32 *d3,
+ FILE *fp,
+ uint32 swap,
+ uint32 *chksum)
+{
+ uint32 l_d1;
+ uint32 l_d2;
+ uint32 l_d3;
+ uint32 n;
+ void *raw;
+ size_t ret;
+
+ ret = bio_fread(&l_d1, sizeof(uint32), 1, fp, swap, chksum);
+ if (ret != 1) {
+ if (ret == 0) {
+ E_ERROR_SYSTEM("Unable to read complete data");
+ }
+ else {
+ E_ERROR_SYSTEM("OS error in bio_fread_3d");
+ }
+ return -1;
+ }
+ ret = bio_fread(&l_d2, sizeof(uint32), 1, fp, swap, chksum);
+ if (ret != 1) {
+ if (ret == 0) {
+ E_ERROR_SYSTEM("Unable to read complete data");
+ }
+ else {
+ E_ERROR_SYSTEM("OS error in bio_fread_3d");
+ }
+ return -1;
+ }
+ ret = bio_fread(&l_d3, sizeof(uint32), 1, fp, swap, chksum);
+ if (ret != 1) {
+ if (ret == 0) {
+ E_ERROR_SYSTEM("Unable to read complete data");
+ }
+ else {
+ E_ERROR_SYSTEM("OS error in bio_fread_3d");
+ }
+ return -1;
+ }
+
+ if (bio_fread_1d(&raw, e_sz, &n, fp, swap, chksum) != n) {
+ return -1;
+ }
+
+ assert(n == l_d1 * l_d2 * l_d3);
+
+ *arr = ckd_alloc_3d_ptr(l_d1, l_d2, l_d3, raw, e_sz);
+ *d1 = l_d1;
+ *d2 = l_d2;
+ *d3 = l_d3;
+
+ return n;
+}
+
+void
+bio_verify_chksum(FILE * fp, int32 byteswap, uint32 chksum)
+{
+ uint32 file_chksum;
+
+ if (fread(&file_chksum, sizeof(uint32), 1, fp) != 1)
+ E_FATAL("fread(chksum) failed\n");
+ if (byteswap)
+ SWAP_INT32(&file_chksum);
+ if (file_chksum != chksum)
+ E_FATAL
+ ("Checksum error; file-checksum %08x, computed %08x\n",
+ file_chksum, chksum);
+}
+
+int16*
+bio_read_wavfile(char const *directory,
+ char const *filename,
+ char const *extension,
+ int32 header,
+ int32 endian,
+ int32 *nsamps)
+{
+ FILE *uttfp;
+ char *inputfile;
+ int32 n, l;
+ int16 *data;
+
+ n = strlen(extension);
+ l = strlen(filename);
+ if ((n <= l) && (0 == strcmp(filename + l - n, extension)))
+ extension = "";
+ inputfile = ckd_calloc(strlen(directory) + l + n + 2, 1);
+ if (directory) {
+ sprintf(inputfile, "%s/%s%s", directory, filename, extension);
+ } else {
+ sprintf(inputfile, "%s%s", filename, extension);
+ }
+
+ if ((uttfp = fopen(inputfile, "rb")) == NULL) {
+ E_FATAL("fopen(%s,rb) failed\n", inputfile);
+ }
+ fseek(uttfp, 0, SEEK_END);
+ n = ftell(uttfp);
+ fseek(uttfp, 0, SEEK_SET);
+ if (header > 0) {
+ if (fseek(uttfp, header, SEEK_SET) < 0) {
+ E_ERROR("fseek(%s,%d) failed\n", inputfile, header);
+ fclose(uttfp);
+ ckd_free(inputfile);
+ return NULL;
+ }
+ n -= header;
+ }
+ n /= sizeof(int16);
+ data = ckd_calloc(n, sizeof(*data));
+ if ((l = fread(data, sizeof(int16), n, uttfp)) < n) {
+ E_ERROR_SYSTEM("Failed to read %d samples from %s: %d", n, inputfile, l);
+ ckd_free(data);
+ ckd_free(inputfile);
+ fclose(uttfp);
+ return NULL;
+ }
+ ckd_free(inputfile);
+ fclose(uttfp);
+ if (nsamps) *nsamps = n;
+
+ return data;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * bitvec.c -- Bit vector type.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: bitvec.c,v $
+ * Revision 1.4 2005/06/22 02:58:22 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 05-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Started.
+ */
+
+
+#include "sphinxbase/bitvec.h"
+
+size_t
+bitvec_count_set(bitvec_t *vec, size_t len)
+{
+ size_t words, bits, w, b, n;
+ bitvec_t *v;
+
+ words = len / BITVEC_BITS;
+ bits = len % BITVEC_BITS;
+ v = vec;
+ n = 0;
+ for (w = 0; w < words; ++w, ++v) {
+ if (*v == 0)
+ continue;
+ for (b = 0; b < BITVEC_BITS; ++b)
+ if (*v & (1<<b))
+ ++n;
+ }
+ for (b = 0; b < bits; ++b)
+ if (*v & (1<<b))
+ ++n;
+
+ return n;
+}
--- /dev/null
+/*
+NOTE: This is generated code. Look in README.python for information on
+ remaking this file.
+*/
+#include "sphinxbase/f2c.h"
+
+#ifdef HAVE_CONFIG
+#include "config.h"
+#else
+extern doublereal slamch_(char *);
+#define EPSILON slamch_("Epsilon")
+#define SAFEMINIMUM slamch_("Safe minimum")
+#define PRECISION slamch_("Precision")
+#define BASE slamch_("Base")
+#endif
+
+
+extern doublereal slapy2_(real *, real *);
+
+
+
+/* Table of constant values */
+
+static integer c__1 = 1;
+
+logical lsame_(char *ca, char *cb)
+{
+ /* System generated locals */
+ logical ret_val;
+
+ /* Local variables */
+ static integer inta, intb, zcode;
+
+
+/*
+ -- LAPACK auxiliary routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ September 30, 1994
+
+
+ Purpose
+ =======
+
+ LSAME returns .TRUE. if CA is the same letter as CB regardless of
+ case.
+
+ Arguments
+ =========
+
+ CA (input) CHARACTER*1
+ CB (input) CHARACTER*1
+ CA and CB specify the single characters to be compared.
+
+ =====================================================================
+
+
+ Test if the characters are equal
+*/
+
+ ret_val = *(unsigned char *)ca == *(unsigned char *)cb;
+ if (ret_val) {
+ return ret_val;
+ }
+
+/* Now test for equivalence if both characters are alphabetic. */
+
+ zcode = 'Z';
+
+/*
+ Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+ machines, on which ICHAR returns a value with bit 8 set.
+ ICHAR('A') on Prime machines returns 193 which is the same as
+ ICHAR('A') on an EBCDIC machine.
+*/
+
+ inta = *(unsigned char *)ca;
+ intb = *(unsigned char *)cb;
+
+ if (zcode == 90 || zcode == 122) {
+
+/*
+ ASCII is assumed - ZCODE is the ASCII code of either lower or
+ upper case 'Z'.
+*/
+
+ if (inta >= 97 && inta <= 122) {
+ inta += -32;
+ }
+ if (intb >= 97 && intb <= 122) {
+ intb += -32;
+ }
+
+ } else if (zcode == 233 || zcode == 169) {
+
+/*
+ EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+ upper case 'Z'.
+*/
+
+ if (inta >= 129 && inta <= 137 || inta >= 145 && inta <= 153 || inta
+ >= 162 && inta <= 169) {
+ inta += 64;
+ }
+ if (intb >= 129 && intb <= 137 || intb >= 145 && intb <= 153 || intb
+ >= 162 && intb <= 169) {
+ intb += 64;
+ }
+
+ } else if (zcode == 218 || zcode == 250) {
+
+/*
+ ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+ plus 128 of either lower or upper case 'Z'.
+*/
+
+ if (inta >= 225 && inta <= 250) {
+ inta += -32;
+ }
+ if (intb >= 225 && intb <= 250) {
+ intb += -32;
+ }
+ }
+ ret_val = inta == intb;
+
+/*
+ RETURN
+
+ End of LSAME
+*/
+
+ return ret_val;
+} /* lsame_ */
+
+doublereal sdot_(integer *n, real *sx, integer *incx, real *sy, integer *incy)
+{
+ /* System generated locals */
+ integer i__1;
+ real ret_val;
+
+ /* Local variables */
+ static integer i__, m, ix, iy, mp1;
+ static real stemp;
+
+
+/*
+ forms the dot product of two vectors.
+ uses unrolled loops for increments equal to one.
+ jack dongarra, linpack, 3/11/78.
+ modified 12/3/93, array(1) declarations changed to array(*)
+*/
+
+
+ /* Parameter adjustments */
+ --sy;
+ --sx;
+
+ /* Function Body */
+ stemp = 0.f;
+ ret_val = 0.f;
+ if (*n <= 0) {
+ return ret_val;
+ }
+ if (*incx == 1 && *incy == 1) {
+ goto L20;
+ }
+
+/*
+ code for unequal increments or equal increments
+ not equal to 1
+*/
+
+ ix = 1;
+ iy = 1;
+ if (*incx < 0) {
+ ix = (-(*n) + 1) * *incx + 1;
+ }
+ if (*incy < 0) {
+ iy = (-(*n) + 1) * *incy + 1;
+ }
+ i__1 = *n;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ stemp += sx[ix] * sy[iy];
+ ix += *incx;
+ iy += *incy;
+/* L10: */
+ }
+ ret_val = stemp;
+ return ret_val;
+
+/*
+ code for both increments equal to 1
+
+
+ clean-up loop
+*/
+
+L20:
+ m = *n % 5;
+ if (m == 0) {
+ goto L40;
+ }
+ i__1 = m;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ stemp += sx[i__] * sy[i__];
+/* L30: */
+ }
+ if (*n < 5) {
+ goto L60;
+ }
+L40:
+ mp1 = m + 1;
+ i__1 = *n;
+ for (i__ = mp1; i__ <= i__1; i__ += 5) {
+ stemp = stemp + sx[i__] * sy[i__] + sx[i__ + 1] * sy[i__ + 1] + sx[
+ i__ + 2] * sy[i__ + 2] + sx[i__ + 3] * sy[i__ + 3] + sx[i__ +
+ 4] * sy[i__ + 4];
+/* L50: */
+ }
+L60:
+ ret_val = stemp;
+ return ret_val;
+} /* sdot_ */
+
+/* Subroutine */ int sgemm_(char *transa, char *transb, integer *m, integer *
+ n, integer *k, real *alpha, real *a, integer *lda, real *b, integer *
+ ldb, real *beta, real *c__, integer *ldc)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset, i__1, i__2,
+ i__3;
+
+ /* Local variables */
+ static integer i__, j, l, info;
+ static logical nota, notb;
+ static real temp;
+ static integer ncola;
+ extern logical lsame_(char *, char *);
+ static integer nrowa, nrowb;
+ extern /* Subroutine */ int xerbla_(char *, integer *);
+
+
+/*
+ Purpose
+ =======
+
+ SGEMM performs one of the matrix-matrix operations
+
+ C := alpha*op( A )*op( B ) + beta*C,
+
+ where op( X ) is one of
+
+ op( X ) = X or op( X ) = X',
+
+ alpha and beta are scalars, and A, B and C are matrices, with op( A )
+ an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+
+ Parameters
+ ==========
+
+ TRANSA - CHARACTER*1.
+ On entry, TRANSA specifies the form of op( A ) to be used in
+ the matrix multiplication as follows:
+
+ TRANSA = 'N' or 'n', op( A ) = A.
+
+ TRANSA = 'T' or 't', op( A ) = A'.
+
+ TRANSA = 'C' or 'c', op( A ) = A'.
+
+ Unchanged on exit.
+
+ TRANSB - CHARACTER*1.
+ On entry, TRANSB specifies the form of op( B ) to be used in
+ the matrix multiplication as follows:
+
+ TRANSB = 'N' or 'n', op( B ) = B.
+
+ TRANSB = 'T' or 't', op( B ) = B'.
+
+ TRANSB = 'C' or 'c', op( B ) = B'.
+
+ Unchanged on exit.
+
+ M - INTEGER.
+ On entry, M specifies the number of rows of the matrix
+ op( A ) and of the matrix C. M must be at least zero.
+ Unchanged on exit.
+
+ N - INTEGER.
+ On entry, N specifies the number of columns of the matrix
+ op( B ) and the number of columns of the matrix C. N must be
+ at least zero.
+ Unchanged on exit.
+
+ K - INTEGER.
+ On entry, K specifies the number of columns of the matrix
+ op( A ) and the number of rows of the matrix op( B ). K must
+ be at least zero.
+ Unchanged on exit.
+
+ ALPHA - REAL .
+ On entry, ALPHA specifies the scalar alpha.
+ Unchanged on exit.
+
+ A - REAL array of DIMENSION ( LDA, ka ), where ka is
+ k when TRANSA = 'N' or 'n', and is m otherwise.
+ Before entry with TRANSA = 'N' or 'n', the leading m by k
+ part of the array A must contain the matrix A, otherwise
+ the leading k by m part of the array A must contain the
+ matrix A.
+ Unchanged on exit.
+
+ LDA - INTEGER.
+ On entry, LDA specifies the first dimension of A as declared
+ in the calling (sub) program. When TRANSA = 'N' or 'n' then
+ LDA must be at least max( 1, m ), otherwise LDA must be at
+ least max( 1, k ).
+ Unchanged on exit.
+
+ B - REAL array of DIMENSION ( LDB, kb ), where kb is
+ n when TRANSB = 'N' or 'n', and is k otherwise.
+ Before entry with TRANSB = 'N' or 'n', the leading k by n
+ part of the array B must contain the matrix B, otherwise
+ the leading n by k part of the array B must contain the
+ matrix B.
+ Unchanged on exit.
+
+ LDB - INTEGER.
+ On entry, LDB specifies the first dimension of B as declared
+ in the calling (sub) program. When TRANSB = 'N' or 'n' then
+ LDB must be at least max( 1, k ), otherwise LDB must be at
+ least max( 1, n ).
+ Unchanged on exit.
+
+ BETA - REAL .
+ On entry, BETA specifies the scalar beta. When BETA is
+ supplied as zero then C need not be set on input.
+ Unchanged on exit.
+
+ C - REAL array of DIMENSION ( LDC, n ).
+ Before entry, the leading m by n part of the array C must
+ contain the matrix C, except when beta is zero, in which
+ case C need not be set on entry.
+ On exit, the array C is overwritten by the m by n matrix
+ ( alpha*op( A )*op( B ) + beta*C ).
+
+ LDC - INTEGER.
+ On entry, LDC specifies the first dimension of C as declared
+ in the calling (sub) program. LDC must be at least
+ max( 1, m ).
+ Unchanged on exit.
+
+
+ Level 3 Blas routine.
+
+ -- Written on 8-February-1989.
+ Jack Dongarra, Argonne National Laboratory.
+ Iain Duff, AERE Harwell.
+ Jeremy Du Croz, Numerical Algorithms Group Ltd.
+ Sven Hammarling, Numerical Algorithms Group Ltd.
+
+
+ Set NOTA and NOTB as true if A and B respectively are not
+ transposed and set NROWA, NCOLA and NROWB as the number of rows
+ and columns of A and the number of rows of B respectively.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ b_dim1 = *ldb;
+ b_offset = 1 + b_dim1;
+ b -= b_offset;
+ c_dim1 = *ldc;
+ c_offset = 1 + c_dim1;
+ c__ -= c_offset;
+
+ /* Function Body */
+ nota = lsame_(transa, "N");
+ notb = lsame_(transb, "N");
+ if (nota) {
+ nrowa = *m;
+ ncola = *k;
+ } else {
+ nrowa = *k;
+ ncola = *m;
+ }
+ if (notb) {
+ nrowb = *k;
+ } else {
+ nrowb = *n;
+ }
+
+/* Test the input parameters. */
+
+ info = 0;
+ if (! nota && ! lsame_(transa, "C") && ! lsame_(
+ transa, "T")) {
+ info = 1;
+ } else if (! notb && ! lsame_(transb, "C") && !
+ lsame_(transb, "T")) {
+ info = 2;
+ } else if (*m < 0) {
+ info = 3;
+ } else if (*n < 0) {
+ info = 4;
+ } else if (*k < 0) {
+ info = 5;
+ } else if (*lda < max(1,nrowa)) {
+ info = 8;
+ } else if (*ldb < max(1,nrowb)) {
+ info = 10;
+ } else if (*ldc < max(1,*m)) {
+ info = 13;
+ }
+ if (info != 0) {
+ xerbla_("SGEMM ", &info);
+ return 0;
+ }
+
+/* Quick return if possible. */
+
+ if (*m == 0 || *n == 0 || (*alpha == 0.f || *k == 0) && *beta == 1.f) {
+ return 0;
+ }
+
+/* And if alpha.eq.zero. */
+
+ if (*alpha == 0.f) {
+ if (*beta == 0.f) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L10: */
+ }
+/* L20: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L30: */
+ }
+/* L40: */
+ }
+ }
+ return 0;
+ }
+
+/* Start the operations. */
+
+ if (notb) {
+ if (nota) {
+
+/* Form C := alpha*A*B + beta*C. */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*beta == 0.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L50: */
+ }
+ } else if (*beta != 1.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L60: */
+ }
+ }
+ i__2 = *k;
+ for (l = 1; l <= i__2; ++l) {
+ if (b[l + j * b_dim1] != 0.f) {
+ temp = *alpha * b[l + j * b_dim1];
+ i__3 = *m;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ c__[i__ + j * c_dim1] += temp * a[i__ + l *
+ a_dim1];
+/* L70: */
+ }
+ }
+/* L80: */
+ }
+/* L90: */
+ }
+ } else {
+
+/* Form C := alpha*A'*B + beta*C */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp = 0.f;
+ i__3 = *k;
+ for (l = 1; l <= i__3; ++l) {
+ temp += a[l + i__ * a_dim1] * b[l + j * b_dim1];
+/* L100: */
+ }
+ if (*beta == 0.f) {
+ c__[i__ + j * c_dim1] = *alpha * temp;
+ } else {
+ c__[i__ + j * c_dim1] = *alpha * temp + *beta * c__[
+ i__ + j * c_dim1];
+ }
+/* L110: */
+ }
+/* L120: */
+ }
+ }
+ } else {
+ if (nota) {
+
+/* Form C := alpha*A*B' + beta*C */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*beta == 0.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L130: */
+ }
+ } else if (*beta != 1.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L140: */
+ }
+ }
+ i__2 = *k;
+ for (l = 1; l <= i__2; ++l) {
+ if (b[j + l * b_dim1] != 0.f) {
+ temp = *alpha * b[j + l * b_dim1];
+ i__3 = *m;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ c__[i__ + j * c_dim1] += temp * a[i__ + l *
+ a_dim1];
+/* L150: */
+ }
+ }
+/* L160: */
+ }
+/* L170: */
+ }
+ } else {
+
+/* Form C := alpha*A'*B' + beta*C */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp = 0.f;
+ i__3 = *k;
+ for (l = 1; l <= i__3; ++l) {
+ temp += a[l + i__ * a_dim1] * b[j + l * b_dim1];
+/* L180: */
+ }
+ if (*beta == 0.f) {
+ c__[i__ + j * c_dim1] = *alpha * temp;
+ } else {
+ c__[i__ + j * c_dim1] = *alpha * temp + *beta * c__[
+ i__ + j * c_dim1];
+ }
+/* L190: */
+ }
+/* L200: */
+ }
+ }
+ }
+
+ return 0;
+
+/* End of SGEMM . */
+
+} /* sgemm_ */
+
+/* Subroutine */ int sgemv_(char *trans, integer *m, integer *n, real *alpha,
+ real *a, integer *lda, real *x, integer *incx, real *beta, real *y,
+ integer *incy)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, i__1, i__2;
+
+ /* Local variables */
+ static integer i__, j, ix, iy, jx, jy, kx, ky, info;
+ static real temp;
+ static integer lenx, leny;
+ extern logical lsame_(char *, char *);
+ extern /* Subroutine */ int xerbla_(char *, integer *);
+
+
+/*
+ Purpose
+ =======
+
+ SGEMV performs one of the matrix-vector operations
+
+ y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y,
+
+ where alpha and beta are scalars, x and y are vectors and A is an
+ m by n matrix.
+
+ Parameters
+ ==========
+
+ TRANS - CHARACTER*1.
+ On entry, TRANS specifies the operation to be performed as
+ follows:
+
+ TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
+
+ TRANS = 'T' or 't' y := alpha*A'*x + beta*y.
+
+ TRANS = 'C' or 'c' y := alpha*A'*x + beta*y.
+
+ Unchanged on exit.
+
+ M - INTEGER.
+ On entry, M specifies the number of rows of the matrix A.
+ M must be at least zero.
+ Unchanged on exit.
+
+ N - INTEGER.
+ On entry, N specifies the number of columns of the matrix A.
+ N must be at least zero.
+ Unchanged on exit.
+
+ ALPHA - REAL .
+ On entry, ALPHA specifies the scalar alpha.
+ Unchanged on exit.
+
+ A - REAL array of DIMENSION ( LDA, n ).
+ Before entry, the leading m by n part of the array A must
+ contain the matrix of coefficients.
+ Unchanged on exit.
+
+ LDA - INTEGER.
+ On entry, LDA specifies the first dimension of A as declared
+ in the calling (sub) program. LDA must be at least
+ max( 1, m ).
+ Unchanged on exit.
+
+ X - REAL array of DIMENSION at least
+ ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+ and at least
+ ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+ Before entry, the incremented array X must contain the
+ vector x.
+ Unchanged on exit.
+
+ INCX - INTEGER.
+ On entry, INCX specifies the increment for the elements of
+ X. INCX must not be zero.
+ Unchanged on exit.
+
+ BETA - REAL .
+ On entry, BETA specifies the scalar beta. When BETA is
+ supplied as zero then Y need not be set on input.
+ Unchanged on exit.
+
+ Y - REAL array of DIMENSION at least
+ ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+ and at least
+ ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+ Before entry with BETA non-zero, the incremented array Y
+ must contain the vector y. On exit, Y is overwritten by the
+ updated vector y.
+
+ INCY - INTEGER.
+ On entry, INCY specifies the increment for the elements of
+ Y. INCY must not be zero.
+ Unchanged on exit.
+
+
+ Level 2 Blas routine.
+
+ -- Written on 22-October-1986.
+ Jack Dongarra, Argonne National Lab.
+ Jeremy Du Croz, Nag Central Office.
+ Sven Hammarling, Nag Central Office.
+ Richard Hanson, Sandia National Labs.
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ --x;
+ --y;
+
+ /* Function Body */
+ info = 0;
+ if (! lsame_(trans, "N") && ! lsame_(trans, "T") && ! lsame_(trans, "C")
+ ) {
+ info = 1;
+ } else if (*m < 0) {
+ info = 2;
+ } else if (*n < 0) {
+ info = 3;
+ } else if (*lda < max(1,*m)) {
+ info = 6;
+ } else if (*incx == 0) {
+ info = 8;
+ } else if (*incy == 0) {
+ info = 11;
+ }
+ if (info != 0) {
+ xerbla_("SGEMV ", &info);
+ return 0;
+ }
+
+/* Quick return if possible. */
+
+ if (*m == 0 || *n == 0 || *alpha == 0.f && *beta == 1.f) {
+ return 0;
+ }
+
+/*
+ Set LENX and LENY, the lengths of the vectors x and y, and set
+ up the start points in X and Y.
+*/
+
+ if (lsame_(trans, "N")) {
+ lenx = *n;
+ leny = *m;
+ } else {
+ lenx = *m;
+ leny = *n;
+ }
+ if (*incx > 0) {
+ kx = 1;
+ } else {
+ kx = 1 - (lenx - 1) * *incx;
+ }
+ if (*incy > 0) {
+ ky = 1;
+ } else {
+ ky = 1 - (leny - 1) * *incy;
+ }
+
+/*
+ Start the operations. In this version the elements of A are
+ accessed sequentially with one pass through A.
+
+ First form y := beta*y.
+*/
+
+ if (*beta != 1.f) {
+ if (*incy == 1) {
+ if (*beta == 0.f) {
+ i__1 = leny;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ y[i__] = 0.f;
+/* L10: */
+ }
+ } else {
+ i__1 = leny;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ y[i__] = *beta * y[i__];
+/* L20: */
+ }
+ }
+ } else {
+ iy = ky;
+ if (*beta == 0.f) {
+ i__1 = leny;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ y[iy] = 0.f;
+ iy += *incy;
+/* L30: */
+ }
+ } else {
+ i__1 = leny;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ y[iy] = *beta * y[iy];
+ iy += *incy;
+/* L40: */
+ }
+ }
+ }
+ }
+ if (*alpha == 0.f) {
+ return 0;
+ }
+ if (lsame_(trans, "N")) {
+
+/* Form y := alpha*A*x + y. */
+
+ jx = kx;
+ if (*incy == 1) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (x[jx] != 0.f) {
+ temp = *alpha * x[jx];
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ y[i__] += temp * a[i__ + j * a_dim1];
+/* L50: */
+ }
+ }
+ jx += *incx;
+/* L60: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (x[jx] != 0.f) {
+ temp = *alpha * x[jx];
+ iy = ky;
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ y[iy] += temp * a[i__ + j * a_dim1];
+ iy += *incy;
+/* L70: */
+ }
+ }
+ jx += *incx;
+/* L80: */
+ }
+ }
+ } else {
+
+/* Form y := alpha*A'*x + y. */
+
+ jy = ky;
+ if (*incx == 1) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ temp = 0.f;
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp += a[i__ + j * a_dim1] * x[i__];
+/* L90: */
+ }
+ y[jy] += *alpha * temp;
+ jy += *incy;
+/* L100: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ temp = 0.f;
+ ix = kx;
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp += a[i__ + j * a_dim1] * x[ix];
+ ix += *incx;
+/* L110: */
+ }
+ y[jy] += *alpha * temp;
+ jy += *incy;
+/* L120: */
+ }
+ }
+ }
+
+ return 0;
+
+/* End of SGEMV . */
+
+} /* sgemv_ */
+
+/* Subroutine */ int sscal_(integer *n, real *sa, real *sx, integer *incx)
+{
+ /* System generated locals */
+ integer i__1, i__2;
+
+ /* Local variables */
+ static integer i__, m, mp1, nincx;
+
+
+/*
+ scales a vector by a constant.
+ uses unrolled loops for increment equal to 1.
+ jack dongarra, linpack, 3/11/78.
+ modified 3/93 to return if incx .le. 0.
+ modified 12/3/93, array(1) declarations changed to array(*)
+*/
+
+
+ /* Parameter adjustments */
+ --sx;
+
+ /* Function Body */
+ if (*n <= 0 || *incx <= 0) {
+ return 0;
+ }
+ if (*incx == 1) {
+ goto L20;
+ }
+
+/* code for increment not equal to 1 */
+
+ nincx = *n * *incx;
+ i__1 = nincx;
+ i__2 = *incx;
+ for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
+ sx[i__] = *sa * sx[i__];
+/* L10: */
+ }
+ return 0;
+
+/*
+ code for increment equal to 1
+
+
+ clean-up loop
+*/
+
+L20:
+ m = *n % 5;
+ if (m == 0) {
+ goto L40;
+ }
+ i__2 = m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ sx[i__] = *sa * sx[i__];
+/* L30: */
+ }
+ if (*n < 5) {
+ return 0;
+ }
+L40:
+ mp1 = m + 1;
+ i__2 = *n;
+ for (i__ = mp1; i__ <= i__2; i__ += 5) {
+ sx[i__] = *sa * sx[i__];
+ sx[i__ + 1] = *sa * sx[i__ + 1];
+ sx[i__ + 2] = *sa * sx[i__ + 2];
+ sx[i__ + 3] = *sa * sx[i__ + 3];
+ sx[i__ + 4] = *sa * sx[i__ + 4];
+/* L50: */
+ }
+ return 0;
+} /* sscal_ */
+
+/* Subroutine */ int ssymm_(char *side, char *uplo, integer *m, integer *n,
+ real *alpha, real *a, integer *lda, real *b, integer *ldb, real *beta,
+ real *c__, integer *ldc)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset, i__1, i__2,
+ i__3;
+
+ /* Local variables */
+ static integer i__, j, k, info;
+ static real temp1, temp2;
+ extern logical lsame_(char *, char *);
+ static integer nrowa;
+ static logical upper;
+ extern /* Subroutine */ int xerbla_(char *, integer *);
+
+
+/*
+ Purpose
+ =======
+
+ SSYMM performs one of the matrix-matrix operations
+
+ C := alpha*A*B + beta*C,
+
+ or
+
+ C := alpha*B*A + beta*C,
+
+ where alpha and beta are scalars, A is a symmetric matrix and B and
+ C are m by n matrices.
+
+ Parameters
+ ==========
+
+ SIDE - CHARACTER*1.
+ On entry, SIDE specifies whether the symmetric matrix A
+ appears on the left or right in the operation as follows:
+
+ SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
+
+ SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
+
+ Unchanged on exit.
+
+ UPLO - CHARACTER*1.
+ On entry, UPLO specifies whether the upper or lower
+ triangular part of the symmetric matrix A is to be
+ referenced as follows:
+
+ UPLO = 'U' or 'u' Only the upper triangular part of the
+ symmetric matrix is to be referenced.
+
+ UPLO = 'L' or 'l' Only the lower triangular part of the
+ symmetric matrix is to be referenced.
+
+ Unchanged on exit.
+
+ M - INTEGER.
+ On entry, M specifies the number of rows of the matrix C.
+ M must be at least zero.
+ Unchanged on exit.
+
+ N - INTEGER.
+ On entry, N specifies the number of columns of the matrix C.
+ N must be at least zero.
+ Unchanged on exit.
+
+ ALPHA - REAL .
+ On entry, ALPHA specifies the scalar alpha.
+ Unchanged on exit.
+
+ A - REAL array of DIMENSION ( LDA, ka ), where ka is
+ m when SIDE = 'L' or 'l' and is n otherwise.
+ Before entry with SIDE = 'L' or 'l', the m by m part of
+ the array A must contain the symmetric matrix, such that
+ when UPLO = 'U' or 'u', the leading m by m upper triangular
+ part of the array A must contain the upper triangular part
+ of the symmetric matrix and the strictly lower triangular
+ part of A is not referenced, and when UPLO = 'L' or 'l',
+ the leading m by m lower triangular part of the array A
+ must contain the lower triangular part of the symmetric
+ matrix and the strictly upper triangular part of A is not
+ referenced.
+ Before entry with SIDE = 'R' or 'r', the n by n part of
+ the array A must contain the symmetric matrix, such that
+ when UPLO = 'U' or 'u', the leading n by n upper triangular
+ part of the array A must contain the upper triangular part
+ of the symmetric matrix and the strictly lower triangular
+ part of A is not referenced, and when UPLO = 'L' or 'l',
+ the leading n by n lower triangular part of the array A
+ must contain the lower triangular part of the symmetric
+ matrix and the strictly upper triangular part of A is not
+ referenced.
+ Unchanged on exit.
+
+ LDA - INTEGER.
+ On entry, LDA specifies the first dimension of A as declared
+ in the calling (sub) program. When SIDE = 'L' or 'l' then
+ LDA must be at least max( 1, m ), otherwise LDA must be at
+ least max( 1, n ).
+ Unchanged on exit.
+
+ B - REAL array of DIMENSION ( LDB, n ).
+ Before entry, the leading m by n part of the array B must
+ contain the matrix B.
+ Unchanged on exit.
+
+ LDB - INTEGER.
+ On entry, LDB specifies the first dimension of B as declared
+ in the calling (sub) program. LDB must be at least
+ max( 1, m ).
+ Unchanged on exit.
+
+ BETA - REAL .
+ On entry, BETA specifies the scalar beta. When BETA is
+ supplied as zero then C need not be set on input.
+ Unchanged on exit.
+
+ C - REAL array of DIMENSION ( LDC, n ).
+ Before entry, the leading m by n part of the array C must
+ contain the matrix C, except when beta is zero, in which
+ case C need not be set on entry.
+ On exit, the array C is overwritten by the m by n updated
+ matrix.
+
+ LDC - INTEGER.
+ On entry, LDC specifies the first dimension of C as declared
+ in the calling (sub) program. LDC must be at least
+ max( 1, m ).
+ Unchanged on exit.
+
+
+ Level 3 Blas routine.
+
+ -- Written on 8-February-1989.
+ Jack Dongarra, Argonne National Laboratory.
+ Iain Duff, AERE Harwell.
+ Jeremy Du Croz, Numerical Algorithms Group Ltd.
+ Sven Hammarling, Numerical Algorithms Group Ltd.
+
+
+ Set NROWA as the number of rows of A.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ b_dim1 = *ldb;
+ b_offset = 1 + b_dim1;
+ b -= b_offset;
+ c_dim1 = *ldc;
+ c_offset = 1 + c_dim1;
+ c__ -= c_offset;
+
+ /* Function Body */
+ if (lsame_(side, "L")) {
+ nrowa = *m;
+ } else {
+ nrowa = *n;
+ }
+ upper = lsame_(uplo, "U");
+
+/* Test the input parameters. */
+
+ info = 0;
+ if (! lsame_(side, "L") && ! lsame_(side, "R")) {
+ info = 1;
+ } else if (! upper && ! lsame_(uplo, "L")) {
+ info = 2;
+ } else if (*m < 0) {
+ info = 3;
+ } else if (*n < 0) {
+ info = 4;
+ } else if (*lda < max(1,nrowa)) {
+ info = 7;
+ } else if (*ldb < max(1,*m)) {
+ info = 9;
+ } else if (*ldc < max(1,*m)) {
+ info = 12;
+ }
+ if (info != 0) {
+ xerbla_("SSYMM ", &info);
+ return 0;
+ }
+
+/* Quick return if possible. */
+
+ if (*m == 0 || *n == 0 || *alpha == 0.f && *beta == 1.f) {
+ return 0;
+ }
+
+/* And when alpha.eq.zero. */
+
+ if (*alpha == 0.f) {
+ if (*beta == 0.f) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L10: */
+ }
+/* L20: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L30: */
+ }
+/* L40: */
+ }
+ }
+ return 0;
+ }
+
+/* Start the operations. */
+
+ if (lsame_(side, "L")) {
+
+/* Form C := alpha*A*B + beta*C. */
+
+ if (upper) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp1 = *alpha * b[i__ + j * b_dim1];
+ temp2 = 0.f;
+ i__3 = i__ - 1;
+ for (k = 1; k <= i__3; ++k) {
+ c__[k + j * c_dim1] += temp1 * a[k + i__ * a_dim1];
+ temp2 += b[k + j * b_dim1] * a[k + i__ * a_dim1];
+/* L50: */
+ }
+ if (*beta == 0.f) {
+ c__[i__ + j * c_dim1] = temp1 * a[i__ + i__ * a_dim1]
+ + *alpha * temp2;
+ } else {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1]
+ + temp1 * a[i__ + i__ * a_dim1] + *alpha *
+ temp2;
+ }
+/* L60: */
+ }
+/* L70: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ for (i__ = *m; i__ >= 1; --i__) {
+ temp1 = *alpha * b[i__ + j * b_dim1];
+ temp2 = 0.f;
+ i__2 = *m;
+ for (k = i__ + 1; k <= i__2; ++k) {
+ c__[k + j * c_dim1] += temp1 * a[k + i__ * a_dim1];
+ temp2 += b[k + j * b_dim1] * a[k + i__ * a_dim1];
+/* L80: */
+ }
+ if (*beta == 0.f) {
+ c__[i__ + j * c_dim1] = temp1 * a[i__ + i__ * a_dim1]
+ + *alpha * temp2;
+ } else {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1]
+ + temp1 * a[i__ + i__ * a_dim1] + *alpha *
+ temp2;
+ }
+/* L90: */
+ }
+/* L100: */
+ }
+ }
+ } else {
+
+/* Form C := alpha*B*A + beta*C. */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ temp1 = *alpha * a[j + j * a_dim1];
+ if (*beta == 0.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = temp1 * b[i__ + j * b_dim1];
+/* L110: */
+ }
+ } else {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1] +
+ temp1 * b[i__ + j * b_dim1];
+/* L120: */
+ }
+ }
+ i__2 = j - 1;
+ for (k = 1; k <= i__2; ++k) {
+ if (upper) {
+ temp1 = *alpha * a[k + j * a_dim1];
+ } else {
+ temp1 = *alpha * a[j + k * a_dim1];
+ }
+ i__3 = *m;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ c__[i__ + j * c_dim1] += temp1 * b[i__ + k * b_dim1];
+/* L130: */
+ }
+/* L140: */
+ }
+ i__2 = *n;
+ for (k = j + 1; k <= i__2; ++k) {
+ if (upper) {
+ temp1 = *alpha * a[j + k * a_dim1];
+ } else {
+ temp1 = *alpha * a[k + j * a_dim1];
+ }
+ i__3 = *m;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ c__[i__ + j * c_dim1] += temp1 * b[i__ + k * b_dim1];
+/* L150: */
+ }
+/* L160: */
+ }
+/* L170: */
+ }
+ }
+
+ return 0;
+
+/* End of SSYMM . */
+
+} /* ssymm_ */
+
+/* Subroutine */ int ssyrk_(char *uplo, char *trans, integer *n, integer *k,
+ real *alpha, real *a, integer *lda, real *beta, real *c__, integer *
+ ldc)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, c_dim1, c_offset, i__1, i__2, i__3;
+
+ /* Local variables */
+ static integer i__, j, l, info;
+ static real temp;
+ extern logical lsame_(char *, char *);
+ static integer nrowa;
+ static logical upper;
+ extern /* Subroutine */ int xerbla_(char *, integer *);
+
+
+/*
+ Purpose
+ =======
+
+ SSYRK performs one of the symmetric rank k operations
+
+ C := alpha*A*A' + beta*C,
+
+ or
+
+ C := alpha*A'*A + beta*C,
+
+ where alpha and beta are scalars, C is an n by n symmetric matrix
+ and A is an n by k matrix in the first case and a k by n matrix
+ in the second case.
+
+ Parameters
+ ==========
+
+ UPLO - CHARACTER*1.
+ On entry, UPLO specifies whether the upper or lower
+ triangular part of the array C is to be referenced as
+ follows:
+
+ UPLO = 'U' or 'u' Only the upper triangular part of C
+ is to be referenced.
+
+ UPLO = 'L' or 'l' Only the lower triangular part of C
+ is to be referenced.
+
+ Unchanged on exit.
+
+ TRANS - CHARACTER*1.
+ On entry, TRANS specifies the operation to be performed as
+ follows:
+
+ TRANS = 'N' or 'n' C := alpha*A*A' + beta*C.
+
+ TRANS = 'T' or 't' C := alpha*A'*A + beta*C.
+
+ TRANS = 'C' or 'c' C := alpha*A'*A + beta*C.
+
+ Unchanged on exit.
+
+ N - INTEGER.
+ On entry, N specifies the order of the matrix C. N must be
+ at least zero.
+ Unchanged on exit.
+
+ K - INTEGER.
+ On entry with TRANS = 'N' or 'n', K specifies the number
+ of columns of the matrix A, and on entry with
+ TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+ of rows of the matrix A. K must be at least zero.
+ Unchanged on exit.
+
+ ALPHA - REAL .
+ On entry, ALPHA specifies the scalar alpha.
+ Unchanged on exit.
+
+ A - REAL array of DIMENSION ( LDA, ka ), where ka is
+ k when TRANS = 'N' or 'n', and is n otherwise.
+ Before entry with TRANS = 'N' or 'n', the leading n by k
+ part of the array A must contain the matrix A, otherwise
+ the leading k by n part of the array A must contain the
+ matrix A.
+ Unchanged on exit.
+
+ LDA - INTEGER.
+ On entry, LDA specifies the first dimension of A as declared
+ in the calling (sub) program. When TRANS = 'N' or 'n'
+ then LDA must be at least max( 1, n ), otherwise LDA must
+ be at least max( 1, k ).
+ Unchanged on exit.
+
+ BETA - REAL .
+ On entry, BETA specifies the scalar beta.
+ Unchanged on exit.
+
+ C - REAL array of DIMENSION ( LDC, n ).
+ Before entry with UPLO = 'U' or 'u', the leading n by n
+ upper triangular part of the array C must contain the upper
+ triangular part of the symmetric matrix and the strictly
+ lower triangular part of C is not referenced. On exit, the
+ upper triangular part of the array C is overwritten by the
+ upper triangular part of the updated matrix.
+ Before entry with UPLO = 'L' or 'l', the leading n by n
+ lower triangular part of the array C must contain the lower
+ triangular part of the symmetric matrix and the strictly
+ upper triangular part of C is not referenced. On exit, the
+ lower triangular part of the array C is overwritten by the
+ lower triangular part of the updated matrix.
+
+ LDC - INTEGER.
+ On entry, LDC specifies the first dimension of C as declared
+ in the calling (sub) program. LDC must be at least
+ max( 1, n ).
+ Unchanged on exit.
+
+
+ Level 3 Blas routine.
+
+ -- Written on 8-February-1989.
+ Jack Dongarra, Argonne National Laboratory.
+ Iain Duff, AERE Harwell.
+ Jeremy Du Croz, Numerical Algorithms Group Ltd.
+ Sven Hammarling, Numerical Algorithms Group Ltd.
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ c_dim1 = *ldc;
+ c_offset = 1 + c_dim1;
+ c__ -= c_offset;
+
+ /* Function Body */
+ if (lsame_(trans, "N")) {
+ nrowa = *n;
+ } else {
+ nrowa = *k;
+ }
+ upper = lsame_(uplo, "U");
+
+ info = 0;
+ if (! upper && ! lsame_(uplo, "L")) {
+ info = 1;
+ } else if (! lsame_(trans, "N") && ! lsame_(trans,
+ "T") && ! lsame_(trans, "C")) {
+ info = 2;
+ } else if (*n < 0) {
+ info = 3;
+ } else if (*k < 0) {
+ info = 4;
+ } else if (*lda < max(1,nrowa)) {
+ info = 7;
+ } else if (*ldc < max(1,*n)) {
+ info = 10;
+ }
+ if (info != 0) {
+ xerbla_("SSYRK ", &info);
+ return 0;
+ }
+
+/* Quick return if possible. */
+
+ if (*n == 0 || (*alpha == 0.f || *k == 0) && *beta == 1.f) {
+ return 0;
+ }
+
+/* And when alpha.eq.zero. */
+
+ if (*alpha == 0.f) {
+ if (upper) {
+ if (*beta == 0.f) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = j;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L10: */
+ }
+/* L20: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = j;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L30: */
+ }
+/* L40: */
+ }
+ }
+ } else {
+ if (*beta == 0.f) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *n;
+ for (i__ = j; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L50: */
+ }
+/* L60: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *n;
+ for (i__ = j; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L70: */
+ }
+/* L80: */
+ }
+ }
+ }
+ return 0;
+ }
+
+/* Start the operations. */
+
+ if (lsame_(trans, "N")) {
+
+/* Form C := alpha*A*A' + beta*C. */
+
+ if (upper) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*beta == 0.f) {
+ i__2 = j;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L90: */
+ }
+ } else if (*beta != 1.f) {
+ i__2 = j;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L100: */
+ }
+ }
+ i__2 = *k;
+ for (l = 1; l <= i__2; ++l) {
+ if (a[j + l * a_dim1] != 0.f) {
+ temp = *alpha * a[j + l * a_dim1];
+ i__3 = j;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ c__[i__ + j * c_dim1] += temp * a[i__ + l *
+ a_dim1];
+/* L110: */
+ }
+ }
+/* L120: */
+ }
+/* L130: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*beta == 0.f) {
+ i__2 = *n;
+ for (i__ = j; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = 0.f;
+/* L140: */
+ }
+ } else if (*beta != 1.f) {
+ i__2 = *n;
+ for (i__ = j; i__ <= i__2; ++i__) {
+ c__[i__ + j * c_dim1] = *beta * c__[i__ + j * c_dim1];
+/* L150: */
+ }
+ }
+ i__2 = *k;
+ for (l = 1; l <= i__2; ++l) {
+ if (a[j + l * a_dim1] != 0.f) {
+ temp = *alpha * a[j + l * a_dim1];
+ i__3 = *n;
+ for (i__ = j; i__ <= i__3; ++i__) {
+ c__[i__ + j * c_dim1] += temp * a[i__ + l *
+ a_dim1];
+/* L160: */
+ }
+ }
+/* L170: */
+ }
+/* L180: */
+ }
+ }
+ } else {
+
+/* Form C := alpha*A'*A + beta*C. */
+
+ if (upper) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = j;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp = 0.f;
+ i__3 = *k;
+ for (l = 1; l <= i__3; ++l) {
+ temp += a[l + i__ * a_dim1] * a[l + j * a_dim1];
+/* L190: */
+ }
+ if (*beta == 0.f) {
+ c__[i__ + j * c_dim1] = *alpha * temp;
+ } else {
+ c__[i__ + j * c_dim1] = *alpha * temp + *beta * c__[
+ i__ + j * c_dim1];
+ }
+/* L200: */
+ }
+/* L210: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *n;
+ for (i__ = j; i__ <= i__2; ++i__) {
+ temp = 0.f;
+ i__3 = *k;
+ for (l = 1; l <= i__3; ++l) {
+ temp += a[l + i__ * a_dim1] * a[l + j * a_dim1];
+/* L220: */
+ }
+ if (*beta == 0.f) {
+ c__[i__ + j * c_dim1] = *alpha * temp;
+ } else {
+ c__[i__ + j * c_dim1] = *alpha * temp + *beta * c__[
+ i__ + j * c_dim1];
+ }
+/* L230: */
+ }
+/* L240: */
+ }
+ }
+ }
+
+ return 0;
+
+/* End of SSYRK . */
+
+} /* ssyrk_ */
+
+/* Subroutine */ int strsm_(char *side, char *uplo, char *transa, char *diag,
+ integer *m, integer *n, real *alpha, real *a, integer *lda, real *b,
+ integer *ldb)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, b_dim1, b_offset, i__1, i__2, i__3;
+
+ /* Local variables */
+ static integer i__, j, k, info;
+ static real temp;
+ static logical lside;
+ extern logical lsame_(char *, char *);
+ static integer nrowa;
+ static logical upper;
+ extern /* Subroutine */ int xerbla_(char *, integer *);
+ static logical nounit;
+
+
+/*
+ Purpose
+ =======
+
+ STRSM solves one of the matrix equations
+
+ op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+
+ where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+ non-unit, upper or lower triangular matrix and op( A ) is one of
+
+ op( A ) = A or op( A ) = A'.
+
+ The matrix X is overwritten on B.
+
+ Parameters
+ ==========
+
+ SIDE - CHARACTER*1.
+ On entry, SIDE specifies whether op( A ) appears on the left
+ or right of X as follows:
+
+ SIDE = 'L' or 'l' op( A )*X = alpha*B.
+
+ SIDE = 'R' or 'r' X*op( A ) = alpha*B.
+
+ Unchanged on exit.
+
+ UPLO - CHARACTER*1.
+ On entry, UPLO specifies whether the matrix A is an upper or
+ lower triangular matrix as follows:
+
+ UPLO = 'U' or 'u' A is an upper triangular matrix.
+
+ UPLO = 'L' or 'l' A is a lower triangular matrix.
+
+ Unchanged on exit.
+
+ TRANSA - CHARACTER*1.
+ On entry, TRANSA specifies the form of op( A ) to be used in
+ the matrix multiplication as follows:
+
+ TRANSA = 'N' or 'n' op( A ) = A.
+
+ TRANSA = 'T' or 't' op( A ) = A'.
+
+ TRANSA = 'C' or 'c' op( A ) = A'.
+
+ Unchanged on exit.
+
+ DIAG - CHARACTER*1.
+ On entry, DIAG specifies whether or not A is unit triangular
+ as follows:
+
+ DIAG = 'U' or 'u' A is assumed to be unit triangular.
+
+ DIAG = 'N' or 'n' A is not assumed to be unit
+ triangular.
+
+ Unchanged on exit.
+
+ M - INTEGER.
+ On entry, M specifies the number of rows of B. M must be at
+ least zero.
+ Unchanged on exit.
+
+ N - INTEGER.
+ On entry, N specifies the number of columns of B. N must be
+ at least zero.
+ Unchanged on exit.
+
+ ALPHA - REAL .
+ On entry, ALPHA specifies the scalar alpha. When alpha is
+ zero then A is not referenced and B need not be set before
+ entry.
+ Unchanged on exit.
+
+ A - REAL array of DIMENSION ( LDA, k ), where k is m
+ when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.
+ Before entry with UPLO = 'U' or 'u', the leading k by k
+ upper triangular part of the array A must contain the upper
+ triangular matrix and the strictly lower triangular part of
+ A is not referenced.
+ Before entry with UPLO = 'L' or 'l', the leading k by k
+ lower triangular part of the array A must contain the lower
+ triangular matrix and the strictly upper triangular part of
+ A is not referenced.
+ Note that when DIAG = 'U' or 'u', the diagonal elements of
+ A are not referenced either, but are assumed to be unity.
+ Unchanged on exit.
+
+ LDA - INTEGER.
+ On entry, LDA specifies the first dimension of A as declared
+ in the calling (sub) program. When SIDE = 'L' or 'l' then
+ LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+ then LDA must be at least max( 1, n ).
+ Unchanged on exit.
+
+ B - REAL array of DIMENSION ( LDB, n ).
+ Before entry, the leading m by n part of the array B must
+ contain the right-hand side matrix B, and on exit is
+ overwritten by the solution matrix X.
+
+ LDB - INTEGER.
+ On entry, LDB specifies the first dimension of B as declared
+ in the calling (sub) program. LDB must be at least
+ max( 1, m ).
+ Unchanged on exit.
+
+
+ Level 3 Blas routine.
+
+
+ -- Written on 8-February-1989.
+ Jack Dongarra, Argonne National Laboratory.
+ Iain Duff, AERE Harwell.
+ Jeremy Du Croz, Numerical Algorithms Group Ltd.
+ Sven Hammarling, Numerical Algorithms Group Ltd.
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ b_dim1 = *ldb;
+ b_offset = 1 + b_dim1;
+ b -= b_offset;
+
+ /* Function Body */
+ lside = lsame_(side, "L");
+ if (lside) {
+ nrowa = *m;
+ } else {
+ nrowa = *n;
+ }
+ nounit = lsame_(diag, "N");
+ upper = lsame_(uplo, "U");
+
+ info = 0;
+ if (! lside && ! lsame_(side, "R")) {
+ info = 1;
+ } else if (! upper && ! lsame_(uplo, "L")) {
+ info = 2;
+ } else if (! lsame_(transa, "N") && ! lsame_(transa,
+ "T") && ! lsame_(transa, "C")) {
+ info = 3;
+ } else if (! lsame_(diag, "U") && ! lsame_(diag,
+ "N")) {
+ info = 4;
+ } else if (*m < 0) {
+ info = 5;
+ } else if (*n < 0) {
+ info = 6;
+ } else if (*lda < max(1,nrowa)) {
+ info = 9;
+ } else if (*ldb < max(1,*m)) {
+ info = 11;
+ }
+ if (info != 0) {
+ xerbla_("STRSM ", &info);
+ return 0;
+ }
+
+/* Quick return if possible. */
+
+ if (*n == 0) {
+ return 0;
+ }
+
+/* And when alpha.eq.zero. */
+
+ if (*alpha == 0.f) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] = 0.f;
+/* L10: */
+ }
+/* L20: */
+ }
+ return 0;
+ }
+
+/* Start the operations. */
+
+ if (lside) {
+ if (lsame_(transa, "N")) {
+
+/* Form B := alpha*inv( A )*B. */
+
+ if (upper) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*alpha != 1.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] = *alpha * b[i__ + j * b_dim1]
+ ;
+/* L30: */
+ }
+ }
+ for (k = *m; k >= 1; --k) {
+ if (b[k + j * b_dim1] != 0.f) {
+ if (nounit) {
+ b[k + j * b_dim1] /= a[k + k * a_dim1];
+ }
+ i__2 = k - 1;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] -= b[k + j * b_dim1] * a[
+ i__ + k * a_dim1];
+/* L40: */
+ }
+ }
+/* L50: */
+ }
+/* L60: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*alpha != 1.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] = *alpha * b[i__ + j * b_dim1]
+ ;
+/* L70: */
+ }
+ }
+ i__2 = *m;
+ for (k = 1; k <= i__2; ++k) {
+ if (b[k + j * b_dim1] != 0.f) {
+ if (nounit) {
+ b[k + j * b_dim1] /= a[k + k * a_dim1];
+ }
+ i__3 = *m;
+ for (i__ = k + 1; i__ <= i__3; ++i__) {
+ b[i__ + j * b_dim1] -= b[k + j * b_dim1] * a[
+ i__ + k * a_dim1];
+/* L80: */
+ }
+ }
+/* L90: */
+ }
+/* L100: */
+ }
+ }
+ } else {
+
+/* Form B := alpha*inv( A' )*B. */
+
+ if (upper) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ temp = *alpha * b[i__ + j * b_dim1];
+ i__3 = i__ - 1;
+ for (k = 1; k <= i__3; ++k) {
+ temp -= a[k + i__ * a_dim1] * b[k + j * b_dim1];
+/* L110: */
+ }
+ if (nounit) {
+ temp /= a[i__ + i__ * a_dim1];
+ }
+ b[i__ + j * b_dim1] = temp;
+/* L120: */
+ }
+/* L130: */
+ }
+ } else {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ for (i__ = *m; i__ >= 1; --i__) {
+ temp = *alpha * b[i__ + j * b_dim1];
+ i__2 = *m;
+ for (k = i__ + 1; k <= i__2; ++k) {
+ temp -= a[k + i__ * a_dim1] * b[k + j * b_dim1];
+/* L140: */
+ }
+ if (nounit) {
+ temp /= a[i__ + i__ * a_dim1];
+ }
+ b[i__ + j * b_dim1] = temp;
+/* L150: */
+ }
+/* L160: */
+ }
+ }
+ }
+ } else {
+ if (lsame_(transa, "N")) {
+
+/* Form B := alpha*B*inv( A ). */
+
+ if (upper) {
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+ if (*alpha != 1.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] = *alpha * b[i__ + j * b_dim1]
+ ;
+/* L170: */
+ }
+ }
+ i__2 = j - 1;
+ for (k = 1; k <= i__2; ++k) {
+ if (a[k + j * a_dim1] != 0.f) {
+ i__3 = *m;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ b[i__ + j * b_dim1] -= a[k + j * a_dim1] * b[
+ i__ + k * b_dim1];
+/* L180: */
+ }
+ }
+/* L190: */
+ }
+ if (nounit) {
+ temp = 1.f / a[j + j * a_dim1];
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] = temp * b[i__ + j * b_dim1];
+/* L200: */
+ }
+ }
+/* L210: */
+ }
+ } else {
+ for (j = *n; j >= 1; --j) {
+ if (*alpha != 1.f) {
+ i__1 = *m;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ b[i__ + j * b_dim1] = *alpha * b[i__ + j * b_dim1]
+ ;
+/* L220: */
+ }
+ }
+ i__1 = *n;
+ for (k = j + 1; k <= i__1; ++k) {
+ if (a[k + j * a_dim1] != 0.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] -= a[k + j * a_dim1] * b[
+ i__ + k * b_dim1];
+/* L230: */
+ }
+ }
+/* L240: */
+ }
+ if (nounit) {
+ temp = 1.f / a[j + j * a_dim1];
+ i__1 = *m;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ b[i__ + j * b_dim1] = temp * b[i__ + j * b_dim1];
+/* L250: */
+ }
+ }
+/* L260: */
+ }
+ }
+ } else {
+
+/* Form B := alpha*B*inv( A' ). */
+
+ if (upper) {
+ for (k = *n; k >= 1; --k) {
+ if (nounit) {
+ temp = 1.f / a[k + k * a_dim1];
+ i__1 = *m;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ b[i__ + k * b_dim1] = temp * b[i__ + k * b_dim1];
+/* L270: */
+ }
+ }
+ i__1 = k - 1;
+ for (j = 1; j <= i__1; ++j) {
+ if (a[j + k * a_dim1] != 0.f) {
+ temp = a[j + k * a_dim1];
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + j * b_dim1] -= temp * b[i__ + k *
+ b_dim1];
+/* L280: */
+ }
+ }
+/* L290: */
+ }
+ if (*alpha != 1.f) {
+ i__1 = *m;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ b[i__ + k * b_dim1] = *alpha * b[i__ + k * b_dim1]
+ ;
+/* L300: */
+ }
+ }
+/* L310: */
+ }
+ } else {
+ i__1 = *n;
+ for (k = 1; k <= i__1; ++k) {
+ if (nounit) {
+ temp = 1.f / a[k + k * a_dim1];
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + k * b_dim1] = temp * b[i__ + k * b_dim1];
+/* L320: */
+ }
+ }
+ i__2 = *n;
+ for (j = k + 1; j <= i__2; ++j) {
+ if (a[j + k * a_dim1] != 0.f) {
+ temp = a[j + k * a_dim1];
+ i__3 = *m;
+ for (i__ = 1; i__ <= i__3; ++i__) {
+ b[i__ + j * b_dim1] -= temp * b[i__ + k *
+ b_dim1];
+/* L330: */
+ }
+ }
+/* L340: */
+ }
+ if (*alpha != 1.f) {
+ i__2 = *m;
+ for (i__ = 1; i__ <= i__2; ++i__) {
+ b[i__ + k * b_dim1] = *alpha * b[i__ + k * b_dim1]
+ ;
+/* L350: */
+ }
+ }
+/* L360: */
+ }
+ }
+ }
+ }
+
+ return 0;
+
+/* End of STRSM . */
+
+} /* strsm_ */
+
+/* Subroutine */ int xerbla_(char *srname, integer *info)
+{
+ /* Format strings */
+ static char fmt_9999[] = "(\002 ** On entry to \002,a6,\002 parameter nu"
+ "mber \002,i2,\002 had \002,\002an illegal value\002)";
+
+ /* Builtin functions */
+ integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void);
+ /* Subroutine */ int s_stop(char *, ftnlen);
+
+ /* Fortran I/O blocks */
+ static cilist io___60 = { 0, 6, 0, fmt_9999, 0 };
+
+
+/*
+ -- LAPACK auxiliary routine (preliminary version) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ February 29, 1992
+
+
+ Purpose
+ =======
+
+ XERBLA is an error handler for the LAPACK routines.
+ It is called by an LAPACK routine if an input parameter has an
+ invalid value. A message is printed and execution stops.
+
+ Installers may consider modifying the STOP statement in order to
+ call system-specific exception-handling facilities.
+
+ Arguments
+ =========
+
+ SRNAME (input) CHARACTER*6
+ The name of the routine which called XERBLA.
+
+ INFO (input) INTEGER
+ The position of the invalid parameter in the parameter list
+ of the calling routine.
+*/
+
+
+ s_wsfe(&io___60);
+ do_fio(&c__1, srname, (ftnlen)6);
+ do_fio(&c__1, (char *)&(*info), (ftnlen)sizeof(integer));
+ e_wsfe();
+
+ s_stop("", (ftnlen)0);
+
+
+/* End of XERBLA */
+
+ return 0;
+} /* xerbla_ */
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * case.c -- Upper/lower case conversion routines
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: case.c,v $
+ * Revision 1.7 2005/06/22 02:58:54 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 18-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added strcmp_nocase. Moved UPPER_CASE and LOWER_CASE definitions to .h.
+ *
+ * 16-Feb-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Created.
+ */
+
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "sphinxbase/case.h"
+#include "sphinxbase/err.h"
+
+
+void
+lcase(register char *cp)
+{
+ if (cp) {
+ while (*cp) {
+ *cp = LOWER_CASE(*cp);
+ cp++;
+ }
+ }
+}
+
+void
+ucase(register char *cp)
+{
+ if (cp) {
+ while (*cp) {
+ *cp = UPPER_CASE(*cp);
+ cp++;
+ }
+ }
+}
+
+int32
+strcmp_nocase(const char *str1, const char *str2)
+{
+ char c1, c2;
+
+ if (str1 == str2)
+ return 0;
+ if (str1 && str2) {
+ for (;;) {
+ c1 = *(str1++);
+ c1 = UPPER_CASE(c1);
+ c2 = *(str2++);
+ c2 = UPPER_CASE(c2);
+ if (c1 != c2)
+ return (c1 - c2);
+ if (c1 == '\0')
+ return 0;
+ }
+ }
+ else
+ return (str1 == NULL) ? -1 : 1;
+
+ return 0;
+}
+
+int32
+strncmp_nocase(const char *str1, const char *str2, size_t len)
+{
+ char c1, c2;
+
+ if (str1 && str2) {
+ size_t n;
+
+ for (n = 0; n < len; ++n) {
+ c1 = *(str1++);
+ c1 = UPPER_CASE(c1);
+ c2 = *(str2++);
+ c2 = UPPER_CASE(c2);
+ if (c1 != c2)
+ return (c1 - c2);
+ if (c1 == '\0')
+ return 0;
+ }
+ }
+ else
+ return (str1 == NULL) ? -1 : 1;
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * ckd_alloc.c -- Memory allocation package.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: ckd_alloc.c,v $
+ * Revision 1.6 2005/06/22 02:59:25 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 19-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Removed file,line arguments from free functions.
+ * Removed debugging stuff.
+ *
+ * 01-Jan-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+
+/*********************************************************************
+ *
+ * $Header: /cvsroot/cmusphinx/sphinx3/src/libutil/ckd_alloc.c,v 1.6 2005/06/22 02:59:25 arthchan2003 Exp $
+ *
+ * Carnegie Mellon ARPA Speech Group
+ *
+ * Copyright (c) 1994 Carnegie Mellon University.
+ * All rights reserved.
+ *
+ *********************************************************************
+ *
+ * file: ckd_alloc.c
+ *
+ * traceability:
+ *
+ * description:
+ *
+ * author:
+ *
+ *********************************************************************/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdarg.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/err.h"
+
+/**
+ * Target for longjmp() on failure.
+ *
+ * FIXME: This should be in thread-local storage.
+ */
+static jmp_buf *ckd_target;
+static int jmp_abort;
+
+jmp_buf *
+ckd_set_jump(jmp_buf *env, int abort)
+{
+ jmp_buf *old;
+
+ if (abort)
+ jmp_abort = 1;
+
+ old = ckd_target;
+ ckd_target = env;
+ return old;
+}
+
+void
+ckd_fail(char *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ vfprintf(stderr, format, args);
+ va_end(args);
+
+ if (jmp_abort)
+ /* Silvio Moioli: abort() doesn't exist in Windows CE */
+ #if defined(_WIN32_WCE)
+ exit(-1);
+ #else
+ abort();
+ #endif
+ else if (ckd_target)
+ longjmp(*ckd_target, 1);
+ else
+ exit(-1);
+}
+
+void *
+__ckd_calloc__(size_t n_elem, size_t elem_size,
+ const char *caller_file, int caller_line)
+{
+ void *mem;
+
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+ if ((mem = heap_calloc(heap_lookup(1),n_elem, elem_size)) == NULL)
+ if ((mem = heap_calloc(heap_lookup(0),n_elem, elem_size)) == NULL)
+ {
+ ckd_fail("calloc(%d,%d) failed from %s(%d), free space: %d\n", n_elem,
+ elem_size, caller_file, caller_line,space_unused());
+ }
+#else
+ if ((mem = calloc(n_elem, elem_size)) == NULL) {
+ ckd_fail("calloc(%d,%d) failed from %s(%d)\n", n_elem,
+ elem_size, caller_file, caller_line);
+ }
+#endif
+
+
+ return mem;
+}
+
+
+void *
+__ckd_malloc__(size_t size, const char *caller_file, int caller_line)
+{
+ void *mem;
+
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+ if ((mem = heap_malloc(heap_lookup(0),size)) == NULL)
+ if ((mem = heap_malloc(heap_lookup(1),size)) == NULL)
+#else
+ if ((mem = malloc(size)) == NULL)
+#endif
+ ckd_fail("malloc(%d) failed from %s(%d)\n", size,
+ caller_file, caller_line);
+
+ return mem;
+}
+
+
+void *
+__ckd_realloc__(void *ptr, size_t new_size,
+ const char *caller_file, int caller_line)
+{
+ void *mem;
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+ if ((mem = heap_realloc(heap_lookup(0),ptr, new_size)) == NULL) {
+#else
+ if ((mem = realloc(ptr, new_size)) == NULL) {
+#endif
+ ckd_fail("malloc(%d) failed from %s(%d)\n", new_size,
+ caller_file, caller_line);
+ }
+
+ return mem;
+}
+
+
+char *
+__ckd_salloc__(const char *orig, const char *caller_file,
+ int caller_line)
+{
+ size_t len;
+ char *buf;
+
+ len = strlen(orig) + 1;
+ buf = (char *) __ckd_malloc__(len, caller_file, caller_line);
+
+ strcpy(buf, orig);
+ return (buf);
+}
+
+
+void *
+__ckd_calloc_2d__(size_t d1, size_t d2, size_t elemsize,
+ const char *caller_file, int caller_line)
+{
+ char **ref, *mem;
+ size_t i, offset;
+
+ mem =
+ (char *) __ckd_calloc__(d1 * d2, elemsize, caller_file,
+ caller_line);
+ ref =
+ (char **) __ckd_malloc__(d1 * sizeof(void *), caller_file,
+ caller_line);
+
+ for (i = 0, offset = 0; i < d1; i++, offset += d2 * elemsize)
+ ref[i] = mem + offset;
+
+ return ref;
+}
+
+
+void
+ckd_free(void *ptr)
+{
+ if (ptr)
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+ heap_free(0,ptr);
+#else
+ free(ptr);
+#endif
+}
+
+void
+ckd_free_2d(void *tmpptr)
+{
+ void **ptr = (void **)tmpptr;
+ if (ptr)
+ ckd_free(ptr[0]);
+ ckd_free(ptr);
+}
+
+
+void *
+__ckd_calloc_3d__(size_t d1, size_t d2, size_t d3, size_t elemsize,
+ const char *caller_file, int caller_line)
+{
+ char ***ref1, **ref2, *mem;
+ size_t i, j, offset;
+
+ mem =
+ (char *) __ckd_calloc__(d1 * d2 * d3, elemsize, caller_file,
+ caller_line);
+ ref1 =
+ (char ***) __ckd_malloc__(d1 * sizeof(void **), caller_file,
+ caller_line);
+ ref2 =
+ (char **) __ckd_malloc__(d1 * d2 * sizeof(void *), caller_file,
+ caller_line);
+
+ for (i = 0, offset = 0; i < d1; i++, offset += d2)
+ ref1[i] = ref2 + offset;
+
+ offset = 0;
+ for (i = 0; i < d1; i++) {
+ for (j = 0; j < d2; j++) {
+ ref1[i][j] = mem + offset;
+ offset += d3 * elemsize;
+ }
+ }
+
+ return ref1;
+}
+
+
+void
+ckd_free_3d(void *inptr)
+{
+ void ***ptr = (void ***)inptr;
+
+ if (ptr && ptr[0])
+ ckd_free(ptr[0][0]);
+ if (ptr)
+ ckd_free(ptr[0]);
+ ckd_free(ptr);
+}
+
+
+void ****
+__ckd_calloc_4d__(size_t d1,
+ size_t d2,
+ size_t d3,
+ size_t d4,
+ size_t elem_size,
+ char *file,
+ int line)
+{
+ void *store;
+ void **tmp1;
+ void ***tmp2;
+ void ****out;
+ size_t i, j;
+
+ store = calloc(d1 * d2 * d3 * d4, elem_size);
+ if (store == NULL) {
+ E_FATAL("ckd_calloc_4d failed for caller at %s(%d) at %s(%d)\n",
+ file, line, __FILE__, __LINE__);
+ }
+
+ tmp1 = calloc(d1 * d2 * d3, sizeof(void *));
+ if (tmp1 == NULL) {
+ E_FATAL("ckd_calloc_4d failed for caller at %s(%d) at %s(%d)\n",
+ file, line, __FILE__, __LINE__);
+ }
+
+ tmp2 = ckd_calloc(d1 * d2, sizeof(void **));
+ if (tmp2 == NULL) {
+ E_FATAL("ckd_calloc_4d failed for caller at %s(%d) at %s(%d)\n",
+ file, line, __FILE__, __LINE__);
+ }
+
+ out = ckd_calloc(d1, sizeof(void ***));
+ if (out == NULL) {
+ E_FATAL("ckd_calloc_4d failed for caller at %s(%d) at %s(%d)\n",
+ file, line, __FILE__, __LINE__);
+ }
+
+ for (i = 0, j = 0; i < d1*d2*d3; i++, j += d4) {
+ tmp1[i] = &((char *)store)[j*elem_size];
+ }
+
+ for (i = 0, j = 0; i < d1*d2; i++, j += d3) {
+ tmp2[i] = &tmp1[j];
+ }
+
+ for (i = 0, j = 0; i < d1; i++, j += d2) {
+ out[i] = &tmp2[j];
+ }
+
+ return out;
+}
+
+void
+ckd_free_4d(void *inptr)
+{
+ void ****ptr = (void ****)inptr;
+ if (ptr == NULL)
+ return;
+ /* free the underlying store */
+ ckd_free(ptr[0][0][0]);
+
+ /* free the access overhead */
+ ckd_free(ptr[0][0]);
+ ckd_free(ptr[0]);
+ ckd_free(ptr);
+}
+
+/* Layers a 3d array access structure over a preallocated storage area */
+void *
+__ckd_alloc_3d_ptr(size_t d1,
+ size_t d2,
+ size_t d3,
+ void *store,
+ size_t elem_size,
+ char *file,
+ int line)
+{
+ void **tmp1;
+ void ***out;
+ size_t i, j;
+
+ tmp1 = __ckd_calloc__(d1 * d2, sizeof(void *), file, line);
+
+ out = __ckd_calloc__(d1, sizeof(void **), file, line);
+
+ for (i = 0, j = 0; i < d1*d2; i++, j += d3) {
+ tmp1[i] = &((char *)store)[j*elem_size];
+ }
+
+ for (i = 0, j = 0; i < d1; i++, j += d2) {
+ out[i] = &tmp1[j];
+ }
+
+ return out;
+}
+
+void *
+__ckd_alloc_2d_ptr(size_t d1,
+ size_t d2,
+ void *store,
+ size_t elem_size,
+ char *file,
+ int line)
+{
+ void **out;
+ size_t i, j;
+
+ out = __ckd_calloc__(d1, sizeof(void *), file, line);
+
+ for (i = 0, j = 0; i < d1; i++, j += d2) {
+ out[i] = &((char *)store)[j*elem_size];
+ }
+
+ return out;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cmd_ln.c -- Command line argument parsing.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ *
+ * 10-Sep-1998 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Changed strcasecmp() call in cmp_name() to strcmp_nocase() call.
+ *
+ * 15-Jul-1997 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added required arguments handling.
+ *
+ * 07-Dec-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created, based on Eric's implementation. Basically, combined several
+ * functions into one, eliminated validation, and simplified the interface.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996 4018)
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include "sphinxbase/cmd_ln.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/hash_table.h"
+#include "sphinxbase/case.h"
+#include "sphinxbase/strfuncs.h"
+
+typedef struct cmd_ln_val_s {
+ anytype_t val;
+ int type;
+} cmd_ln_val_t;
+
+struct cmd_ln_s {
+ int refcount;
+ hash_table_t *ht;
+ char **f_argv;
+ uint32 f_argc;
+};
+
+/** Global command-line, for non-reentrant API. */
+cmd_ln_t *global_cmdln;
+static void arg_dump_r(cmd_ln_t *cmdln, FILE * fp, arg_t const *defn, int32 doc);
+static cmd_ln_t * parse_options(cmd_ln_t *cmdln, const arg_t *defn, int32 argc, char* argv[], int32 strict);
+
+/*
+ * Find max length of name and default fields in the given defn array.
+ * Return #items in defn array.
+ */
+static int32
+arg_strlen(const arg_t * defn, int32 * namelen, int32 * deflen)
+{
+ int32 i, l;
+
+ *namelen = *deflen = 0;
+ for (i = 0; defn[i].name; i++) {
+ l = strlen(defn[i].name);
+ if (*namelen < l)
+ *namelen = l;
+
+ if (defn[i].deflt)
+ l = strlen(defn[i].deflt);
+ else
+ l = strlen("(null)");
+ /* E_INFO("string default, %s , name %s, length %d\n",defn[i].deflt,defn[i].name,l); */
+ if (*deflen < l)
+ *deflen = l;
+ }
+
+ return i;
+}
+
+
+static int32
+cmp_name(const void *a, const void *b)
+{
+ return (strcmp_nocase
+ ((* (arg_t**) a)->name,
+ (* (arg_t**) b)->name));
+}
+
+static const arg_t **
+arg_sort(const arg_t * defn, int32 n)
+{
+ const arg_t ** pos;
+ int32 i;
+
+ pos = (const arg_t **) ckd_calloc(n, sizeof(arg_t *));
+ for (i = 0; i < n; ++i)
+ pos[i] = &defn[i];
+ qsort(pos, n, sizeof(arg_t *), cmp_name);
+
+ return pos;
+}
+
+static size_t
+strnappend(char **dest, size_t *dest_allocation,
+ const char *source, size_t n)
+{
+ size_t source_len, required_allocation;
+
+ if (dest == NULL || dest_allocation == NULL)
+ return -1;
+ if (*dest == NULL && *dest_allocation != 0)
+ return -1;
+ if (source == NULL)
+ return *dest_allocation;
+
+ source_len = strlen(source);
+ if (n && n < source_len)
+ source_len = n;
+
+ required_allocation = (*dest ? strlen(*dest) : 0) + source_len + 1;
+ if (*dest_allocation < required_allocation) {
+ if (*dest_allocation == 0) {
+ *dest = ckd_calloc(required_allocation * 2, 1);
+ } else {
+ *dest = ckd_realloc(*dest, required_allocation * 2);
+ }
+ *dest_allocation = required_allocation * 2;
+ }
+
+ strncat(*dest, source, source_len);
+
+ return *dest_allocation;
+}
+
+static size_t
+strappend(char **dest, size_t *dest_allocation,
+ const char *source)
+{
+ return strnappend(dest, dest_allocation, source, 0);
+}
+
+static char*
+arg_resolve_env(const char *str)
+{
+ char *resolved_str = NULL;
+ char env_name[100];
+ const char *env_val;
+ size_t alloced = 0;
+ const char *i = str, *j;
+
+ /* calculate required resolved_str size */
+ do {
+ j = strstr(i, "$(");
+ if (j != NULL) {
+ if (j != i) {
+ strnappend(&resolved_str, &alloced, i, j - i);
+ i = j;
+ }
+ j = strchr(i + 2, ')');
+ if (j != NULL) {
+ if (j - (i + 2) < 100) {
+ strncpy(env_name, i + 2, j - (i + 2));
+ env_name[j - (i + 2)] = '\0';
+ #if !defined(_WIN32_WCE)
+ env_val = getenv(env_name);
+ if (env_val)
+ strappend(&resolved_str, &alloced, env_val);
+ #else
+ env_val = 0;
+ #endif
+ }
+ i = j + 1;
+ } else {
+ /* unclosed, copy and skip */
+ j = i + 2;
+ strnappend(&resolved_str, &alloced, i, j - i);
+ i = j;
+ }
+ } else {
+ strappend(&resolved_str, &alloced, i);
+ }
+ } while(j != NULL);
+
+ return resolved_str;
+}
+
+static void
+arg_dump_r(cmd_ln_t *cmdln, FILE * fp, const arg_t * defn, int32 doc)
+{
+ const arg_t **pos;
+ int32 i, l, n;
+ int32 namelen, deflen;
+ anytype_t *vp;
+ char const **array;
+
+ /* No definitions, do nothing. */
+ if (defn == NULL)
+ return;
+ if (fp == NULL)
+ return;
+
+ /* Find max lengths of name and default value fields, and #entries in defn */
+ n = arg_strlen(defn, &namelen, &deflen);
+ /* E_INFO("String length %d. Name length %d, Default Length %d\n",n, namelen, deflen); */
+ namelen = namelen & 0xfffffff8; /* Previous tab position */
+ deflen = deflen & 0xfffffff8; /* Previous tab position */
+
+ fprintf(fp, "[NAME]");
+ for (l = strlen("[NAME]"); l < namelen; l += 8)
+ fprintf(fp, "\t");
+ fprintf(fp, "\t[DEFLT]");
+ for (l = strlen("[DEFLT]"); l < deflen; l += 8)
+ fprintf(fp, "\t");
+
+ if (doc) {
+ fprintf(fp, "\t[DESCR]\n");
+ }
+ else {
+ fprintf(fp, "\t[VALUE]\n");
+ }
+
+ /* Print current configuration, sorted by name */
+ pos = arg_sort(defn, n);
+ for (i = 0; i < n; i++) {
+ fprintf(fp, "%s", pos[i]->name);
+ for (l = strlen(pos[i]->name); l < namelen; l += 8)
+ fprintf(fp, "\t");
+
+ fprintf(fp, "\t");
+ if (pos[i]->deflt) {
+ fprintf(fp, "%s", pos[i]->deflt);
+ l = strlen(pos[i]->deflt);
+ }
+ else
+ l = 0;
+ for (; l < deflen; l += 8)
+ fprintf(fp, "\t");
+
+ fprintf(fp, "\t");
+ if (doc) {
+ if (pos[i]->doc)
+ fprintf(fp, "%s", pos[i]->doc);
+ }
+ else {
+ vp = cmd_ln_access_r(cmdln, pos[i]->name);
+ if (vp) {
+ switch (pos[i]->type) {
+ case ARG_INTEGER:
+ case REQARG_INTEGER:
+ fprintf(fp, "%ld", vp->i);
+ break;
+ case ARG_FLOATING:
+ case REQARG_FLOATING:
+ fprintf(fp, "%e", vp->fl);
+ break;
+ case ARG_STRING:
+ case REQARG_STRING:
+ if (vp->ptr)
+ fprintf(fp, "%s", (char *)vp->ptr);
+ break;
+ case ARG_STRING_LIST:
+ array = (char const**)vp->ptr;
+ if (array)
+ for (l = 0; array[l] != 0; l++) {
+ fprintf(fp, "%s,", array[l]);
+ }
+ break;
+ case ARG_BOOLEAN:
+ case REQARG_BOOLEAN:
+ fprintf(fp, "%s", vp->i ? "yes" : "no");
+ break;
+ default:
+ E_ERROR("Unknown argument type: %d\n", pos[i]->type);
+ }
+ }
+ }
+
+ fprintf(fp, "\n");
+ }
+ ckd_free(pos);
+
+ fprintf(fp, "\n");
+ fflush(fp);
+}
+
+static char **
+parse_string_list(const char *str)
+{
+ int count, i, j;
+ const char *p;
+ char ** result;
+
+ p = str;
+ count = 1;
+ while (*p) {
+ if (*p == ',')
+ count++;
+ p++;
+ }
+ /* Should end with NULL */
+ result = (char **) ckd_calloc(count + 1, sizeof(char *));
+ p = str;
+ for (i = 0; i < count; i++) {
+ for (j = 0; p[j] != ',' && p[j] != 0; j++);
+ result[i] = ckd_calloc(j + 1, sizeof(char));
+ strncpy( result[i], p, j);
+ p = p + j + 1;
+ }
+ return result;
+}
+
+static cmd_ln_val_t *
+cmd_ln_val_init(int t, const char *str)
+{
+ cmd_ln_val_t *v;
+ anytype_t val;
+ char *e_str;
+
+ if (!str) {
+ /* For lack of a better default value. */
+ memset(&val, 0, sizeof(val));
+ }
+ else {
+ int valid = 1;
+ e_str = arg_resolve_env(str);
+
+ switch (t) {
+ case ARG_INTEGER:
+ case REQARG_INTEGER:
+ if (sscanf(e_str, "%ld", &val.i) != 1)
+ valid = 0;
+ break;
+ case ARG_FLOATING:
+ case REQARG_FLOATING:
+ if (e_str == NULL || e_str[0] == 0)
+ valid = 0;
+ val.fl = atof_c(e_str);
+ break;
+ case ARG_BOOLEAN:
+ case REQARG_BOOLEAN:
+ if ((e_str[0] == 'y') || (e_str[0] == 't') ||
+ (e_str[0] == 'Y') || (e_str[0] == 'T') || (e_str[0] == '1')) {
+ val.i = TRUE;
+ }
+ else if ((e_str[0] == 'n') || (e_str[0] == 'f') ||
+ (e_str[0] == 'N') || (e_str[0] == 'F') |
+ (e_str[0] == '0')) {
+ val.i = FALSE;
+ }
+ else {
+ E_ERROR("Unparsed boolean value '%s'\n", str);
+ valid = 0;
+ }
+ break;
+ case ARG_STRING:
+ case REQARG_STRING:
+ val.ptr = ckd_salloc(e_str);
+ break;
+ case ARG_STRING_LIST:
+ val.ptr = parse_string_list(e_str);
+ break;
+ default:
+ E_ERROR("Unknown argument type: %d\n", t);
+ valid = 0;
+ }
+
+ ckd_free(e_str);
+ if (valid == 0)
+ return NULL;
+ }
+
+ v = ckd_calloc(1, sizeof(*v));
+ memcpy(v, &val, sizeof(val));
+ v->type = t;
+
+ return v;
+}
+
+/*
+ * Handles option parsing for cmd_ln_parse_file_r() and cmd_ln_init()
+ * also takes care of storing argv.
+ * DO NOT call it from cmd_ln_parse_r()
+ */
+static cmd_ln_t *
+parse_options(cmd_ln_t *cmdln, const arg_t *defn, int32 argc, char* argv[], int32 strict)
+{
+ cmd_ln_t *new_cmdln;
+
+ new_cmdln = cmd_ln_parse_r(cmdln, defn, argc, argv, strict);
+ /* If this failed then clean up and return NULL. */
+ if (new_cmdln == NULL) {
+ int32 i;
+ for (i = 0; i < argc; ++i)
+ ckd_free(argv[i]);
+ ckd_free(argv);
+ return NULL;
+ }
+
+ /* Otherwise, we need to add the contents of f_argv to the new object. */
+ if (new_cmdln == cmdln) {
+ /* If we are adding to a previously passed-in cmdln, then
+ * store our allocated strings in its f_argv. */
+ new_cmdln->f_argv = ckd_realloc(new_cmdln->f_argv,
+ (new_cmdln->f_argc + argc)
+ * sizeof(*new_cmdln->f_argv));
+ memcpy(new_cmdln->f_argv + new_cmdln->f_argc, argv,
+ argc * sizeof(*argv));
+ ckd_free(argv);
+ new_cmdln->f_argc += argc;
+ }
+ else {
+ /* Otherwise, store f_argc and f_argv. */
+ new_cmdln->f_argc = argc;
+ new_cmdln->f_argv = argv;
+ }
+
+ return new_cmdln;
+}
+
+void
+cmd_ln_val_free(cmd_ln_val_t *val)
+{
+ int i;
+ if (val->type & ARG_STRING_LIST) {
+ char const** array = (char const **)val->val.ptr;
+ if (array) {
+ for (i = 0; array[i] != NULL; i++) {
+ ckd_free(val->val.ptr);
+ }
+ ckd_free(array);
+ }
+ }
+ if (val->type & ARG_STRING)
+ ckd_free(val->val.ptr);
+ ckd_free(val);
+}
+
+cmd_ln_t *
+cmd_ln_get(void)
+{
+ return global_cmdln;
+}
+
+void
+cmd_ln_appl_enter(int argc, char *argv[],
+ const char *default_argfn,
+ const arg_t * defn)
+{
+ /* Look for default or specified arguments file */
+ const char *str;
+
+ str = NULL;
+
+ if ((argc == 2) && (strcmp(argv[1], "help") == 0)) {
+ cmd_ln_print_help(stderr, defn);
+ exit(1);
+ }
+
+ if ((argc == 2) && (argv[1][0] != '-'))
+ str = argv[1];
+ else if (argc == 1) {
+ FILE *fp;
+ E_INFO("Looking for default argument file: %s\n", default_argfn);
+
+ if ((fp = fopen(default_argfn, "r")) == NULL) {
+ E_INFO("Can't find default argument file %s.\n",
+ default_argfn);
+ }
+ else {
+ str = default_argfn;
+ }
+ if (fp != NULL)
+ fclose(fp);
+ }
+
+
+ if (str) {
+ /* Build command line argument list from file */
+ E_INFO("Parsing command lines from file %s\n", str);
+ if (cmd_ln_parse_file(defn, str, TRUE)) {
+ E_INFOCONT("Usage:\n");
+ E_INFOCONT("\t%s argument-list, or\n", argv[0]);
+ E_INFOCONT("\t%s [argument-file] (default file: . %s)\n\n",
+ argv[0], default_argfn);
+ cmd_ln_print_help(stderr, defn);
+ exit(1);
+ }
+ }
+ else {
+ cmd_ln_parse(defn, argc, argv, TRUE);
+ }
+}
+
+void
+cmd_ln_appl_exit()
+{
+ cmd_ln_free();
+}
+
+
+cmd_ln_t *
+cmd_ln_parse_r(cmd_ln_t *inout_cmdln, const arg_t * defn, int32 argc, char *argv[], int strict)
+{
+ int32 i, j, n, argstart;
+ hash_table_t *defidx = NULL;
+ cmd_ln_t *cmdln;
+
+ /* Construct command-line object */
+ if (inout_cmdln == NULL) {
+ cmdln = ckd_calloc(1, sizeof(*cmdln));
+ cmdln->refcount = 1;
+ }
+ else
+ cmdln = inout_cmdln;
+
+ /* Build a hash table for argument definitions */
+ defidx = hash_table_new(50, 0);
+ if (defn) {
+ for (n = 0; defn[n].name; n++) {
+ void *v;
+
+ v = hash_table_enter(defidx, defn[n].name, (void *)&defn[n]);
+ if (strict && (v != &defn[n])) {
+ E_ERROR("Duplicate argument name in definition: %s\n", defn[n].name);
+ goto error;
+ }
+ }
+ }
+ else {
+ /* No definitions. */
+ n = 0;
+ }
+
+ /* Allocate memory for argument values */
+ if (cmdln->ht == NULL)
+ cmdln->ht = hash_table_new(n, 0 /* argument names are case-sensitive */ );
+
+
+ /* skip argv[0] if it doesn't start with dash */
+ argstart = 0;
+ if (argc > 0 && argv[0][0] != '-') {
+ argstart = 1;
+ }
+
+ /* Parse command line arguments (name-value pairs) */
+ for (j = argstart; j < argc; j += 2) {
+ arg_t *argdef;
+ cmd_ln_val_t *val;
+ void *v;
+
+ if (hash_table_lookup(defidx, argv[j], &v) < 0) {
+ if (strict) {
+ E_ERROR("Unknown argument name '%s'\n", argv[j]);
+ goto error;
+ }
+ else if (defn == NULL)
+ v = NULL;
+ else
+ continue;
+ }
+ argdef = v;
+
+ /* Enter argument value */
+ if (j + 1 >= argc) {
+ cmd_ln_print_help_r(cmdln, stderr, defn);
+ E_ERROR("Argument value for '%s' missing\n", argv[j]);
+ goto error;
+ }
+
+ if (argdef == NULL)
+ val = cmd_ln_val_init(ARG_STRING, argv[j + 1]);
+ else {
+ if ((val = cmd_ln_val_init(argdef->type, argv[j + 1])) == NULL) {
+ cmd_ln_print_help_r(cmdln, stderr, defn);
+ E_ERROR("Bad argument value for %s: %s\n", argv[j],
+ argv[j + 1]);
+ goto error;
+ }
+ }
+
+ if ((v = hash_table_enter(cmdln->ht, argv[j], (void *)val)) != (void *)val) {
+ if (strict) {
+ cmd_ln_val_free(val);
+ E_ERROR("Duplicate argument name in arguments: %s\n",
+ argdef->name);
+ goto error;
+ }
+ else {
+ v = hash_table_replace(cmdln->ht, argv[j], (void *)val);
+ cmd_ln_val_free((cmd_ln_val_t *)v);
+ }
+ }
+ }
+
+ /* Fill in default values, if any, for unspecified arguments */
+ for (i = 0; i < n; i++) {
+ cmd_ln_val_t *val;
+ void *v;
+
+ if (hash_table_lookup(cmdln->ht, defn[i].name, &v) < 0) {
+ if ((val = cmd_ln_val_init(defn[i].type, defn[i].deflt)) == NULL) {
+ E_ERROR
+ ("Bad default argument value for %s: %s\n",
+ defn[i].name, defn[i].deflt);
+ goto error;
+ }
+ hash_table_enter(cmdln->ht, defn[i].name, (void *)val);
+ }
+ }
+
+ /* Check for required arguments; exit if any missing */
+ j = 0;
+ for (i = 0; i < n; i++) {
+ if (defn[i].type & ARG_REQUIRED) {
+ void *v;
+ if (hash_table_lookup(cmdln->ht, defn[i].name, &v) != 0)
+ E_ERROR("Missing required argument %s\n", defn[i].name);
+ }
+ }
+ if (j > 0) {
+ cmd_ln_print_help_r(cmdln, stderr, defn);
+ goto error;
+ }
+
+ if (strict && argc == 1) {
+ E_ERROR("No arguments given, available options are:\n");
+ cmd_ln_print_help_r(cmdln, stderr, defn);
+ if (defidx)
+ hash_table_free(defidx);
+ if (inout_cmdln == NULL)
+ cmd_ln_free_r(cmdln);
+ return NULL;
+ }
+
+#ifndef _WIN32_WCE
+ /* Set up logging. We need to do this earlier because we want to dump
+ * the information to the configured log, not to the stderr. */
+ if (cmd_ln_exists_r(cmdln, "-logfn") && cmd_ln_str_r(cmdln, "-logfn"))
+ err_set_logfile(cmd_ln_str_r(cmdln, "-logfn"));
+
+ /* Echo command line */
+ E_INFO("Parsing command line:\n");
+ for (i = 0; i < argc; i++) {
+ if (argv[i][0] == '-')
+ E_INFOCONT("\\\n\t");
+ E_INFOCONT("%s ", argv[i]);
+ }
+ E_INFOCONT("\n\n");
+ fflush(stderr);
+
+ /* Print configuration */
+ E_INFOCONT("Current configuration:\n");
+ arg_dump_r(cmdln, err_get_logfp(), defn, 0);
+#endif
+
+ hash_table_free(defidx);
+ return cmdln;
+
+ error:
+ if (defidx)
+ hash_table_free(defidx);
+ if (inout_cmdln == NULL)
+ cmd_ln_free_r(cmdln);
+ E_ERROR("Failed to parse arguments list\n");
+ return NULL;
+}
+
+cmd_ln_t *
+cmd_ln_init(cmd_ln_t *inout_cmdln, const arg_t *defn, int32 strict, ...)
+{
+ va_list args;
+ const char *arg, *val;
+ char **f_argv;
+ int32 f_argc;
+
+ va_start(args, strict);
+ f_argc = 0;
+ while ((arg = va_arg(args, const char *))) {
+ ++f_argc;
+ val = va_arg(args, const char*);
+ if (val == NULL) {
+ E_ERROR("Number of arguments must be even!\n");
+ return NULL;
+ }
+ ++f_argc;
+ }
+ va_end(args);
+
+ /* Now allocate f_argv */
+ f_argv = ckd_calloc(f_argc, sizeof(*f_argv));
+ va_start(args, strict);
+ f_argc = 0;
+ while ((arg = va_arg(args, const char *))) {
+ f_argv[f_argc] = ckd_salloc(arg);
+ ++f_argc;
+ val = va_arg(args, const char*);
+ f_argv[f_argc] = ckd_salloc(val);
+ ++f_argc;
+ }
+ va_end(args);
+
+ return parse_options(inout_cmdln, defn, f_argc, f_argv, strict);
+}
+
+int
+cmd_ln_parse(const arg_t * defn, int32 argc, char *argv[], int strict)
+{
+ cmd_ln_t *cmdln;
+
+ cmdln = cmd_ln_parse_r(global_cmdln, defn, argc, argv, strict);
+ if (cmdln == NULL) {
+ /* Old, bogus behaviour... */
+ E_ERROR("Failed to parse arguments list, forced exit\n");
+ exit(-1);
+ }
+ /* Initialize global_cmdln if not present. */
+ if (global_cmdln == NULL) {
+ global_cmdln = cmdln;
+ }
+ return 0;
+}
+
+cmd_ln_t *
+cmd_ln_parse_file_r(cmd_ln_t *inout_cmdln, const arg_t * defn, const char *filename, int32 strict)
+{
+ FILE *file;
+ int argc;
+ int argv_size;
+ char *str;
+ int arg_max_length = 512;
+ int len = 0;
+ int quoting, ch;
+ char **f_argv;
+ int rv = 0;
+ const char separator[] = " \t\r\n";
+
+ if ((file = fopen(filename, "r")) == NULL) {
+ E_ERROR("Cannot open configuration file %s for reading\n",
+ filename);
+ return NULL;
+ }
+
+ ch = fgetc(file);
+ /* Skip to the next interesting character */
+ for (; ch != EOF && strchr(separator, ch); ch = fgetc(file)) ;
+
+ if (ch == EOF) {
+ fclose(file);
+ return NULL;
+ }
+
+ /*
+ * Initialize default argv, argc, and argv_size.
+ */
+ argv_size = 10;
+ argc = 0;
+ f_argv = ckd_calloc(argv_size, sizeof(char *));
+ /* Silently make room for \0 */
+ str = ckd_calloc(arg_max_length + 1, sizeof(char));
+ quoting = 0;
+
+ do {
+ /* Handle arguments that are commented out */
+ if (len == 0 && argc % 2 == 0) {
+ while (ch == '#') {
+ /* Skip everything until newline */
+ for (ch = fgetc(file); ch != EOF && ch != '\n'; ch = fgetc(file)) ;
+ /* Skip to the next interesting character */
+ for (ch = fgetc(file); ch != EOF && strchr(separator, ch); ch = fgetc(file)) ;
+ }
+
+ /* Check if we are at the last line (without anything interesting in it) */
+ if (ch == EOF)
+ break;
+ }
+
+ /* Handle quoted arguments */
+ if (ch == '"' || ch == '\'') {
+ if (quoting == ch) /* End a quoted section with the same type */
+ quoting = 0;
+ else if (quoting) {
+ E_ERROR("Nesting quotations is not supported!\n");
+ rv = 1;
+ break;
+ }
+ else
+ quoting = ch; /* Start a quoted section */
+ }
+ else if (ch == EOF || (!quoting && strchr(separator, ch))) {
+ /* Reallocate argv so it is big enough to contain all the arguments */
+ if (argc >= argv_size) {
+ char **tmp_argv;
+ if (!(tmp_argv =
+ ckd_realloc(f_argv, argv_size * 2 * sizeof(char *)))) {
+ rv = 1;
+ break;
+ }
+ f_argv = tmp_argv;
+ argv_size *= 2;
+ }
+ /* Add the string to the list of arguments */
+ f_argv[argc] = ckd_salloc(str);
+ len = 0;
+ str[0] = '\0';
+ argc++;
+
+ if (quoting)
+ E_WARN("Unclosed quotation, having EOF close it...\n");
+
+ /* Skip to the next interesting character */
+ for (; ch != EOF && strchr(separator, ch); ch = fgetc(file)) ;
+
+ if (ch == EOF)
+ break;
+
+ /* We already have the next character */
+ continue;
+ }
+ else {
+ if (len >= arg_max_length) {
+ /* Make room for more chars (including the \0 !) */
+ char *tmp_str = str;
+ if ((tmp_str = ckd_realloc(str, (1 + arg_max_length * 2) * sizeof(char))) == NULL) {
+ rv = 1;
+ break;
+ }
+ str = tmp_str;
+ arg_max_length *= 2;
+ }
+ /* Add the char to the argument string */
+ str[len++] = ch;
+ /* Always null terminate */
+ str[len] = '\0';
+ }
+
+ ch = fgetc(file);
+ } while (1);
+
+ fclose(file);
+
+ ckd_free(str);
+
+ if (rv) {
+ for (ch = 0; ch < argc; ++ch)
+ ckd_free(f_argv[ch]);
+ ckd_free(f_argv);
+ return NULL;
+ }
+
+ return parse_options(inout_cmdln, defn, argc, f_argv, strict);
+}
+
+int
+cmd_ln_parse_file(const arg_t * defn, const char *filename, int32 strict)
+{
+ cmd_ln_t *cmdln;
+
+ cmdln = cmd_ln_parse_file_r(global_cmdln, defn, filename, strict);
+ if (cmdln == NULL) {
+ return -1;
+ }
+ /* Initialize global_cmdln if not present. */
+ if (global_cmdln == NULL) {
+ global_cmdln = cmdln;
+ }
+ return 0;
+}
+
+void
+cmd_ln_print_help_r(cmd_ln_t *cmdln, FILE * fp, arg_t const* defn)
+{
+ if (defn == NULL)
+ return;
+ fprintf(fp, "Arguments list definition:\n");
+ arg_dump_r(cmdln, fp, defn, 1);
+ fflush(fp);
+}
+
+int
+cmd_ln_exists_r(cmd_ln_t *cmdln, const char *name)
+{
+ void *val;
+ if (cmdln == NULL)
+ return FALSE;
+ return (hash_table_lookup(cmdln->ht, name, &val) == 0);
+}
+
+anytype_t *
+cmd_ln_access_r(cmd_ln_t *cmdln, const char *name)
+{
+ void *val;
+ if (hash_table_lookup(cmdln->ht, name, &val) < 0) {
+ E_ERROR("Unknown argument: %s\n", name);
+ return NULL;
+ }
+ return (anytype_t *)val;
+}
+
+char const *
+cmd_ln_str_r(cmd_ln_t *cmdln, char const *name)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL)
+ return NULL;
+ return (char const *)val->ptr;
+}
+
+char const **
+cmd_ln_str_list_r(cmd_ln_t *cmdln, char const *name)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL)
+ return NULL;
+ return (char const **)val->ptr;
+}
+
+long
+cmd_ln_int_r(cmd_ln_t *cmdln, char const *name)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL)
+ return 0L;
+ return val->i;
+}
+
+double
+cmd_ln_float_r(cmd_ln_t *cmdln, char const *name)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL)
+ return 0.0;
+ return val->fl;
+}
+
+void
+cmd_ln_set_str_r(cmd_ln_t *cmdln, char const *name, char const *str)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL) {
+ E_ERROR("Unknown argument: %s\n", name);
+ return;
+ }
+ ckd_free(val->ptr);
+ if (str == NULL)
+ val->ptr = NULL;
+ else
+ val->ptr = ckd_salloc(str);
+}
+
+void
+cmd_ln_set_int_r(cmd_ln_t *cmdln, char const *name, long iv)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL) {
+ E_ERROR("Unknown argument: %s\n", name);
+ return;
+ }
+ val->i = iv;
+}
+
+void
+cmd_ln_set_float_r(cmd_ln_t *cmdln, char const *name, double fv)
+{
+ anytype_t *val;
+ val = cmd_ln_access_r(cmdln, name);
+ if (val == NULL) {
+ E_ERROR("Unknown argument: %s\n", name);
+ return;
+ }
+ val->fl = fv;
+}
+
+cmd_ln_t *
+cmd_ln_retain(cmd_ln_t *cmdln)
+{
+ ++cmdln->refcount;
+ return cmdln;
+}
+
+int
+cmd_ln_free_r(cmd_ln_t *cmdln)
+{
+ if (cmdln == NULL)
+ return 0;
+ if (--cmdln->refcount > 0)
+ return cmdln->refcount;
+
+ if (cmdln->ht) {
+ glist_t entries;
+ gnode_t *gn;
+ int32 n;
+
+ entries = hash_table_tolist(cmdln->ht, &n);
+ for (gn = entries; gn; gn = gnode_next(gn)) {
+ hash_entry_t *e = gnode_ptr(gn);
+ cmd_ln_val_free((cmd_ln_val_t *)e->val);
+ }
+ glist_free(entries);
+ hash_table_free(cmdln->ht);
+ cmdln->ht = NULL;
+ }
+
+ if (cmdln->f_argv) {
+ int32 i;
+ for (i = 0; i < cmdln->f_argc; ++i) {
+ ckd_free(cmdln->f_argv[i]);
+ }
+ ckd_free(cmdln->f_argv);
+ cmdln->f_argv = NULL;
+ cmdln->f_argc = 0;
+ }
+ ckd_free(cmdln);
+ return 0;
+}
+
+void
+cmd_ln_free(void)
+{
+ cmd_ln_free_r(global_cmdln);
+ global_cmdln = NULL;
+}
--- /dev/null
+/****************************************************************
+ *
+ * The author of this software is David M. Gay.
+ *
+ * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software and in all copies of the supporting
+ * documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ ***************************************************************/
+
+/* Please send bug reports to David M. Gay (dmg at acm dot org,
+ * with " at " changed at "@" and " dot " changed to "."). */
+
+/* On a machine with IEEE extended-precision registers, it is
+ * necessary to specify double-precision (53-bit) rounding precision
+ * before invoking strtod or dtoa. If the machine uses (the equivalent
+ * of) Intel 80x87 arithmetic, the call
+ * _control87(PC_53, MCW_PC);
+ * does this with many compilers. Whether this or another call is
+ * appropriate depends on the compiler; for this to work, it may be
+ * necessary to #include "float.h" or another system-dependent header
+ * file.
+ */
+
+/* strtod for IEEE-, VAX-, and IBM-arithmetic machines.
+ *
+ * This strtod returns a nearest machine number to the input decimal
+ * string (or sets errno to ERANGE). With IEEE arithmetic, ties are
+ * broken by the IEEE round-even rule. Otherwise ties are broken by
+ * biased rounding (add half and chop).
+ *
+ * Inspired loosely by William D. Clinger's paper "How to Read Floating
+ * Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101].
+ *
+ * Modifications:
+ *
+ * 1. We only require IEEE, IBM, or VAX double-precision
+ * arithmetic (not IEEE double-extended).
+ * 2. We get by with floating-point arithmetic in a case that
+ * Clinger missed -- when we're computing d * 10^n
+ * for a small integer d and the integer n is not too
+ * much larger than 22 (the maximum integer k for which
+ * we can represent 10^k exactly), we may be able to
+ * compute (d*10^k) * 10^(e-k) with just one roundoff.
+ * 3. Rather than a bit-at-a-time adjustment of the binary
+ * result in the hard case, we use floating-point
+ * arithmetic to determine the adjustment to within
+ * one bit; only in really hard cases do we need to
+ * compute a second residual.
+ * 4. Because of 3., we don't need a large table of powers of 10
+ * for ten-to-e (just some small tables, e.g. of 10^k
+ * for 0 <= k <= 22).
+ */
+
+/*
+ * This file has been modified to remove dtoa() and all
+ * non-reentrancy. This makes it slower, but it also makes life a lot
+ * easier on Windows and other platforms without static lock
+ * initializers (grumble).
+ */
+
+/* Added by dhuggins@cs.cmu.edu to use autoconf results. */
+/* We do not care about the VAX. */
+#include "config.h"
+#ifdef WORDS_BIGENDIAN
+#define IEEE_MC68k
+#else
+#define IEEE_8087
+#endif
+#ifndef HAVE_LONG_LONG
+#define NO_LONG_LONG
+#endif
+#define Omit_Private_Memory
+#include "sphinxbase/ckd_alloc.h"
+#undef USE_LOCALE
+
+/* Correct totally bogus typedefs in this code. */
+#include "sphinxbase/prim_type.h"
+#define Long int32 /* ZOMG */
+#define ULong uint32 /* WTF */
+
+/*
+ * #define IEEE_8087 for IEEE-arithmetic machines where the least
+ * significant byte has the lowest address.
+ * #define IEEE_MC68k for IEEE-arithmetic machines where the most
+ * significant byte has the lowest address.
+ * #define Long int on machines with 32-bit ints and 64-bit longs.
+ * #define IBM for IBM mainframe-style floating-point arithmetic.
+ * #define VAX for VAX-style floating-point arithmetic (D_floating).
+ * #define No_leftright to omit left-right logic in fast floating-point
+ * computation of dtoa.
+ * #define Honor_FLT_ROUNDS if FLT_ROUNDS can assume the values 2 or 3
+ * and strtod and dtoa should round accordingly.
+ * #define Check_FLT_ROUNDS if FLT_ROUNDS can assume the values 2 or 3
+ * and Honor_FLT_ROUNDS is not #defined.
+ * #define RND_PRODQUOT to use rnd_prod and rnd_quot (assembly routines
+ * that use extended-precision instructions to compute rounded
+ * products and quotients) with IBM.
+ * #define ROUND_BIASED for IEEE-format with biased rounding.
+ * #define Inaccurate_Divide for IEEE-format with correctly rounded
+ * products but inaccurate quotients, e.g., for Intel i860.
+ * #define NO_LONG_LONG on machines that do not have a "long long"
+ * integer type (of >= 64 bits). On such machines, you can
+ * #define Just_16 to store 16 bits per 32-bit Long when doing
+ * high-precision integer arithmetic. Whether this speeds things
+ * up or slows things down depends on the machine and the number
+ * being converted. If long long is available and the name is
+ * something other than "long long", #define Llong to be the name,
+ * and if "unsigned Llong" does not work as an unsigned version of
+ * Llong, #define #ULLong to be the corresponding unsigned type.
+ * #define KR_headers for old-style C function headers.
+ * #define Bad_float_h if your system lacks a float.h or if it does not
+ * define some or all of DBL_DIG, DBL_MAX_10_EXP, DBL_MAX_EXP,
+ * FLT_RADIX, FLT_ROUNDS, and DBL_MAX.
+ * #define MALLOC your_malloc, where your_malloc(n) acts like malloc(n)
+ * if memory is available and otherwise does something you deem
+ * appropriate. If MALLOC is undefined, malloc will be invoked
+ * directly -- and assumed always to succeed.
+ * #define Omit_Private_Memory to omit logic (added Jan. 1998) for making
+ * memory allocations from a private pool of memory when possible.
+ * When used, the private pool is PRIVATE_MEM bytes long: 2304 bytes,
+ * unless #defined to be a different length. This default length
+ * suffices to get rid of MALLOC calls except for unusual cases,
+ * such as decimal-to-binary conversion of a very long string of
+ * digits. The longest string dtoa can return is about 751 bytes
+ * long. For conversions by strtod of strings of 800 digits and
+ * all dtoa conversions in single-threaded executions with 8-byte
+ * pointers, PRIVATE_MEM >= 7400 appears to suffice; with 4-byte
+ * pointers, PRIVATE_MEM >= 7112 appears adequate.
+ * #define NO_INFNAN_CHECK if you do not wish to have INFNAN_CHECK
+ * #defined automatically on IEEE systems. On such systems,
+ * when INFNAN_CHECK is #defined, strtod checks
+ * for Infinity and NaN (case insensitively). On some systems
+ * (e.g., some HP systems), it may be necessary to #define NAN_WORD0
+ * appropriately -- to the most significant word of a quiet NaN.
+ * (On HP Series 700/800 machines, -DNAN_WORD0=0x7ff40000 works.)
+ * When INFNAN_CHECK is #defined and No_Hex_NaN is not #defined,
+ * strtod also accepts (case insensitively) strings of the form
+ * NaN(x), where x is a string of hexadecimal digits and spaces;
+ * if there is only one string of hexadecimal digits, it is taken
+ * for the 52 fraction bits of the resulting NaN; if there are two
+ * or more strings of hex digits, the first is for the high 20 bits,
+ * the second and subsequent for the low 32 bits, with intervening
+ * white space ignored; but if this results in none of the 52
+ * fraction bits being on (an IEEE Infinity symbol), then NAN_WORD0
+ * and NAN_WORD1 are used instead.
+ * #define MULTIPLE_THREADS if the system offers preemptively scheduled
+ * multiple threads. In this case, you must provide (or suitably
+ * #define) two locks, acquired by ACQUIRE_DTOA_LOCK(n) and freed
+ * by FREE_DTOA_LOCK(n) for n = 0 or 1. (The second lock, accessed
+ * in pow5mult, ensures lazy evaluation of only one copy of high
+ * powers of 5; omitting this lock would introduce a small
+ * probability of wasting memory, but would otherwise be harmless.)
+ * You must also invoke freedtoa(s) to free the value s returned by
+ * dtoa. You may do so whether or not MULTIPLE_THREADS is #defined.
+ * #define NO_IEEE_Scale to disable new (Feb. 1997) logic in strtod that
+ * avoids underflows on inputs whose result does not underflow.
+ * If you #define NO_IEEE_Scale on a machine that uses IEEE-format
+ * floating-point numbers and flushes underflows to zero rather
+ * than implementing gradual underflow, then you must also #define
+ * Sudden_Underflow.
+ * #define YES_ALIAS to permit aliasing certain double values with
+ * arrays of ULongs. This leads to slightly better code with
+ * some compilers and was always used prior to 19990916, but it
+ * is not strictly legal and can cause trouble with aggressively
+ * optimizing compilers (e.g., gcc 2.95.1 under -O2).
+ * #define USE_LOCALE to use the current locale's decimal_point value.
+ * #define SET_INEXACT if IEEE arithmetic is being used and extra
+ * computation should be done to set the inexact flag when the
+ * result is inexact and avoid setting inexact when the result
+ * is exact. In this case, dtoa.c must be compiled in
+ * an environment, perhaps provided by #include "dtoa.c" in a
+ * suitable wrapper, that defines two functions,
+ * int get_inexact(void);
+ * void clear_inexact(void);
+ * such that get_inexact() returns a nonzero value if the
+ * inexact bit is already set, and clear_inexact() sets the
+ * inexact bit to 0. When SET_INEXACT is #defined, strtod
+ * also does extra computations to set the underflow and overflow
+ * flags when appropriate (i.e., when the result is tiny and
+ * inexact or when it is a numeric value rounded to +-infinity).
+ * #define NO_ERRNO if strtod should not assign errno = ERANGE when
+ * the result overflows to +-Infinity or underflows to 0.
+ */
+
+#ifndef Long
+#define Long long
+#endif
+#ifndef ULong
+typedef unsigned Long ULong;
+#endif
+
+#ifdef DEBUG
+#include "stdio.h"
+#define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);}
+#endif
+
+#include "stdlib.h"
+#include "string.h"
+
+#ifdef USE_LOCALE
+#include "locale.h"
+#endif
+
+/* Private memory and other non-reentrant stuff removed. */
+
+#undef IEEE_Arith
+#undef Avoid_Underflow
+#ifdef IEEE_MC68k
+#define IEEE_Arith
+#endif
+#ifdef IEEE_8087
+#define IEEE_Arith
+#endif
+
+#ifdef IEEE_Arith
+#ifndef NO_INFNAN_CHECK
+#undef INFNAN_CHECK
+#define INFNAN_CHECK
+#endif
+#else
+#undef INFNAN_CHECK
+#endif
+
+#include "errno.h"
+
+#ifdef Bad_float_h
+
+#ifdef IEEE_Arith
+#define DBL_DIG 15
+#define DBL_MAX_10_EXP 308
+#define DBL_MAX_EXP 1024
+#define FLT_RADIX 2
+#endif /*IEEE_Arith*/
+
+#ifdef IBM
+#define DBL_DIG 16
+#define DBL_MAX_10_EXP 75
+#define DBL_MAX_EXP 63
+#define FLT_RADIX 16
+#define DBL_MAX 7.2370055773322621e+75
+#endif
+
+#ifdef VAX
+#define DBL_DIG 16
+#define DBL_MAX_10_EXP 38
+#define DBL_MAX_EXP 127
+#define FLT_RADIX 2
+#define DBL_MAX 1.7014118346046923e+38
+#endif
+
+#ifndef LONG_MAX
+#define LONG_MAX 2147483647
+#endif
+
+#else /* ifndef Bad_float_h */
+#include "float.h"
+#endif /* Bad_float_h */
+
+#ifndef __MATH_H__
+#include "math.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef CONST
+#ifdef KR_headers
+#define CONST /* blank */
+#else
+#define CONST const
+#endif
+#endif
+
+
+#if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1
+Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined.
+#endif
+
+/** Union to extract the bytes of a double */
+typedef union { double d; ULong L[2]; } U;
+
+#ifdef YES_ALIAS
+#define dval(x) x
+#ifdef IEEE_8087
+#define word0(x) ((ULong *)&x)[1]
+#define word1(x) ((ULong *)&x)[0]
+#else
+#define word0(x) ((ULong *)&x)[0]
+#define word1(x) ((ULong *)&x)[1]
+#endif
+#else
+#ifdef IEEE_8087
+#define word0(x) ((U*)&x)->L[1]
+#define word1(x) ((U*)&x)->L[0]
+#else
+#define word0(x) ((U*)&x)->L[0]
+#define word1(x) ((U*)&x)->L[1]
+#endif
+#define dval(x) ((U*)&x)->d
+#endif
+
+/* The following definition of Storeinc is appropriate for MIPS processors.
+ * An alternative that might be better on some machines is
+ * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff)
+ */
+#if defined(IEEE_8087) + defined(VAX)
+#define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \
+((unsigned short *)a)[0] = (unsigned short)c, a++)
+#else
+#define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b, \
+((unsigned short *)a)[1] = (unsigned short)c, a++)
+#endif
+
+/* #define P DBL_MANT_DIG */
+/* Ten_pmax = floor(P*log(2)/log(5)) */
+/* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */
+/* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */
+/* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */
+
+#ifdef IEEE_Arith
+#define Exp_shift 20
+#define Exp_shift1 20
+#define Exp_msk1 0x100000
+#define Exp_msk11 0x100000
+#define Exp_mask 0x7ff00000
+#define P 53
+#define Bias 1023
+#define Emin (-1022)
+#define Exp_1 0x3ff00000
+#define Exp_11 0x3ff00000
+#define Ebits 11
+#define Frac_mask 0xfffff
+#define Frac_mask1 0xfffff
+#define Ten_pmax 22
+#define Bletch 0x10
+#define Bndry_mask 0xfffff
+#define Bndry_mask1 0xfffff
+#define LSB 1
+#define Sign_bit 0x80000000
+#define Log2P 1
+#define Tiny0 0
+#define Tiny1 1
+#define Quick_max 14
+#define Int_max 14
+#ifndef NO_IEEE_Scale
+#define Avoid_Underflow
+#ifdef Flush_Denorm /* debugging option */
+#undef Sudden_Underflow
+#endif
+#endif
+
+#ifndef Flt_Rounds
+#ifdef FLT_ROUNDS
+#define Flt_Rounds FLT_ROUNDS
+#else
+#define Flt_Rounds 1
+#endif
+#endif /*Flt_Rounds*/
+
+#ifdef Honor_FLT_ROUNDS
+#define Rounding rounding
+#undef Check_FLT_ROUNDS
+#define Check_FLT_ROUNDS
+#else
+#define Rounding Flt_Rounds
+#endif
+
+#else /* ifndef IEEE_Arith */
+#undef Check_FLT_ROUNDS
+#undef Honor_FLT_ROUNDS
+#undef SET_INEXACT
+#undef Sudden_Underflow
+#define Sudden_Underflow
+#ifdef IBM
+#undef Flt_Rounds
+#define Flt_Rounds 0
+#define Exp_shift 24
+#define Exp_shift1 24
+#define Exp_msk1 0x1000000
+#define Exp_msk11 0x1000000
+#define Exp_mask 0x7f000000
+#define P 14
+#define Bias 65
+#define Exp_1 0x41000000
+#define Exp_11 0x41000000
+#define Ebits 8 /* exponent has 7 bits, but 8 is the right value in b2d */
+#define Frac_mask 0xffffff
+#define Frac_mask1 0xffffff
+#define Bletch 4
+#define Ten_pmax 22
+#define Bndry_mask 0xefffff
+#define Bndry_mask1 0xffffff
+#define LSB 1
+#define Sign_bit 0x80000000
+#define Log2P 4
+#define Tiny0 0x100000
+#define Tiny1 0
+#define Quick_max 14
+#define Int_max 15
+#else /* VAX */
+#undef Flt_Rounds
+#define Flt_Rounds 1
+#define Exp_shift 23
+#define Exp_shift1 7
+#define Exp_msk1 0x80
+#define Exp_msk11 0x800000
+#define Exp_mask 0x7f80
+#define P 56
+#define Bias 129
+#define Exp_1 0x40800000
+#define Exp_11 0x4080
+#define Ebits 8
+#define Frac_mask 0x7fffff
+#define Frac_mask1 0xffff007f
+#define Ten_pmax 24
+#define Bletch 2
+#define Bndry_mask 0xffff007f
+#define Bndry_mask1 0xffff007f
+#define LSB 0x10000
+#define Sign_bit 0x8000
+#define Log2P 1
+#define Tiny0 0x80
+#define Tiny1 0
+#define Quick_max 15
+#define Int_max 15
+#endif /* IBM, VAX */
+#endif /* IEEE_Arith */
+
+#ifndef IEEE_Arith
+#define ROUND_BIASED
+#endif
+
+#ifdef RND_PRODQUOT
+#define rounded_product(a,b) a = rnd_prod(a, b)
+#define rounded_quotient(a,b) a = rnd_quot(a, b)
+#ifdef KR_headers
+extern double rnd_prod(), rnd_quot();
+#else
+extern double rnd_prod(double, double), rnd_quot(double, double);
+#endif
+#else
+#define rounded_product(a,b) a *= b
+#define rounded_quotient(a,b) a /= b
+#endif
+
+#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
+#define Big1 0xffffffff
+
+#ifndef Pack_32
+#define Pack_32
+#endif
+
+#ifdef KR_headers
+#define FFFFFFFF ((((unsigned long)0xffff)<<16)|(unsigned long)0xffff)
+#else
+#define FFFFFFFF 0xffffffffUL
+#endif
+
+#ifdef NO_LONG_LONG
+#undef ULLong
+#ifdef Just_16
+#undef Pack_32
+/* When Pack_32 is not defined, we store 16 bits per 32-bit Long.
+ * This makes some inner loops simpler and sometimes saves work
+ * during multiplications, but it often seems to make things slightly
+ * slower. Hence the default is now to store 32 bits per Long.
+ */
+#endif
+#else /* long long available */
+#ifndef Llong
+#define Llong long long
+#endif
+#ifndef ULLong
+#define ULLong unsigned Llong
+#endif
+#endif /* NO_LONG_LONG */
+
+#ifndef MULTIPLE_THREADS
+#define ACQUIRE_DTOA_LOCK(n) /*nothing*/
+#define FREE_DTOA_LOCK(n) /*nothing*/
+#endif
+
+#define Kmax 15
+
+#ifdef __cplusplus
+extern "C" double sb_strtod(const char *s00, char **se);
+#endif
+
+ struct
+Bigint {
+ struct Bigint *next;
+ int k, maxwds, sign, wds;
+ ULong x[1];
+ };
+
+ typedef struct Bigint Bigint;
+
+ static Bigint *
+Balloc
+#ifdef KR_headers
+ (k) int k;
+#else
+ (int k)
+#endif
+{
+ int x;
+ size_t len;
+ Bigint *rv;
+
+ x = 1 << k;
+ len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
+ /sizeof(double);
+ rv = ckd_malloc(len*sizeof(double));
+ rv->k = k;
+ rv->maxwds = x;
+ rv->sign = rv->wds = 0;
+ return rv;
+}
+
+ static void
+Bfree
+#ifdef KR_headers
+ (v) Bigint *v;
+#else
+ (Bigint *v)
+#endif
+{
+ ckd_free(v);
+}
+
+#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
+y->wds*sizeof(Long) + 2*sizeof(int))
+
+ static Bigint *
+multadd
+#ifdef KR_headers
+ (b, m, a) Bigint *b; int m, a;
+#else
+ (Bigint *b, int m, int a) /* multiply by m and add a */
+#endif
+{
+ int i, wds;
+#ifdef ULLong
+ ULong *x;
+ ULLong carry, y;
+#else
+ ULong carry, *x, y;
+#ifdef Pack_32
+ ULong xi, z;
+#endif
+#endif
+ Bigint *b1;
+
+ wds = b->wds;
+ x = b->x;
+ i = 0;
+ carry = a;
+ do {
+#ifdef ULLong
+ y = *x * (ULLong)m + carry;
+ carry = y >> 32;
+ *x++ = y & FFFFFFFF;
+#else
+#ifdef Pack_32
+ xi = *x;
+ y = (xi & 0xffff) * m + carry;
+ z = (xi >> 16) * m + (y >> 16);
+ carry = z >> 16;
+ *x++ = (z << 16) + (y & 0xffff);
+#else
+ y = *x * m + carry;
+ carry = y >> 16;
+ *x++ = y & 0xffff;
+#endif
+#endif
+ }
+ while(++i < wds);
+ if (carry) {
+ if (wds >= b->maxwds) {
+ b1 = Balloc(b->k+1);
+ Bcopy(b1, b);
+ Bfree(b);
+ b = b1;
+ }
+ b->x[wds++] = carry;
+ b->wds = wds;
+ }
+ return b;
+ }
+
+ static Bigint *
+s2b
+#ifdef KR_headers
+ (s, nd0, nd, y9) CONST char *s; int nd0, nd; ULong y9;
+#else
+ (CONST char *s, int nd0, int nd, ULong y9)
+#endif
+{
+ Bigint *b;
+ int i, k;
+ Long x, y;
+
+ x = (nd + 8) / 9;
+ for(k = 0, y = 1; x > y; y <<= 1, k++) ;
+#ifdef Pack_32
+ b = Balloc(k);
+ b->x[0] = y9;
+ b->wds = 1;
+#else
+ b = Balloc(k+1);
+ b->x[0] = y9 & 0xffff;
+ b->wds = (b->x[1] = y9 >> 16) ? 2 : 1;
+#endif
+
+ i = 9;
+ if (9 < nd0) {
+ s += 9;
+ do b = multadd(b, 10, *s++ - '0');
+ while(++i < nd0);
+ s++;
+ }
+ else
+ s += 10;
+ for(; i < nd; i++)
+ b = multadd(b, 10, *s++ - '0');
+ return b;
+ }
+
+ static int
+hi0bits
+#ifdef KR_headers
+ (x) register ULong x;
+#else
+ (register ULong x)
+#endif
+{
+ register int k = 0;
+
+ if (!(x & 0xffff0000)) {
+ k = 16;
+ x <<= 16;
+ }
+ if (!(x & 0xff000000)) {
+ k += 8;
+ x <<= 8;
+ }
+ if (!(x & 0xf0000000)) {
+ k += 4;
+ x <<= 4;
+ }
+ if (!(x & 0xc0000000)) {
+ k += 2;
+ x <<= 2;
+ }
+ if (!(x & 0x80000000)) {
+ k++;
+ if (!(x & 0x40000000))
+ return 32;
+ }
+ return k;
+ }
+
+ static int
+lo0bits
+#ifdef KR_headers
+ (y) ULong *y;
+#else
+ (ULong *y)
+#endif
+{
+ register int k;
+ register ULong x = *y;
+
+ if (x & 7) {
+ if (x & 1)
+ return 0;
+ if (x & 2) {
+ *y = x >> 1;
+ return 1;
+ }
+ *y = x >> 2;
+ return 2;
+ }
+ k = 0;
+ if (!(x & 0xffff)) {
+ k = 16;
+ x >>= 16;
+ }
+ if (!(x & 0xff)) {
+ k += 8;
+ x >>= 8;
+ }
+ if (!(x & 0xf)) {
+ k += 4;
+ x >>= 4;
+ }
+ if (!(x & 0x3)) {
+ k += 2;
+ x >>= 2;
+ }
+ if (!(x & 1)) {
+ k++;
+ x >>= 1;
+ if (!x)
+ return 32;
+ }
+ *y = x;
+ return k;
+ }
+
+ static Bigint *
+i2b
+#ifdef KR_headers
+ (i) int i;
+#else
+ (int i)
+#endif
+{
+ Bigint *b;
+
+ b = Balloc(1);
+ b->x[0] = i;
+ b->wds = 1;
+ return b;
+ }
+
+ static Bigint *
+mult
+#ifdef KR_headers
+ (a, b) Bigint *a, *b;
+#else
+ (Bigint *a, Bigint *b)
+#endif
+{
+ Bigint *c;
+ int k, wa, wb, wc;
+ ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0;
+ ULong y;
+#ifdef ULLong
+ ULLong carry, z;
+#else
+ ULong carry, z;
+#ifdef Pack_32
+ ULong z2;
+#endif
+#endif
+
+ if (a->wds < b->wds) {
+ c = a;
+ a = b;
+ b = c;
+ }
+ k = a->k;
+ wa = a->wds;
+ wb = b->wds;
+ wc = wa + wb;
+ if (wc > a->maxwds)
+ k++;
+ c = Balloc(k);
+ for(x = c->x, xa = x + wc; x < xa; x++)
+ *x = 0;
+ xa = a->x;
+ xae = xa + wa;
+ xb = b->x;
+ xbe = xb + wb;
+ xc0 = c->x;
+#ifdef ULLong
+ for(; xb < xbe; xc0++) {
+ if ((y = *xb++)) {
+ x = xa;
+ xc = xc0;
+ carry = 0;
+ do {
+ z = *x++ * (ULLong)y + *xc + carry;
+ carry = z >> 32;
+ *xc++ = z & FFFFFFFF;
+ }
+ while(x < xae);
+ *xc = carry;
+ }
+ }
+#else
+#ifdef Pack_32
+ for(; xb < xbe; xb++, xc0++) {
+ if (y = *xb & 0xffff) {
+ x = xa;
+ xc = xc0;
+ carry = 0;
+ do {
+ z = (*x & 0xffff) * y + (*xc & 0xffff) + carry;
+ carry = z >> 16;
+ z2 = (*x++ >> 16) * y + (*xc >> 16) + carry;
+ carry = z2 >> 16;
+ Storeinc(xc, z2, z);
+ }
+ while(x < xae);
+ *xc = carry;
+ }
+ if (y = *xb >> 16) {
+ x = xa;
+ xc = xc0;
+ carry = 0;
+ z2 = *xc;
+ do {
+ z = (*x & 0xffff) * y + (*xc >> 16) + carry;
+ carry = z >> 16;
+ Storeinc(xc, z, z2);
+ z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry;
+ carry = z2 >> 16;
+ }
+ while(x < xae);
+ *xc = z2;
+ }
+ }
+#else
+ for(; xb < xbe; xc0++) {
+ if (y = *xb++) {
+ x = xa;
+ xc = xc0;
+ carry = 0;
+ do {
+ z = *x++ * y + *xc + carry;
+ carry = z >> 16;
+ *xc++ = z & 0xffff;
+ }
+ while(x < xae);
+ *xc = carry;
+ }
+ }
+#endif
+#endif
+ for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;
+ c->wds = wc;
+ return c;
+ }
+
+ static Bigint *
+pow5mult
+#ifdef KR_headers
+ (b, k) Bigint *b; int k;
+#else
+ (Bigint *b, int k)
+#endif
+{
+ Bigint *b1, *p5, *p51;
+ int i;
+ static int CONST p05[3] = { 5, 25, 125 };
+
+ if ((i = k & 3))
+ b = multadd(b, p05[i-1], 0);
+
+ if (!(k >>= 2))
+ return b;
+
+ p5 = i2b(625);
+ for(;;) {
+ if (k & 1) {
+ b1 = mult(b, p5);
+ Bfree(b);
+ b = b1;
+ }
+ if (!(k >>= 1))
+ break;
+ p51 = mult(p5,p5);
+ Bfree(p5);
+ p5 = p51;
+ }
+ Bfree(p5);
+ return b;
+}
+
+ static Bigint *
+lshift
+#ifdef KR_headers
+ (b, k) Bigint *b; int k;
+#else
+ (Bigint *b, int k)
+#endif
+{
+ int i, k1, n, n1;
+ Bigint *b1;
+ ULong *x, *x1, *xe, z;
+
+#ifdef Pack_32
+ n = k >> 5;
+#else
+ n = k >> 4;
+#endif
+ k1 = b->k;
+ n1 = n + b->wds + 1;
+ for(i = b->maxwds; n1 > i; i <<= 1)
+ k1++;
+ b1 = Balloc(k1);
+ x1 = b1->x;
+ for(i = 0; i < n; i++)
+ *x1++ = 0;
+ x = b->x;
+ xe = x + b->wds;
+#ifdef Pack_32
+ if (k &= 0x1f) {
+ k1 = 32 - k;
+ z = 0;
+ do {
+ *x1++ = *x << k | z;
+ z = *x++ >> k1;
+ }
+ while(x < xe);
+ if ((*x1 = z))
+ ++n1;
+ }
+#else
+ if (k &= 0xf) {
+ k1 = 16 - k;
+ z = 0;
+ do {
+ *x1++ = *x << k & 0xffff | z;
+ z = *x++ >> k1;
+ }
+ while(x < xe);
+ if (*x1 = z)
+ ++n1;
+ }
+#endif
+ else do
+ *x1++ = *x++;
+ while(x < xe);
+ b1->wds = n1 - 1;
+ Bfree(b);
+ return b1;
+ }
+
+ static int
+cmp
+#ifdef KR_headers
+ (a, b) Bigint *a, *b;
+#else
+ (Bigint *a, Bigint *b)
+#endif
+{
+ ULong *xa, *xa0, *xb, *xb0;
+ int i, j;
+
+ i = a->wds;
+ j = b->wds;
+#ifdef DEBUG
+ if (i > 1 && !a->x[i-1])
+ Bug("cmp called with a->x[a->wds-1] == 0");
+ if (j > 1 && !b->x[j-1])
+ Bug("cmp called with b->x[b->wds-1] == 0");
+#endif
+ if (i -= j)
+ return i;
+ xa0 = a->x;
+ xa = xa0 + j;
+ xb0 = b->x;
+ xb = xb0 + j;
+ for(;;) {
+ if (*--xa != *--xb)
+ return *xa < *xb ? -1 : 1;
+ if (xa <= xa0)
+ break;
+ }
+ return 0;
+ }
+
+ static Bigint *
+diff
+#ifdef KR_headers
+ (a, b) Bigint *a, *b;
+#else
+ (Bigint *a, Bigint *b)
+#endif
+{
+ Bigint *c;
+ int i, wa, wb;
+ ULong *xa, *xae, *xb, *xbe, *xc;
+#ifdef ULLong
+ ULLong borrow, y;
+#else
+ ULong borrow, y;
+#ifdef Pack_32
+ ULong z;
+#endif
+#endif
+
+ i = cmp(a,b);
+ if (!i) {
+ c = Balloc(0);
+ c->wds = 1;
+ c->x[0] = 0;
+ return c;
+ }
+ if (i < 0) {
+ c = a;
+ a = b;
+ b = c;
+ i = 1;
+ }
+ else
+ i = 0;
+ c = Balloc(a->k);
+ c->sign = i;
+ wa = a->wds;
+ xa = a->x;
+ xae = xa + wa;
+ wb = b->wds;
+ xb = b->x;
+ xbe = xb + wb;
+ xc = c->x;
+ borrow = 0;
+#ifdef ULLong
+ do {
+ y = (ULLong)*xa++ - *xb++ - borrow;
+ borrow = y >> 32 & (ULong)1;
+ *xc++ = y & FFFFFFFF;
+ }
+ while(xb < xbe);
+ while(xa < xae) {
+ y = *xa++ - borrow;
+ borrow = y >> 32 & (ULong)1;
+ *xc++ = y & FFFFFFFF;
+ }
+#else
+#ifdef Pack_32
+ do {
+ y = (*xa & 0xffff) - (*xb & 0xffff) - borrow;
+ borrow = (y & 0x10000) >> 16;
+ z = (*xa++ >> 16) - (*xb++ >> 16) - borrow;
+ borrow = (z & 0x10000) >> 16;
+ Storeinc(xc, z, y);
+ }
+ while(xb < xbe);
+ while(xa < xae) {
+ y = (*xa & 0xffff) - borrow;
+ borrow = (y & 0x10000) >> 16;
+ z = (*xa++ >> 16) - borrow;
+ borrow = (z & 0x10000) >> 16;
+ Storeinc(xc, z, y);
+ }
+#else
+ do {
+ y = *xa++ - *xb++ - borrow;
+ borrow = (y & 0x10000) >> 16;
+ *xc++ = y & 0xffff;
+ }
+ while(xb < xbe);
+ while(xa < xae) {
+ y = *xa++ - borrow;
+ borrow = (y & 0x10000) >> 16;
+ *xc++ = y & 0xffff;
+ }
+#endif
+#endif
+ while(!*--xc)
+ wa--;
+ c->wds = wa;
+ return c;
+ }
+
+ static double
+ulp
+#ifdef KR_headers
+ (x) double x;
+#else
+ (double x)
+#endif
+{
+ register Long L;
+ U a;
+
+ L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
+#ifndef Avoid_Underflow
+#ifndef Sudden_Underflow
+ if (L > 0) {
+#endif
+#endif
+#ifdef IBM
+ L |= Exp_msk1 >> 4;
+#endif
+ word0(a) = L;
+ word1(a) = 0;
+#ifndef Avoid_Underflow
+#ifndef Sudden_Underflow
+ }
+ else {
+ L = -L >> Exp_shift;
+ if (L < Exp_shift) {
+ word0(a) = 0x80000 >> L;
+ word1(a) = 0;
+ }
+ else {
+ word0(a) = 0;
+ L -= Exp_shift;
+ word1(a) = L >= 31 ? 1 : 1 << 31 - L;
+ }
+ }
+#endif
+#endif
+ return dval(a);
+ }
+
+ static double
+b2d
+#ifdef KR_headers
+ (a, e) Bigint *a; int *e;
+#else
+ (Bigint *a, int *e)
+#endif
+{
+ ULong *xa, *xa0, w, y, z;
+ int k;
+ U d;
+#ifdef VAX
+ ULong d0, d1;
+#else
+#define d0 word0(d)
+#define d1 word1(d)
+#endif
+
+ xa0 = a->x;
+ xa = xa0 + a->wds;
+ y = *--xa;
+#ifdef DEBUG
+ if (!y) Bug("zero y in b2d");
+#endif
+ k = hi0bits(y);
+ *e = 32 - k;
+#ifdef Pack_32
+ if (k < Ebits) {
+ d0 = Exp_1 | y >> (Ebits - k);
+ w = xa > xa0 ? *--xa : 0;
+ d1 = y << ((32-Ebits) + k) | w >> (Ebits - k);
+ goto ret_d;
+ }
+ z = xa > xa0 ? *--xa : 0;
+ if (k -= Ebits) {
+ d0 = Exp_1 | y << k | z >> (32 - k);
+ y = xa > xa0 ? *--xa : 0;
+ d1 = z << k | y >> (32 - k);
+ }
+ else {
+ d0 = Exp_1 | y;
+ d1 = z;
+ }
+#else
+ if (k < Ebits + 16) {
+ z = xa > xa0 ? *--xa : 0;
+ d0 = Exp_1 | y << k - Ebits | z >> Ebits + 16 - k;
+ w = xa > xa0 ? *--xa : 0;
+ y = xa > xa0 ? *--xa : 0;
+ d1 = z << k + 16 - Ebits | w << k - Ebits | y >> 16 + Ebits - k;
+ goto ret_d;
+ }
+ z = xa > xa0 ? *--xa : 0;
+ w = xa > xa0 ? *--xa : 0;
+ k -= Ebits + 16;
+ d0 = Exp_1 | y << k + 16 | z << k | w >> 16 - k;
+ y = xa > xa0 ? *--xa : 0;
+ d1 = w << k + 16 | y << k;
+#endif
+ ret_d:
+#ifdef VAX
+ word0(d) = d0 >> 16 | d0 << 16;
+ word1(d) = d1 >> 16 | d1 << 16;
+#else
+#undef d0
+#undef d1
+#endif
+ return dval(d);
+ }
+
+ static Bigint *
+d2b
+#ifdef KR_headers
+ (d, e, bits) double d; int *e, *bits;
+#else
+ (double _d, int *e, int *bits)
+#endif
+{
+ Bigint *b;
+ int de, k;
+ ULong *x, y, z;
+ U d;
+#ifndef Sudden_Underflow
+ int i;
+#endif
+#ifdef VAX
+ ULong d0, d1;
+ d0 = word0(d) >> 16 | word0(d) << 16;
+ d1 = word1(d) >> 16 | word1(d) << 16;
+#else
+#define d0 word0(d)
+#define d1 word1(d)
+#endif
+ dval(d) = _d;
+
+#ifdef Pack_32
+ b = Balloc(1);
+#else
+ b = Balloc(2);
+#endif
+ x = b->x;
+
+ z = d0 & Frac_mask;
+ d0 &= 0x7fffffff; /* clear sign bit, which we ignore */
+#ifdef Sudden_Underflow
+ de = (int)(d0 >> Exp_shift);
+#ifndef IBM
+ z |= Exp_msk11;
+#endif
+#else
+ if ((de = (int)(d0 >> Exp_shift)))
+ z |= Exp_msk1;
+#endif
+#ifdef Pack_32
+ if ((y = d1)) {
+ if ((k = lo0bits(&y))) {
+ x[0] = y | z << (32 - k);
+ z >>= k;
+ }
+ else
+ x[0] = y;
+#ifndef Sudden_Underflow
+ i =
+#endif
+ b->wds = (x[1] = z) ? 2 : 1;
+ }
+ else {
+#ifdef DEBUG
+ if (!z)
+ Bug("Zero passed to d2b");
+#endif
+ k = lo0bits(&z);
+ x[0] = z;
+#ifndef Sudden_Underflow
+ i =
+#endif
+ b->wds = 1;
+ k += 32;
+ }
+#else
+ if (y = d1) {
+ if (k = lo0bits(&y))
+ if (k >= 16) {
+ x[0] = y | z << 32 - k & 0xffff;
+ x[1] = z >> k - 16 & 0xffff;
+ x[2] = z >> k;
+ i = 2;
+ }
+ else {
+ x[0] = y & 0xffff;
+ x[1] = y >> 16 | z << 16 - k & 0xffff;
+ x[2] = z >> k & 0xffff;
+ x[3] = z >> k+16;
+ i = 3;
+ }
+ else {
+ x[0] = y & 0xffff;
+ x[1] = y >> 16;
+ x[2] = z & 0xffff;
+ x[3] = z >> 16;
+ i = 3;
+ }
+ }
+ else {
+#ifdef DEBUG
+ if (!z)
+ Bug("Zero passed to d2b");
+#endif
+ k = lo0bits(&z);
+ if (k >= 16) {
+ x[0] = z;
+ i = 0;
+ }
+ else {
+ x[0] = z & 0xffff;
+ x[1] = z >> 16;
+ i = 1;
+ }
+ k += 32;
+ }
+ while(!x[i])
+ --i;
+ b->wds = i + 1;
+#endif
+#ifndef Sudden_Underflow
+ if (de) {
+#endif
+#ifdef IBM
+ *e = (de - Bias - (P-1) << 2) + k;
+ *bits = 4*P + 8 - k - hi0bits(word0(d) & Frac_mask);
+#else
+ *e = de - Bias - (P-1) + k;
+ *bits = P - k;
+#endif
+#ifndef Sudden_Underflow
+ }
+ else {
+ *e = de - Bias - (P-1) + 1 + k;
+#ifdef Pack_32
+ *bits = 32*i - hi0bits(x[i-1]);
+#else
+ *bits = (i+2)*16 - hi0bits(x[i]);
+#endif
+ }
+#endif
+ return b;
+ }
+#undef d0
+#undef d1
+
+ static double
+ratio
+#ifdef KR_headers
+ (a, b) Bigint *a, *b;
+#else
+ (Bigint *a, Bigint *b)
+#endif
+{
+ U da, db;
+ int k, ka, kb;
+
+ dval(da) = b2d(a, &ka);
+ dval(db) = b2d(b, &kb);
+#ifdef Pack_32
+ k = ka - kb + 32*(a->wds - b->wds);
+#else
+ k = ka - kb + 16*(a->wds - b->wds);
+#endif
+#ifdef IBM
+ if (k > 0) {
+ word0(da) += (k >> 2)*Exp_msk1;
+ if (k &= 3)
+ dval(da) *= 1 << k;
+ }
+ else {
+ k = -k;
+ word0(db) += (k >> 2)*Exp_msk1;
+ if (k &= 3)
+ dval(db) *= 1 << k;
+ }
+#else
+ if (k > 0)
+ word0(da) += k*Exp_msk1;
+ else {
+ k = -k;
+ word0(db) += k*Exp_msk1;
+ }
+#endif
+ return dval(da) / dval(db);
+ }
+
+ static CONST double
+tens[] = {
+ 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
+ 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
+ 1e20, 1e21, 1e22
+#ifdef VAX
+ , 1e23, 1e24
+#endif
+ };
+
+ static CONST double
+#ifdef IEEE_Arith
+bigtens[] = { 1e16, 1e32, 1e64, 1e128, 1e256 };
+static CONST double tinytens[] = { 1e-16, 1e-32, 1e-64, 1e-128,
+#ifdef Avoid_Underflow
+ 9007199254740992.*9007199254740992.e-256
+ /* = 2^106 * 1e-53 */
+#else
+ 1e-256
+#endif
+ };
+/* The factor of 2^53 in tinytens[4] helps us avoid setting the underflow */
+/* flag unnecessarily. It leads to a song and dance at the end of strtod. */
+#define Scale_Bit 0x10
+#define n_bigtens 5
+#else
+#ifdef IBM
+bigtens[] = { 1e16, 1e32, 1e64 };
+static CONST double tinytens[] = { 1e-16, 1e-32, 1e-64 };
+#define n_bigtens 3
+#else
+bigtens[] = { 1e16, 1e32 };
+static CONST double tinytens[] = { 1e-16, 1e-32 };
+#define n_bigtens 2
+#endif
+#endif
+
+#ifdef INFNAN_CHECK
+
+#ifndef NAN_WORD0
+#define NAN_WORD0 0x7ff80000
+#endif
+
+#ifndef NAN_WORD1
+#define NAN_WORD1 0
+#endif
+
+ static int
+match
+#ifdef KR_headers
+ (sp, t) char **sp, *t;
+#else
+ (CONST char **sp, char *t)
+#endif
+{
+ int c, d;
+ CONST char *s = *sp;
+
+ while((d = *t++)) {
+ if ((c = *++s) >= 'A' && c <= 'Z')
+ c += 'a' - 'A';
+ if (c != d)
+ return 0;
+ }
+ *sp = s + 1;
+ return 1;
+ }
+
+#ifndef No_Hex_NaN
+ static void
+hexnan
+#ifdef KR_headers
+ (rvp, sp) double *rvp; CONST char **sp;
+#else
+ (U *rvp, CONST char **sp)
+#endif
+{
+ ULong c, x[2];
+ CONST char *s;
+ int havedig, udx0, xshift;
+
+ x[0] = x[1] = 0;
+ havedig = xshift = 0;
+ udx0 = 1;
+ s = *sp;
+ /* allow optional initial 0x or 0X */
+ while((c = *(CONST unsigned char*)(s+1)) && c <= ' ')
+ ++s;
+ if (s[1] == '0' && (s[2] == 'x' || s[2] == 'X'))
+ s += 2;
+ while((c = *(CONST unsigned char*)++s)) {
+ if (c >= '0' && c <= '9')
+ c -= '0';
+ else if (c >= 'a' && c <= 'f')
+ c += 10 - 'a';
+ else if (c >= 'A' && c <= 'F')
+ c += 10 - 'A';
+ else if (c <= ' ') {
+ if (udx0 && havedig) {
+ udx0 = 0;
+ xshift = 1;
+ }
+ continue;
+ }
+#ifdef GDTOA_NON_PEDANTIC_NANCHECK
+ else if (/*(*/ c == ')' && havedig) {
+ *sp = s + 1;
+ break;
+ }
+ else
+ return; /* invalid form: don't change *sp */
+#else
+ else {
+ do {
+ if (/*(*/ c == ')') {
+ *sp = s + 1;
+ break;
+ }
+ } while((c = *++s));
+ break;
+ }
+#endif
+ havedig = 1;
+ if (xshift) {
+ xshift = 0;
+ x[0] = x[1];
+ x[1] = 0;
+ }
+ if (udx0)
+ x[0] = (x[0] << 4) | (x[1] >> 28);
+ x[1] = (x[1] << 4) | c;
+ }
+ if ((x[0] &= 0xfffff) || x[1]) {
+ word0(*rvp) = Exp_mask | x[0];
+ word1(*rvp) = x[1];
+ }
+ }
+#endif /*No_Hex_NaN*/
+#endif /* INFNAN_CHECK */
+
+ double
+sb_strtod
+#ifdef KR_headers
+ (s00, se) CONST char *s00; char **se;
+#else
+ (CONST char *s00, char **se)
+#endif
+{
+#ifdef Avoid_Underflow
+ int scale;
+#endif
+ int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign,
+ e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign;
+ CONST char *s, *s0, *s1;
+ double aadj, adj;
+ U rv, rv0, aadj1;
+ Long L;
+ ULong y, z;
+ Bigint *bb, *bb1, *bd, *bd0, *bs, *delta;
+#ifdef SET_INEXACT
+ int inexact, oldinexact;
+#endif
+#ifdef Honor_FLT_ROUNDS
+ int rounding;
+#endif
+#ifdef USE_LOCALE
+ CONST char *s2;
+#endif
+
+ sign = nz0 = nz = 0;
+ dval(rv) = 0.;
+ for(s = s00;;s++) switch(*s) {
+ case '-':
+ sign = 1;
+ /* no break */
+ case '+':
+ if (*++s)
+ goto break2;
+ /* no break */
+ case 0:
+ goto ret0;
+ case '\t':
+ case '\n':
+ case '\v':
+ case '\f':
+ case '\r':
+ case ' ':
+ continue;
+ default:
+ goto break2;
+ }
+ break2:
+ if (*s == '0') {
+ nz0 = 1;
+ while(*++s == '0') ;
+ if (!*s)
+ goto ret;
+ }
+ s0 = s;
+ y = z = 0;
+ for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++)
+ if (nd < 9)
+ y = 10*y + c - '0';
+ else if (nd < 16)
+ z = 10*z + c - '0';
+ nd0 = nd;
+#ifdef USE_LOCALE
+ s1 = localeconv()->decimal_point;
+ if (c == *s1) {
+ c = '.';
+ if (*++s1) {
+ s2 = s;
+ for(;;) {
+ if (*++s2 != *s1) {
+ c = 0;
+ break;
+ }
+ if (!*++s1) {
+ s = s2;
+ break;
+ }
+ }
+ }
+ }
+#endif
+ if (c == '.') {
+ c = *++s;
+ if (!nd) {
+ for(; c == '0'; c = *++s)
+ nz++;
+ if (c > '0' && c <= '9') {
+ s0 = s;
+ nf += nz;
+ nz = 0;
+ goto have_dig;
+ }
+ goto dig_done;
+ }
+ for(; c >= '0' && c <= '9'; c = *++s) {
+ have_dig:
+ nz++;
+ if (c -= '0') {
+ nf += nz;
+ for(i = 1; i < nz; i++)
+ if (nd++ < 9)
+ y *= 10;
+ else if (nd <= DBL_DIG + 1)
+ z *= 10;
+ if (nd++ < 9)
+ y = 10*y + c;
+ else if (nd <= DBL_DIG + 1)
+ z = 10*z + c;
+ nz = 0;
+ }
+ }
+ }
+ dig_done:
+ e = 0;
+ if (c == 'e' || c == 'E') {
+ if (!nd && !nz && !nz0) {
+ goto ret0;
+ }
+ s00 = s;
+ esign = 0;
+ switch(c = *++s) {
+ case '-':
+ esign = 1;
+ case '+':
+ c = *++s;
+ }
+ if (c >= '0' && c <= '9') {
+ while(c == '0')
+ c = *++s;
+ if (c > '0' && c <= '9') {
+ L = c - '0';
+ s1 = s;
+ while((c = *++s) >= '0' && c <= '9')
+ L = 10*L + c - '0';
+ if (s - s1 > 8 || L > 19999)
+ /* Avoid confusion from exponents
+ * so large that e might overflow.
+ */
+ e = 19999; /* safe for 16 bit ints */
+ else
+ e = (int)L;
+ if (esign)
+ e = -e;
+ }
+ else
+ e = 0;
+ }
+ else
+ s = s00;
+ }
+ if (!nd) {
+ if (!nz && !nz0) {
+#ifdef INFNAN_CHECK
+ /* Check for Nan and Infinity */
+ switch(c) {
+ case 'i':
+ case 'I':
+ if (match(&s,"nf")) {
+ --s;
+ if (!match(&s,"inity"))
+ ++s;
+ word0(rv) = 0x7ff00000;
+ word1(rv) = 0;
+ goto ret;
+ }
+ break;
+ case 'n':
+ case 'N':
+ if (match(&s, "an")) {
+ word0(rv) = NAN_WORD0;
+ word1(rv) = NAN_WORD1;
+#ifndef No_Hex_NaN
+ if (*s == '(') /*)*/
+ hexnan(&rv, &s);
+#endif
+ goto ret;
+ }
+ }
+#endif /* INFNAN_CHECK */
+ ret0:
+ s = s00;
+ sign = 0;
+ }
+ goto ret;
+ }
+ e1 = e -= nf;
+
+ /* Now we have nd0 digits, starting at s0, followed by a
+ * decimal point, followed by nd-nd0 digits. The number we're
+ * after is the integer represented by those digits times
+ * 10**e */
+
+ if (!nd0)
+ nd0 = nd;
+ k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1;
+ dval(rv) = y;
+ if (k > 9) {
+#ifdef SET_INEXACT
+ if (k > DBL_DIG)
+ oldinexact = get_inexact();
+#endif
+ dval(rv) = tens[k - 9] * dval(rv) + z;
+ }
+ bd0 = 0;
+ if (nd <= DBL_DIG
+#ifndef RND_PRODQUOT
+#ifndef Honor_FLT_ROUNDS
+ && Flt_Rounds == 1
+#endif
+#endif
+ ) {
+ if (!e)
+ goto ret;
+ if (e > 0) {
+ if (e <= Ten_pmax) {
+#ifdef VAX
+ goto vax_ovfl_check;
+#else
+#ifdef Honor_FLT_ROUNDS
+ /* round correctly FLT_ROUNDS = 2 or 3 */
+ if (sign) {
+ rv = -rv;
+ sign = 0;
+ }
+#endif
+ /* rv = */ rounded_product(dval(rv), tens[e]);
+ goto ret;
+#endif
+ }
+ i = DBL_DIG - nd;
+ if (e <= Ten_pmax + i) {
+ /* A fancier test would sometimes let us do
+ * this for larger i values.
+ */
+#ifdef Honor_FLT_ROUNDS
+ /* round correctly FLT_ROUNDS = 2 or 3 */
+ if (sign) {
+ rv = -rv;
+ sign = 0;
+ }
+#endif
+ e -= i;
+ dval(rv) *= tens[i];
+#ifdef VAX
+ /* VAX exponent range is so narrow we must
+ * worry about overflow here...
+ */
+ vax_ovfl_check:
+ word0(rv) -= P*Exp_msk1;
+ /* rv = */ rounded_product(dval(rv), tens[e]);
+ if ((word0(rv) & Exp_mask)
+ > Exp_msk1*(DBL_MAX_EXP+Bias-1-P))
+ goto ovfl;
+ word0(rv) += P*Exp_msk1;
+#else
+ /* rv = */ rounded_product(dval(rv), tens[e]);
+#endif
+ goto ret;
+ }
+ }
+#ifndef Inaccurate_Divide
+ else if (e >= -Ten_pmax) {
+#ifdef Honor_FLT_ROUNDS
+ /* round correctly FLT_ROUNDS = 2 or 3 */
+ if (sign) {
+ rv = -rv;
+ sign = 0;
+ }
+#endif
+ /* rv = */ rounded_quotient(dval(rv), tens[-e]);
+ goto ret;
+ }
+#endif
+ }
+ e1 += nd - k;
+
+#ifdef IEEE_Arith
+#ifdef SET_INEXACT
+ inexact = 1;
+ if (k <= DBL_DIG)
+ oldinexact = get_inexact();
+#endif
+#ifdef Avoid_Underflow
+ scale = 0;
+#endif
+#ifdef Honor_FLT_ROUNDS
+ if ((rounding = Flt_Rounds) >= 2) {
+ if (sign)
+ rounding = rounding == 2 ? 0 : 2;
+ else
+ if (rounding != 2)
+ rounding = 0;
+ }
+#endif
+#endif /*IEEE_Arith*/
+
+ /* Get starting approximation = rv * 10**e1 */
+
+ if (e1 > 0) {
+ if ((i = e1 & 15))
+ dval(rv) *= tens[i];
+ if (e1 &= ~15) {
+ if (e1 > DBL_MAX_10_EXP) {
+ ovfl:
+#ifndef NO_ERRNO
+ errno = ERANGE;
+#endif
+ /* Can't trust HUGE_VAL */
+#ifdef IEEE_Arith
+#ifdef Honor_FLT_ROUNDS
+ switch(rounding) {
+ case 0: /* toward 0 */
+ case 3: /* toward -infinity */
+ word0(rv) = Big0;
+ word1(rv) = Big1;
+ break;
+ default:
+ word0(rv) = Exp_mask;
+ word1(rv) = 0;
+ }
+#else /*Honor_FLT_ROUNDS*/
+ word0(rv) = Exp_mask;
+ word1(rv) = 0;
+#endif /*Honor_FLT_ROUNDS*/
+#ifdef SET_INEXACT
+ /* set overflow bit */
+ dval(rv0) = 1e300;
+ dval(rv0) *= dval(rv0);
+#endif
+#else /*IEEE_Arith*/
+ word0(rv) = Big0;
+ word1(rv) = Big1;
+#endif /*IEEE_Arith*/
+ if (bd0)
+ goto retfree;
+ goto ret;
+ }
+ e1 >>= 4;
+ for(j = 0; e1 > 1; j++, e1 >>= 1)
+ if (e1 & 1)
+ dval(rv) *= bigtens[j];
+ /* The last multiplication could overflow. */
+ word0(rv) -= P*Exp_msk1;
+ dval(rv) *= bigtens[j];
+ if ((z = word0(rv) & Exp_mask)
+ > Exp_msk1*(DBL_MAX_EXP+Bias-P))
+ goto ovfl;
+ if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) {
+ /* set to largest number */
+ /* (Can't trust DBL_MAX) */
+ word0(rv) = Big0;
+ word1(rv) = Big1;
+ }
+ else
+ word0(rv) += P*Exp_msk1;
+ }
+ }
+ else if (e1 < 0) {
+ e1 = -e1;
+ if ((i = e1 & 15))
+ dval(rv) /= tens[i];
+ if (e1 >>= 4) {
+ if (e1 >= 1 << n_bigtens)
+ goto undfl;
+#ifdef Avoid_Underflow
+ if (e1 & Scale_Bit)
+ scale = 2*P;
+ for(j = 0; e1 > 0; j++, e1 >>= 1)
+ if (e1 & 1)
+ dval(rv) *= tinytens[j];
+ if (scale && (j = 2*P + 1 - ((word0(rv) & Exp_mask)
+ >> Exp_shift)) > 0) {
+ /* scaled rv is denormal; zap j low bits */
+ if (j >= 32) {
+ word1(rv) = 0;
+ if (j >= 53)
+ word0(rv) = (P+2)*Exp_msk1;
+ else
+ word0(rv) &= 0xffffffff << (j-32);
+ }
+ else
+ word1(rv) &= 0xffffffff << j;
+ }
+#else
+ for(j = 0; e1 > 1; j++, e1 >>= 1)
+ if (e1 & 1)
+ dval(rv) *= tinytens[j];
+ /* The last multiplication could underflow. */
+ dval(rv0) = dval(rv);
+ dval(rv) *= tinytens[j];
+ if (!dval(rv)) {
+ dval(rv) = 2.*dval(rv0);
+ dval(rv) *= tinytens[j];
+#endif
+ if (!dval(rv)) {
+ undfl:
+ dval(rv) = 0.;
+#ifndef NO_ERRNO
+ errno = ERANGE;
+#endif
+ if (bd0)
+ goto retfree;
+ goto ret;
+ }
+#ifndef Avoid_Underflow
+ word0(rv) = Tiny0;
+ word1(rv) = Tiny1;
+ /* The refinement below will clean
+ * this approximation up.
+ */
+ }
+#endif
+ }
+ }
+
+ /* Now the hard part -- adjusting rv to the correct value.*/
+
+ /* Put digits into bd: true value = bd * 10^e */
+
+ bd0 = s2b(s0, nd0, nd, y);
+
+ for(;;) {
+ bd = Balloc(bd0->k);
+ Bcopy(bd, bd0);
+ bb = d2b(dval(rv), &bbe, &bbbits); /* rv = bb * 2^bbe */
+ bs = i2b(1);
+
+ if (e >= 0) {
+ bb2 = bb5 = 0;
+ bd2 = bd5 = e;
+ }
+ else {
+ bb2 = bb5 = -e;
+ bd2 = bd5 = 0;
+ }
+ if (bbe >= 0)
+ bb2 += bbe;
+ else
+ bd2 -= bbe;
+ bs2 = bb2;
+#ifdef Honor_FLT_ROUNDS
+ if (rounding != 1)
+ bs2++;
+#endif
+#ifdef Avoid_Underflow
+ j = bbe - scale;
+ i = j + bbbits - 1; /* logb(rv) */
+ if (i < Emin) /* denormal */
+ j += P - Emin;
+ else
+ j = P + 1 - bbbits;
+#else /*Avoid_Underflow*/
+#ifdef Sudden_Underflow
+#ifdef IBM
+ j = 1 + 4*P - 3 - bbbits + ((bbe + bbbits - 1) & 3);
+#else
+ j = P + 1 - bbbits;
+#endif
+#else /*Sudden_Underflow*/
+ j = bbe;
+ i = j + bbbits - 1; /* logb(rv) */
+ if (i < Emin) /* denormal */
+ j += P - Emin;
+ else
+ j = P + 1 - bbbits;
+#endif /*Sudden_Underflow*/
+#endif /*Avoid_Underflow*/
+ bb2 += j;
+ bd2 += j;
+#ifdef Avoid_Underflow
+ bd2 += scale;
+#endif
+ i = bb2 < bd2 ? bb2 : bd2;
+ if (i > bs2)
+ i = bs2;
+ if (i > 0) {
+ bb2 -= i;
+ bd2 -= i;
+ bs2 -= i;
+ }
+ if (bb5 > 0) {
+ bs = pow5mult(bs, bb5);
+ bb1 = mult(bs, bb);
+ Bfree(bb);
+ bb = bb1;
+ }
+ if (bb2 > 0)
+ bb = lshift(bb, bb2);
+ if (bd5 > 0)
+ bd = pow5mult(bd, bd5);
+ if (bd2 > 0)
+ bd = lshift(bd, bd2);
+ if (bs2 > 0)
+ bs = lshift(bs, bs2);
+ delta = diff(bb, bd);
+ dsign = delta->sign;
+ delta->sign = 0;
+ i = cmp(delta, bs);
+#ifdef Honor_FLT_ROUNDS
+ if (rounding != 1) {
+ if (i < 0) {
+ /* Error is less than an ulp */
+ if (!delta->x[0] && delta->wds <= 1) {
+ /* exact */
+#ifdef SET_INEXACT
+ inexact = 0;
+#endif
+ break;
+ }
+ if (rounding) {
+ if (dsign) {
+ adj = 1.;
+ goto apply_adj;
+ }
+ }
+ else if (!dsign) {
+ adj = -1.;
+ if (!word1(rv)
+ && !(word0(rv) & Frac_mask)) {
+ y = word0(rv) & Exp_mask;
+#ifdef Avoid_Underflow
+ if (!scale || y > 2*P*Exp_msk1)
+#else
+ if (y)
+#endif
+ {
+ delta = lshift(delta,Log2P);
+ if (cmp(delta, bs) <= 0)
+ adj = -0.5;
+ }
+ }
+ apply_adj:
+#ifdef Avoid_Underflow
+ if (scale && (y = word0(rv) & Exp_mask)
+ <= 2*P*Exp_msk1)
+ word0(adj) += (2*P+1)*Exp_msk1 - y;
+#else
+#ifdef Sudden_Underflow
+ if ((word0(rv) & Exp_mask) <=
+ P*Exp_msk1) {
+ word0(rv) += P*Exp_msk1;
+ dval(rv) += adj*ulp(dval(rv));
+ word0(rv) -= P*Exp_msk1;
+ }
+ else
+#endif /*Sudden_Underflow*/
+#endif /*Avoid_Underflow*/
+ dval(rv) += adj*ulp(dval(rv));
+ }
+ break;
+ }
+ adj = ratio(delta, bs);
+ if (adj < 1.)
+ adj = 1.;
+ if (adj <= 0x7ffffffe) {
+ /* adj = rounding ? ceil(adj) : floor(adj); */
+ y = adj;
+ if (y != adj) {
+ if (!((rounding>>1) ^ dsign))
+ y++;
+ adj = y;
+ }
+ }
+#ifdef Avoid_Underflow
+ if (scale && (y = word0(rv) & Exp_mask) <= 2*P*Exp_msk1)
+ word0(adj) += (2*P+1)*Exp_msk1 - y;
+#else
+#ifdef Sudden_Underflow
+ if ((word0(rv) & Exp_mask) <= P*Exp_msk1) {
+ word0(rv) += P*Exp_msk1;
+ adj *= ulp(dval(rv));
+ if (dsign)
+ dval(rv) += adj;
+ else
+ dval(rv) -= adj;
+ word0(rv) -= P*Exp_msk1;
+ goto cont;
+ }
+#endif /*Sudden_Underflow*/
+#endif /*Avoid_Underflow*/
+ adj *= ulp(dval(rv));
+ if (dsign)
+ dval(rv) += adj;
+ else
+ dval(rv) -= adj;
+ goto cont;
+ }
+#endif /*Honor_FLT_ROUNDS*/
+
+ if (i < 0) {
+ /* Error is less than half an ulp -- check for
+ * special case of mantissa a power of two.
+ */
+ if (dsign || word1(rv) || word0(rv) & Bndry_mask
+#ifdef IEEE_Arith
+#ifdef Avoid_Underflow
+ || (word0(rv) & Exp_mask) <= (2*P+1)*Exp_msk1
+#else
+ || (word0(rv) & Exp_mask) <= Exp_msk1
+#endif
+#endif
+ ) {
+#ifdef SET_INEXACT
+ if (!delta->x[0] && delta->wds <= 1)
+ inexact = 0;
+#endif
+ break;
+ }
+ if (!delta->x[0] && delta->wds <= 1) {
+ /* exact result */
+#ifdef SET_INEXACT
+ inexact = 0;
+#endif
+ break;
+ }
+ delta = lshift(delta,Log2P);
+ if (cmp(delta, bs) > 0)
+ goto drop_down;
+ break;
+ }
+ if (i == 0) {
+ /* exactly half-way between */
+ if (dsign) {
+ if ((word0(rv) & Bndry_mask1) == Bndry_mask1
+ && word1(rv) == (
+#ifdef Avoid_Underflow
+ (scale && (y = word0(rv) & Exp_mask) <= 2*P*Exp_msk1)
+ ? (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) :
+#endif
+ 0xffffffff)) {
+ /*boundary case -- increment exponent*/
+ word0(rv) = (word0(rv) & Exp_mask)
+ + Exp_msk1
+#ifdef IBM
+ | Exp_msk1 >> 4
+#endif
+ ;
+ word1(rv) = 0;
+#ifdef Avoid_Underflow
+ dsign = 0;
+#endif
+ break;
+ }
+ }
+ else if (!(word0(rv) & Bndry_mask) && !word1(rv)) {
+ drop_down:
+ /* boundary case -- decrement exponent */
+#ifdef Sudden_Underflow /*{{*/
+ L = word0(rv) & Exp_mask;
+#ifdef IBM
+ if (L < Exp_msk1)
+#else
+#ifdef Avoid_Underflow
+ if (L <= (scale ? (2*P+1)*Exp_msk1 : Exp_msk1))
+#else
+ if (L <= Exp_msk1)
+#endif /*Avoid_Underflow*/
+#endif /*IBM*/
+ goto undfl;
+ L -= Exp_msk1;
+#else /*Sudden_Underflow}{*/
+#ifdef Avoid_Underflow
+ if (scale) {
+ L = word0(rv) & Exp_mask;
+ if (L <= (2*P+1)*Exp_msk1) {
+ if (L > (P+2)*Exp_msk1)
+ /* round even ==> */
+ /* accept rv */
+ break;
+ /* rv = smallest denormal */
+ goto undfl;
+ }
+ }
+#endif /*Avoid_Underflow*/
+ L = (word0(rv) & Exp_mask) - Exp_msk1;
+#endif /*Sudden_Underflow}}*/
+ word0(rv) = L | Bndry_mask1;
+ word1(rv) = 0xffffffff;
+#ifdef IBM
+ goto cont;
+#else
+ break;
+#endif
+ }
+#ifndef ROUND_BIASED
+ if (!(word1(rv) & LSB))
+ break;
+#endif
+ if (dsign)
+ dval(rv) += ulp(dval(rv));
+#ifndef ROUND_BIASED
+ else {
+ dval(rv) -= ulp(dval(rv));
+#ifndef Sudden_Underflow
+ if (!dval(rv))
+ goto undfl;
+#endif
+ }
+#ifdef Avoid_Underflow
+ dsign = 1 - dsign;
+#endif
+#endif
+ break;
+ }
+ if ((aadj = ratio(delta, bs)) <= 2.) {
+ if (dsign)
+ aadj = dval(aadj1) = 1.;
+ else if (word1(rv) || word0(rv) & Bndry_mask) {
+#ifndef Sudden_Underflow
+ if (word1(rv) == Tiny1 && !word0(rv))
+ goto undfl;
+#endif
+ aadj = 1.;
+ dval(aadj1) = -1.;
+ }
+ else {
+ /* special case -- power of FLT_RADIX to be */
+ /* rounded down... */
+
+ if (aadj < 2./FLT_RADIX)
+ aadj = 1./FLT_RADIX;
+ else
+ aadj *= 0.5;
+ dval(aadj1) = -aadj;
+ }
+ }
+ else {
+ aadj *= 0.5;
+ dval(aadj1) = dsign ? aadj : -aadj;
+#ifdef Check_FLT_ROUNDS
+ switch(Rounding) {
+ case 2: /* towards +infinity */
+ dval(aadj1) -= 0.5;
+ break;
+ case 0: /* towards 0 */
+ case 3: /* towards -infinity */
+ dval(aadj1) += 0.5;
+ }
+#else
+ if (Flt_Rounds == 0)
+ dval(aadj1) += 0.5;
+#endif /*Check_FLT_ROUNDS*/
+ }
+ y = word0(rv) & Exp_mask;
+
+ /* Check for overflow */
+
+ if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) {
+ dval(rv0) = dval(rv);
+ word0(rv) -= P*Exp_msk1;
+ adj = dval(aadj1) * ulp(dval(rv));
+ dval(rv) += adj;
+ if ((word0(rv) & Exp_mask) >=
+ Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
+ if (word0(rv0) == Big0 && word1(rv0) == Big1)
+ goto ovfl;
+ word0(rv) = Big0;
+ word1(rv) = Big1;
+ goto cont;
+ }
+ else
+ word0(rv) += P*Exp_msk1;
+ }
+ else {
+#ifdef Avoid_Underflow
+ if (scale && y <= 2*P*Exp_msk1) {
+ if (aadj <= 0x7fffffff) {
+ if ((z = (uint32)aadj) <= 0)
+ z = 1;
+ aadj = z;
+ dval(aadj1) = dsign ? aadj : -aadj;
+ }
+ word0(aadj1) += (2*P+1)*Exp_msk1 - y;
+ }
+ adj = dval(aadj1) * ulp(dval(rv));
+ dval(rv) += adj;
+#else
+#ifdef Sudden_Underflow
+ if ((word0(rv) & Exp_mask) <= P*Exp_msk1) {
+ dval(rv0) = dval(rv);
+ word0(rv) += P*Exp_msk1;
+ adj = aadj1 * ulp(dval(rv));
+ dval(rv) += adj;
+#ifdef IBM
+ if ((word0(rv) & Exp_mask) < P*Exp_msk1)
+#else
+ if ((word0(rv) & Exp_mask) <= P*Exp_msk1)
+#endif
+ {
+ if (word0(rv0) == Tiny0
+ && word1(rv0) == Tiny1)
+ goto undfl;
+ word0(rv) = Tiny0;
+ word1(rv) = Tiny1;
+ goto cont;
+ }
+ else
+ word0(rv) -= P*Exp_msk1;
+ }
+ else {
+ adj = aadj1 * ulp(dval(rv));
+ dval(rv) += adj;
+ }
+#else /*Sudden_Underflow*/
+ /* Compute adj so that the IEEE rounding rules will
+ * correctly round rv + adj in some half-way cases.
+ * If rv * ulp(rv) is denormalized (i.e.,
+ * y <= (P-1)*Exp_msk1), we must adjust aadj to avoid
+ * trouble from bits lost to denormalization;
+ * example: 1.2e-307 .
+ */
+ if (y <= (P-1)*Exp_msk1 && aadj > 1.) {
+ aadj1 = (double)(int)(aadj + 0.5);
+ if (!dsign)
+ aadj1 = -aadj1;
+ }
+ adj = aadj1 * ulp(dval(rv));
+ dval(rv) += adj;
+#endif /*Sudden_Underflow*/
+#endif /*Avoid_Underflow*/
+ }
+ z = word0(rv) & Exp_mask;
+#ifndef SET_INEXACT
+#ifdef Avoid_Underflow
+ if (!scale)
+#endif
+ if (y == z) {
+ /* Can we stop now? */
+ L = (Long)aadj;
+ aadj -= L;
+ /* The tolerances below are conservative. */
+ if (dsign || word1(rv) || word0(rv) & Bndry_mask) {
+ if (aadj < .4999999 || aadj > .5000001)
+ break;
+ }
+ else if (aadj < .4999999/FLT_RADIX)
+ break;
+ }
+#endif
+ cont:
+ Bfree(bb);
+ Bfree(bd);
+ Bfree(bs);
+ Bfree(delta);
+ }
+#ifdef SET_INEXACT
+ if (inexact) {
+ if (!oldinexact) {
+ word0(rv0) = Exp_1 + (70 << Exp_shift);
+ word1(rv0) = 0;
+ dval(rv0) += 1.;
+ }
+ }
+ else if (!oldinexact)
+ clear_inexact();
+#endif
+#ifdef Avoid_Underflow
+ if (scale) {
+ word0(rv0) = Exp_1 - 2*P*Exp_msk1;
+ word1(rv0) = 0;
+ dval(rv) *= dval(rv0);
+#ifndef NO_ERRNO
+ /* try to avoid the bug of testing an 8087 register value */
+ if (word0(rv) == 0 && word1(rv) == 0)
+ errno = ERANGE;
+#endif
+ }
+#endif /* Avoid_Underflow */
+#ifdef SET_INEXACT
+ if (inexact && !(word0(rv) & Exp_mask)) {
+ /* set underflow bit */
+ dval(rv0) = 1e-300;
+ dval(rv0) *= dval(rv0);
+ }
+#endif
+ retfree:
+ Bfree(bb);
+ Bfree(bd);
+ Bfree(bs);
+ Bfree(bd0);
+ Bfree(delta);
+ ret:
+ if (se)
+ *se = (char *)s;
+ return sign ? -dval(rv) : dval(rv);
+ }
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * @file err.c
+ * @brief Somewhat antiquated logging and error interface.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+
+#include "sphinxbase/err.h"
+
+#ifdef SPHINX_DEBUG
+static int sphinx_debug_level;
+int
+err_set_debug_level(int level)
+{
+ int prev = sphinx_debug_level;
+ sphinx_debug_level = level;
+ return prev;
+}
+int
+err_get_debug_level(void)
+{
+ return sphinx_debug_level;
+}
+#else
+int
+err_set_debug_level(int level)
+{
+ return 0;
+}
+
+int
+err_get_debug_level(void)
+{
+ return 0;
+}
+#endif
+
+#if defined(HAVE_PTHREAD_H)
+#include <pthread.h>
+static pthread_key_t logfp_index;
+static pthread_once_t logfp_index_once = PTHREAD_ONCE_INIT;
+
+void
+logfp_index_alloc(void)
+{
+ pthread_key_create(&logfp_index, NULL);
+}
+
+FILE *
+err_get_logfp(void)
+{
+ FILE *logfp;
+
+ pthread_once(&logfp_index_once, logfp_index_alloc);
+ logfp = (FILE *)pthread_getspecific(logfp_index);
+
+ if (logfp == NULL)
+ return stderr;
+ else if (logfp == (FILE*) -1)
+ return NULL;
+ else
+ return logfp;
+}
+
+static void
+internal_set_logfp(FILE *fh)
+{
+ if (fh == NULL)
+ fh = (FILE*) -1;
+
+ pthread_setspecific(logfp_index, (void *)fh);
+}
+
+#elif defined(_WIN32) || defined(__CYGWIN__) /* Use Windows TLS on Cygwin */
+#include <windows.h>
+static DWORD logfp_index; /** TLS index for log file */
+static LONG logfp_index_once = 0; /** True if we have initialized TLS */
+
+void
+logfp_index_alloc(void)
+{
+ logfp_index = TlsAlloc();
+}
+
+FILE *
+err_get_logfp(void)
+{
+ FILE *logfp;
+
+ if (InterlockedExchange(&logfp_index_once, 1) == 0)
+ logfp_index_alloc();
+ logfp = (FILE *)TlsGetValue(logfp_index);
+
+ if (logfp == NULL)
+ return stderr;
+ else if (logfp == (FILE*) -1)
+ return NULL;
+ else
+ return logfp;
+}
+
+static void
+internal_set_logfp(FILE *fh)
+{
+ if (fh == NULL)
+ fh = (FILE*) -1;
+
+ TlsSetValue(logfp_index, (void *)fh);
+}
+
+#else
+FILE *logfp = NULL;
+
+FILE *
+err_get_logfp(void)
+{
+ if (logfp == NULL)
+ return stderr;
+ else if (logfp == (FILE*) -1)
+ return NULL;
+ else
+ return logfp;
+}
+
+static void
+internal_set_logfp(FILE *fh)
+{
+ if (fh == NULL)
+ fh = (FILE*) -1;
+
+ logfp = fh;
+}
+
+#endif
+
+FILE *
+err_set_logfp(FILE *newfp)
+{
+ FILE *oldfp;
+
+ oldfp = err_get_logfp();
+ internal_set_logfp(newfp);
+
+ return oldfp;
+}
+
+int
+err_set_logfile(char const *file)
+{
+ FILE *newfp, *oldfp;
+
+ if ((newfp = fopen(file, "a")) == NULL)
+ return -1;
+ oldfp = err_get_logfp();
+ internal_set_logfp(newfp);
+ if (oldfp != NULL && oldfp != stdout && oldfp != stderr)
+ fclose(oldfp);
+ return 0;
+}
+
+
+void
+_E__pr_info_header_wofn(char const *msg)
+{
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp == NULL)
+ return;
+ /* make different format so as not to be parsed by emacs compile */
+ fprintf(logfp, "%s:\t", msg);
+ fflush(logfp);
+}
+
+void
+_E__pr_header(char const *f, long ln, char const *msg)
+{
+ char const *fname;
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp == NULL)
+ return;
+ fname = strrchr(f,'\\');
+ if (fname == NULL)
+ fname = strrchr(f,'/');
+ fprintf(logfp, "%s: \"%s\", line %ld: ", msg, fname == NULL ? f : fname + 1, ln);
+ fflush(logfp);
+}
+
+void
+_E__pr_info_header(char const *f, long ln, char const *msg)
+{
+ char const *fname;
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp == NULL)
+ return;
+ fname = strrchr(f,'\\');
+ if (fname == NULL)
+ fname = strrchr(f,'/');
+ /* make different format so as not to be parsed by emacs compile */
+ fprintf(logfp, "%s: %s(%ld): ", msg, fname == NULL ? f : fname + 1, ln);
+ fflush(logfp);
+}
+
+void
+_E__pr_warn(char const *fmt, ...)
+{
+ va_list pvar;
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp == NULL)
+ return;
+ va_start(pvar, fmt);
+ vfprintf(logfp, fmt, pvar);
+ va_end(pvar);
+
+ fflush(logfp);
+}
+
+void
+_E__pr_info(char const *fmt, ...)
+{
+ va_list pvar;
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp == NULL)
+ return;
+ va_start(pvar, fmt);
+ vfprintf(logfp, fmt, pvar);
+ va_end(pvar);
+
+ fflush(logfp);
+}
+
+void
+_E__die_error(char const *fmt, ...)
+{
+ va_list pvar;
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp) {
+ va_start(pvar, fmt);
+ vfprintf(logfp, fmt, pvar);
+ va_end(pvar);
+ fflush(logfp);
+ }
+
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+ while(1);
+#else
+ exit(-1);
+#endif
+}
+
+void
+_E__fatal_sys_error(char const *fmt, ...)
+{
+ va_list pvar;
+ FILE *logfp;
+ int local_errno = errno;
+
+ logfp = err_get_logfp();
+ if (logfp) {
+ va_start(pvar, fmt);
+ vfprintf(logfp, fmt, pvar);
+ va_end(pvar);
+
+ fprintf(logfp, ": %s\n", strerror(local_errno));
+ fflush(logfp);
+ }
+
+
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+ while(1);
+#else
+ exit(-1);
+#endif
+
+}
+
+void
+_E__sys_error(char const *fmt, ...)
+{
+ va_list pvar;
+ FILE *logfp;
+ int local_errno = errno;
+
+ logfp = err_get_logfp();
+ if (logfp == NULL)
+ return;
+
+ va_start(pvar, fmt);
+ vfprintf(logfp, fmt, pvar);
+ va_end(pvar);
+
+ fprintf(logfp, "; %s\n", strerror(local_errno));
+ fflush(logfp);
+}
+
+void
+_E__abort_error(char const *fmt, ...)
+{
+ va_list pvar;
+ FILE *logfp;
+
+ logfp = err_get_logfp();
+ if (logfp) {
+ va_start(pvar, fmt);
+ vfprintf(logfp, fmt, pvar);
+ va_end(pvar);
+ fflush(logfp);
+ }
+
+#if defined(__ADSPBLACKFIN__) && !defined(__linux__)
+while(1);
+#elif defined(_WIN32_WCE)
+exit(-1);
+#else
+abort();
+#endif
+
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * err_wince.c -- Package for checking and catching common errors, printing out
+ * errors nicely, etc.
+ * WinCE has no standard library worth the name so we need this
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <windows.h>
+#include <assert.h>
+
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+
+int cst_verrmsg(const char *fmt, va_list args)
+{
+ char msg[256];
+ WCHAR *wmsg;
+ size_t len;
+
+ _vsnprintf(msg,256,fmt,args);
+
+ len = mbstowcs(NULL,msg,0) + 1;
+ wmsg = ckd_calloc(len,sizeof(*wmsg));
+ mbstowcs(wmsg,msg,len);
+
+ OutputDebugStringW(wmsg);
+ ckd_free(wmsg);
+ return 0;
+}
+
+int cst_errmsg(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args,fmt);
+ cst_verrmsg(fmt, args);
+ va_end(args);
+ return 0;
+}
+
+void
+_E__pr_info_header_wofn(char const *msg)
+{
+ cst_errmsg("%s:\t", msg);
+}
+
+void
+_E__pr_header(char const *f, long ln, char const *msg)
+{
+ cst_errmsg("%s: \"%s\", line %ld: ", msg, f, ln);
+}
+
+void
+_E__pr_info_header(char const *f, long ln, char const *msg)
+{
+ cst_errmsg("%s: %s(%ld): ", msg, f, ln);
+}
+
+void
+_E__pr_warn(char const *fmt, ...)
+{
+ va_list pvar;
+
+ va_start(pvar, fmt);
+ cst_verrmsg(fmt, pvar);
+ va_end(pvar);
+}
+
+void
+_E__pr_info(char const *fmt, ...)
+{
+ va_list pvar;
+
+ va_start(pvar, fmt);
+ cst_verrmsg(fmt, pvar);
+ va_end(pvar);
+}
+
+void
+_E__die_error(char const *fmt, ...)
+{
+ va_list pvar;
+
+ va_start(pvar, fmt);
+ cst_verrmsg(fmt, pvar);
+ va_end(pvar);
+ exit(-1);
+}
+
+void
+_E__fatal_sys_error(char const *fmt, ...)
+{
+ LPVOID msg_buf;
+ DWORD error;
+ va_list pvar;
+
+ error = GetLastError();
+ va_start(pvar, fmt);
+ cst_verrmsg(fmt, pvar);
+ va_end(pvar);
+
+ OutputDebugStringW(L"; ");
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ error,
+ 0, // Default language
+ (LPTSTR) &msg_buf,
+ 0,
+ NULL);
+ OutputDebugString(msg_buf);
+ LocalFree(msg_buf);
+
+ exit(error);
+}
+
+void
+_E__sys_error(char const *fmt, ...)
+{
+ LPVOID msg_buf;
+ DWORD error;
+ va_list pvar;
+
+ error = GetLastError();
+ va_start(pvar, fmt);
+ cst_verrmsg(fmt, pvar);
+ va_end(pvar);
+
+ OutputDebugStringW(L"; ");
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ error,
+ 0, // Default language
+ (LPTSTR) &msg_buf,
+ 0,
+ NULL);
+ OutputDebugString(msg_buf);
+ LocalFree(msg_buf);
+}
+
+void
+_E__abort_error(char const *fmt, ...)
+{
+ va_list pvar;
+
+ va_start(pvar, fmt);
+ cst_verrmsg(fmt, pvar);
+ va_end(pvar);
+
+ assert(2+2 == 5);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+/*********************************************************************
+ *
+ * File: errno.c
+ *
+ * Description: functions and variables missing from Windows CE standard
+ * library
+ *
+ * Author: Silvio Moioli <silvio@moioli.net>
+ *
+ *********************************************************************/
+
+#include <errno.h>
+
+#if defined(_WIN32_WCE)
+int errno;
+int _doserrno;
+int _sys_nerr;
+
+char* strerror(int errno){
+ static char buf[32]="wince::strerror called.";
+ return buf;
+}
+#endif
\ No newline at end of file
--- /dev/null
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "sphinxbase/f2c.h"
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4244)
+#endif
+
+
+extern void
+s_wsfe(cilist * f)
+{;
+}
+extern void
+e_wsfe(void)
+{;
+}
+extern void
+do_fio(integer * c, char *s, ftnlen l)
+{;
+}
+
+/* You'll want this if you redo the *_lite.c files with the -C option
+ * to f2c for checking array subscripts. (It's not suggested you do that
+ * for production use, of course.) */
+extern int
+s_rnge(char *var, int index, char *routine, int lineno)
+{
+ fprintf(stderr,
+ "array index out-of-bounds for %s[%d] in routine %s:%d\n", var,
+ index, routine, lineno);
+ fflush(stderr);
+ assert(2+2 == 5);
+ return 0;
+}
+
+
+#ifdef KR_headers
+extern double sqrt();
+float
+f__cabs(real, imag)
+float real, imag;
+#else
+#undef abs
+
+float
+f__cabs(float real, float imag)
+#endif
+{
+ float temp;
+
+ if (real < 0)
+ real = -real;
+ if (imag < 0)
+ imag = -imag;
+ if (imag > real) {
+ temp = real;
+ real = imag;
+ imag = temp;
+ }
+ if ((imag + real) == real)
+ return ((float) real);
+
+ temp = imag / real;
+ temp = real * sqrt(1.0 + temp * temp); /*overflow!! */
+ return (temp);
+}
+
+
+VOID
+#ifdef KR_headers
+s_cnjg(r, z)
+complex *r, *z;
+#else
+s_cnjg(complex * r, complex * z)
+#endif
+{
+ r->r = z->r;
+ r->i = -z->i;
+}
+
+
+#ifdef KR_headers
+float
+r_imag(z)
+complex *z;
+#else
+float
+r_imag(complex * z)
+#endif
+{
+ return (z->i);
+}
+
+
+#define log10e 0.43429448190325182765
+
+#ifdef KR_headers
+double log();
+float
+r_lg10(x)
+real *x;
+#else
+#undef abs
+
+float
+r_lg10(real * x)
+#endif
+{
+ return (log10e * log(*x));
+}
+
+
+#ifdef KR_headers
+float
+r_sign(a, b)
+real *a, *b;
+#else
+float
+r_sign(real * a, real * b)
+#endif
+{
+ float x;
+ x = (*a >= 0 ? *a : -*a);
+ return (*b >= 0 ? x : -x);
+}
+
+
+#ifdef KR_headers
+double floor();
+integer
+i_dnnt(x)
+real *x;
+#else
+#undef abs
+
+integer
+i_dnnt(real * x)
+#endif
+{
+ return ((*x) >= 0 ? floor(*x + .5) : -floor(.5 - *x));
+}
+
+
+#ifdef KR_headers
+double pow();
+double
+pow_dd(ap, bp)
+doublereal *ap, *bp;
+#else
+#undef abs
+
+double
+pow_dd(doublereal * ap, doublereal * bp)
+#endif
+{
+ return (pow(*ap, *bp));
+}
+
+
+#ifdef KR_headers
+float
+pow_ri(ap, bp)
+real *ap;
+integer *bp;
+#else
+float
+pow_ri(real * ap, integer * bp)
+#endif
+{
+ float pow, x;
+ integer n;
+ unsigned long u;
+
+ pow = 1;
+ x = *ap;
+ n = *bp;
+
+ if (n != 0) {
+ if (n < 0) {
+ n = -n;
+ x = 1 / x;
+ }
+ for (u = n;;) {
+ if (u & 01)
+ pow *= x;
+ if (u >>= 1)
+ x *= x;
+ else
+ break;
+ }
+ }
+ return (pow);
+}
+
+/* Unless compiled with -DNO_OVERWRITE, this variant of s_cat allows the
+ * target of a concatenation to appear on its right-hand side (contrary
+ * to the Fortran 77 Standard, but in accordance with Fortran 90).
+ */
+#define NO_OVERWRITE
+
+
+#ifndef NO_OVERWRITE
+
+#undef abs
+#ifdef KR_headers
+extern char *F77_aloc();
+extern void free();
+extern void exit_();
+#else
+
+extern char *F77_aloc(ftnlen, char *);
+#endif
+
+#endif /* NO_OVERWRITE */
+
+VOID
+#ifdef KR_headers
+s_cat(lp, rpp, rnp, np, ll)
+char *lp, *rpp[];
+ftnlen rnp[], *np, ll;
+#else
+s_cat(char *lp, char *rpp[], ftnlen rnp[], ftnlen * np, ftnlen ll)
+#endif
+{
+ ftnlen i, nc;
+ char *rp;
+ ftnlen n = *np;
+#ifndef NO_OVERWRITE
+ ftnlen L, m;
+ char *lp0, *lp1;
+
+ lp0 = 0;
+ lp1 = lp;
+ L = ll;
+ i = 0;
+ while (i < n) {
+ rp = rpp[i];
+ m = rnp[i++];
+ if (rp >= lp1 || rp + m <= lp) {
+ if ((L -= m) <= 0) {
+ n = i;
+ break;
+ }
+ lp1 += m;
+ continue;
+ }
+ lp0 = lp;
+ lp = lp1 = F77_aloc(L = ll, "s_cat");
+ break;
+ }
+ lp1 = lp;
+#endif /* NO_OVERWRITE */
+ for (i = 0; i < n; ++i) {
+ nc = ll;
+ if (rnp[i] < nc)
+ nc = rnp[i];
+ ll -= nc;
+ rp = rpp[i];
+ while (--nc >= 0)
+ *lp++ = *rp++;
+ }
+ while (--ll >= 0)
+ *lp++ = ' ';
+#ifndef NO_OVERWRITE
+ if (lp0) {
+ memmove(lp0, lp1, L);
+ free(lp1);
+ }
+#endif
+}
+
+
+/* compare two strings */
+
+#ifdef KR_headers
+integer
+s_cmp(a0, b0, la, lb)
+char *a0, *b0;
+ftnlen la, lb;
+#else
+integer
+s_cmp(char *a0, char *b0, ftnlen la, ftnlen lb)
+#endif
+{
+ register unsigned char *a, *aend, *b, *bend;
+ a = (unsigned char *) a0;
+ b = (unsigned char *) b0;
+ aend = a + la;
+ bend = b + lb;
+
+ if (la <= lb) {
+ while (a < aend)
+ if (*a != *b)
+ return (*a - *b);
+ else {
+ ++a;
+ ++b;
+ }
+
+ while (b < bend)
+ if (*b != ' ')
+ return (' ' - *b);
+ else
+ ++b;
+ }
+
+ else {
+ while (b < bend)
+ if (*a == *b) {
+ ++a;
+ ++b;
+ }
+ else
+ return (*a - *b);
+ while (a < aend)
+ if (*a != ' ')
+ return (*a - ' ');
+ else
+ ++a;
+ }
+ return (0);
+}
+
+/* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the
+ * target of an assignment to appear on its right-hand side (contrary
+ * to the Fortran 77 Standard, but in accordance with Fortran 90),
+ * as in a(2:5) = a(4:7) .
+ */
+
+
+
+/* assign strings: a = b */
+
+#ifdef KR_headers
+VOID
+s_copy(a, b, la, lb)
+register char *a, *b;
+ftnlen la, lb;
+#else
+void
+s_copy(register char *a, register char *b, ftnlen la, ftnlen lb)
+#endif
+{
+ register char *aend, *bend;
+
+ aend = a + la;
+
+ if (la <= lb)
+#ifndef NO_OVERWRITE
+ if (a <= b || a >= b + la)
+#endif
+ while (a < aend)
+ *a++ = *b++;
+#ifndef NO_OVERWRITE
+ else
+ for (b += la; a < aend;)
+ *--aend = *--b;
+#endif
+
+ else {
+ bend = b + lb;
+#ifndef NO_OVERWRITE
+ if (a <= b || a >= bend)
+#endif
+ while (b < bend)
+ *a++ = *b++;
+#ifndef NO_OVERWRITE
+ else {
+ a += lb;
+ while (b < bend)
+ *--a = *--bend;
+ a += lb;
+ }
+#endif
+ while (a < aend)
+ *a++ = ' ';
+ }
+}
+
+
+#ifdef KR_headers
+float f__cabs();
+float
+z_abs(z)
+complex *z;
+#else
+float f__cabs(float, float);
+float
+z_abs(complex * z)
+#endif
+{
+ return (f__cabs(z->r, z->i));
+}
+
+
+#ifdef KR_headers
+extern void sig_die();
+VOID
+z_div(c, a, b)
+complex *a, *b, *c;
+#else
+extern void sig_die(char *, int);
+void
+z_div(complex * c, complex * a, complex * b)
+#endif
+{
+ float ratio, den;
+ float abr, abi;
+
+ if ((abr = b->r) < 0.)
+ abr = -abr;
+ if ((abi = b->i) < 0.)
+ abi = -abi;
+ if (abr <= abi) {
+ /*Let IEEE Infinties handle this ;( */
+ /*if(abi == 0)
+ sig_die("complex division by zero", 1); */
+ ratio = b->r / b->i;
+ den = b->i * (1 + ratio * ratio);
+ c->r = (a->r * ratio + a->i) / den;
+ c->i = (a->i * ratio - a->r) / den;
+ }
+
+ else {
+ ratio = b->i / b->r;
+ den = b->r * (1 + ratio * ratio);
+ c->r = (a->r + a->i * ratio) / den;
+ c->i = (a->i - a->r * ratio) / den;
+ }
+
+}
+
+
+#ifdef KR_headers
+double sqrt();
+double f__cabs();
+VOID
+z_sqrt(r, z)
+complex *r, *z;
+#else
+#undef abs
+
+extern float f__cabs(float, float);
+void
+z_sqrt(complex * r, complex * z)
+#endif
+{
+ float mag;
+
+ if ((mag = f__cabs(z->r, z->i)) == 0.)
+ r->r = r->i = 0.;
+ else if (z->r > 0) {
+ r->r = sqrt(0.5 * (mag + z->r));
+ r->i = z->i / r->r / 2;
+ }
+ else {
+ r->i = sqrt(0.5 * (mag - z->r));
+ if (z->i < 0)
+ r->i = -r->i;
+ r->r = z->i / r->i / 2;
+ }
+}
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef KR_headers
+ integer pow_ii(ap, bp) integer *ap, *bp;
+#else
+ integer pow_ii(integer * ap, integer * bp)
+#endif
+ {
+ integer pow, x, n;
+ unsigned long u;
+
+ x = *ap;
+ n = *bp;
+
+ if (n <= 0) {
+ if (n == 0 || x == 1)
+ return 1;
+ if (x != -1)
+ return x != 0 ? 1 / x : 0;
+ n = -n;
+ } u = n;
+ for (pow = 1;;) {
+ if (u & 01)
+ pow *= x;
+ if (u >>= 1)
+ x *= x;
+ else
+ break;
+ }
+ return (pow);
+ }
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef KR_headers
+extern void f_exit();
+VOID
+s_stop(s, n)
+char *s;
+ftnlen n;
+#else
+#undef abs
+#undef min
+#undef max
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef __cplusplus
+ extern "C" {
+#endif
+ void f_exit(void);
+
+ int s_stop(char *s, ftnlen n)
+#endif
+ {
+ int i;
+
+ if (n > 0) {
+ fprintf(stderr, "STOP ");
+ for (i = 0; i < n; ++i)
+ putc(*s++, stderr);
+ fprintf(stderr, " statement executed\n");
+ }
+#ifdef NO_ONEXIT
+ f_exit();
+#endif
+ exit(0);
+
+/* We cannot avoid (useless) compiler diagnostics here: */
+/* some compilers complain if there is no return statement, */
+/* and others complain that this one cannot be reached. */
+
+ return 0; /* NOT REACHED */
+ }
+#ifdef __cplusplus
+ }
+#endif
+#ifdef __cplusplus
+}
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * filename.c -- File and path name operations.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: filename.c,v $
+ * Revision 1.5 2005/06/22 03:01:07 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 30-Oct-1997 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * Started.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "sphinxbase/filename.h"
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+
+/* Strip off all leading pathname components */
+void
+path2basename(const char *path, char *base)
+{
+ int32 i, l;
+
+ l = strlen(path);
+#if defined(_WIN32) || defined(__CYGWIN__)
+ for (i = l - 1; (i >= 0) && !(path[i] == '/' || path[i] == '\\'); --i);
+#else
+ for (i = l - 1; (i >= 0) && !(path[i] == '/'); --i);
+#endif
+ strcpy(base, path + i + 1);
+}
+
+/* Return all leading pathname components */
+void
+path2dirname(const char *path, char *dir)
+{
+ int32 i, l;
+
+ l = strlen(path);
+#if defined(_WIN32) || defined(__CYGWIN__)
+ for (i = l - 1; (i >= 0) && !(path[i] == '/' || path[i] == '\\'); --i);
+#else
+ for (i = l - 1; (i >= 0) && !(path[i] == '/'); --i);
+#endif
+ if (i <= 0)
+ dir[0] = '\0';
+ else {
+ memcpy(dir, path, i);
+ dir[i] = '\0';
+ }
+}
+
+
+/* Strip off the shortest trailing .xyz suffix */
+void
+strip_fileext(const char *path, char *root)
+{
+ int32 i, l;
+
+ l = strlen(path);
+ for (i = l - 1; (i >= 0) && (path[i] != '.'); --i);
+ if (i < 0)
+ strcpy(root, path); /* Didn't find a . */
+ else {
+ strncpy(root, path, i);
+ }
+}
+
+/* Test if this path is absolute. */
+int
+path_is_absolute(const char *path)
+{
+#if defined(_WIN32) && !defined(_WIN32_WCE) /* FIXME: Also SymbianOS */
+ return /* Starts with drive letter : \ or / */
+ (strlen(path) >= 3
+ &&
+ ((path[0] >= 'A' && path[0] <= 'Z')
+ || (path[0] >= 'a' && path[0] <= 'z'))
+ && path[1] == ':'
+ && (path[2] == '/' || path[2] == '\\'));
+#elif defined(_WIN32_WCE)
+ return path[0] == '\\' || path[0] == '/';
+#else /* Assume Unix */
+ return path[0] == '/';
+#endif
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ A C-program for MT19937, with initialization improved 2002/1/26.
+ Coded by Takuji Nishimura and Makoto Matsumoto.
+
+ Before using, initialize the state by using init_genrand(seed)
+ or init_by_array(init_key, key_length).
+
+ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+` notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The names of its contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ Any feedback is very welcome.
+ http://www.math.keio.ac.jp/matumoto/emt.html
+ email: matumoto@math.keio.ac.jp
+*/
+
+
+/*
+ * randgen.c : a portable random generator
+ *
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: genrand.c,v $
+ * Revision 1.2 2005/06/22 03:01:50 arthchan2003
+ * Added keyword
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 18-Nov-04 ARCHAN (archan@cs.cmu.edu) at Carnegie Mellon University
+ * First incorporated from the Mersenne Twister Random
+ * Number Generator package. It was chosen because it is
+ * in BSD-license and its performance is quite
+ * reasonable. Of course if you look at the inventors's
+ * page. This random generator can actually gives
+ * 19937-bits period. This is already far from we need.
+ * This will possibly good enough for the next 10 years.
+ *
+ * I also downgrade the code a little bit to avoid Sphinx's
+ * developers misused it.
+ */
+
+
+
+#include <stdio.h>
+
+#include "sphinxbase/genrand.h"
+
+/* Period parameters */
+#define N 624
+#define M 397
+#define MATRIX_A 0x9908b0dfUL /* constant vector a */
+#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
+#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
+
+void init_genrand(unsigned long s);
+
+void
+genrand_seed(unsigned long s)
+{
+ init_genrand(s);
+}
+
+
+static unsigned long mt[N]; /* the array for the state vector */
+static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */
+
+/* initializes mt[N] with a seed */
+void
+init_genrand(unsigned long s)
+{
+ mt[0] = s & 0xffffffffUL;
+ for (mti = 1; mti < N; mti++) {
+ mt[mti] =
+ (1812433253UL * (mt[mti - 1] ^ (mt[mti - 1] >> 30)) + mti);
+ /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
+ /* In the previous versions, MSBs of the seed affect */
+ /* only MSBs of the array mt[]. */
+ /* 2002/01/09 modified by Makoto Matsumoto */
+ mt[mti] &= 0xffffffffUL;
+ /* for >32 bit machines */
+ }
+}
+
+/* generates a random number on [0,0xffffffff]-interval */
+unsigned long
+genrand_int32(void)
+{
+ unsigned long y;
+ static unsigned long mag01[2] = { 0x0UL, MATRIX_A };
+ /* mag01[x] = x * MATRIX_A for x=0,1 */
+
+ if (mti >= N) { /* generate N words at one time */
+ int kk;
+
+ if (mti == N + 1) /* if init_genrand() has not been called, */
+ init_genrand(5489UL); /* a default initial seed is used */
+
+ for (kk = 0; kk < N - M; kk++) {
+ y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);
+ mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1UL];
+ }
+ for (; kk < N - 1; kk++) {
+ y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);
+ mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
+ }
+ y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);
+ mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1UL];
+
+ mti = 0;
+ }
+
+ y = mt[mti++];
+
+ /* Tempering */
+ y ^= (y >> 11);
+ y ^= (y << 7) & 0x9d2c5680UL;
+ y ^= (y << 15) & 0xefc60000UL;
+ y ^= (y >> 18);
+
+ return y;
+}
+
+/* generates a random number on [0,0x7fffffff]-interval */
+long
+genrand_int31(void)
+{
+ return (long) (genrand_int32() >> 1);
+}
+
+/* generates a random number on [0,1]-real-interval */
+double
+genrand_real1(void)
+{
+ return genrand_int32() * (1.0 / 4294967295.0);
+ /* divided by 2^32-1 */
+}
+
+/* generates a random number on [0,1)-real-interval */
+double
+genrand_real2(void)
+{
+ return genrand_int32() * (1.0 / 4294967296.0);
+ /* divided by 2^32 */
+}
+
+/* generates a random number on (0,1)-real-interval */
+double
+genrand_real3(void)
+{
+ return (((double) genrand_int32()) + 0.5) * (1.0 / 4294967296.0);
+ /* divided by 2^32 */
+}
+
+/* generates a random number on [0,1) with 53-bit resolution*/
+double
+genrand_res53(void)
+{
+ unsigned long a = genrand_int32() >> 5, b = genrand_int32() >> 6;
+ return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);
+}
+
+/* These real versions are due to Isaku Wada, 2002/01/09 added */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * glist.h -- Module for maintaining a generic, linear linked-list structure.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: glist.c,v $
+ * Revision 1.8 2005/06/22 03:02:51 arthchan2003
+ * 1, Fixed doxygen documentation, 2, add keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 09-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added glist_chkdup_*().
+ *
+ * 13-Feb-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created from earlier version.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "sphinxbase/glist.h"
+#include "sphinxbase/ckd_alloc.h"
+
+
+glist_t
+glist_add_ptr(glist_t g, void *ptr)
+{
+ gnode_t *gn;
+
+ gn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ gn->data.ptr = ptr;
+ gn->next = g;
+ return ((glist_t) gn); /* Return the new head of the list */
+}
+
+
+glist_t
+glist_add_int32(glist_t g, int32 val)
+{
+ gnode_t *gn;
+
+ gn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ gn->data.i = (long)val;
+ gn->next = g;
+ return ((glist_t) gn); /* Return the new head of the list */
+}
+
+
+glist_t
+glist_add_uint32(glist_t g, uint32 val)
+{
+ gnode_t *gn;
+
+ gn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ gn->data.ui = (unsigned long)val;
+ gn->next = g;
+ return ((glist_t) gn); /* Return the new head of the list */
+}
+
+
+glist_t
+glist_add_float32(glist_t g, float32 val)
+{
+ gnode_t *gn;
+
+ gn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ gn->data.fl = (double)val;
+ gn->next = g;
+ return ((glist_t) gn); /* Return the new head of the list */
+}
+
+
+glist_t
+glist_add_float64(glist_t g, float64 val)
+{
+ gnode_t *gn;
+
+ gn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ gn->data.fl = (double)val;
+ gn->next = g;
+ return ((glist_t) gn); /* Return the new head of the list */
+}
+
+void
+glist_free(glist_t g)
+{
+ gnode_t *gn;
+
+ while (g) {
+ gn = g;
+ g = gn->next;
+ ckd_free((void *) gn);
+ }
+}
+
+int32
+glist_count(glist_t g)
+{
+ gnode_t *gn;
+ int32 n;
+
+ for (gn = g, n = 0; gn; gn = gn->next, n++);
+ return n;
+}
+
+
+gnode_t *
+glist_tail(glist_t g)
+{
+ gnode_t *gn;
+
+ if (!g)
+ return NULL;
+
+ for (gn = g; gn->next; gn = gn->next);
+ return gn;
+}
+
+
+glist_t
+glist_reverse(glist_t g)
+{
+ gnode_t *gn, *nextgn;
+ gnode_t *rev;
+
+ rev = NULL;
+ for (gn = g; gn; gn = nextgn) {
+ nextgn = gn->next;
+
+ gn->next = rev;
+ rev = gn;
+ }
+
+ return rev;
+}
+
+
+gnode_t *
+glist_insert_ptr(gnode_t * gn, void *ptr)
+{
+ gnode_t *newgn;
+
+ newgn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ newgn->data.ptr = ptr;
+ newgn->next = gn->next;
+ gn->next = newgn;
+
+ return newgn;
+}
+
+
+gnode_t *
+glist_insert_int32(gnode_t * gn, int32 val)
+{
+ gnode_t *newgn;
+
+ newgn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ newgn->data.i = val;
+ newgn->next = gn->next;
+ gn->next = newgn;
+
+ return newgn;
+}
+
+
+gnode_t *
+glist_insert_uint32(gnode_t * gn, uint32 val)
+{
+ gnode_t *newgn;
+
+ newgn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ newgn->data.ui = val;
+ newgn->next = gn->next;
+
+ gn->next = newgn;
+
+ return newgn;
+}
+
+
+gnode_t *
+glist_insert_float32(gnode_t * gn, float32 val)
+{
+ gnode_t *newgn;
+
+ newgn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ newgn->data.fl = (double)val;
+ newgn->next = gn->next;
+ gn->next = newgn;
+
+ return newgn;
+}
+
+
+gnode_t *
+glist_insert_float64(gnode_t * gn, float64 val)
+{
+ gnode_t *newgn;
+
+ newgn = (gnode_t *) ckd_calloc(1, sizeof(gnode_t));
+ newgn->data.fl = (double)val;
+ newgn->next = gn->next;
+ gn->next = newgn;
+
+ return newgn;
+}
+
+gnode_t *
+gnode_free(gnode_t * gn, gnode_t * pred)
+{
+ gnode_t *next;
+
+ next = gn->next;
+ if (pred) {
+ assert(pred->next == gn);
+
+ pred->next = next;
+ }
+
+ ckd_free((char *) gn);
+
+ return next;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * hash.c -- Hash table module.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: hash.c,v $
+ * Revision 1.5 2005/06/22 03:04:01 arthchan2003
+ * 1, Implemented hash_delete and hash_display, 2, Fixed doxygen documentation, 3, Added keyword.
+ *
+ * Revision 1.9 2005/05/25 06:17:53 archan
+ * Delete the test code in cmd_ln.c and fixed platform specific code of hash.c
+ *
+ * Revision 1.8 2005/05/24 01:10:54 archan
+ * Fix a bug when the value only appear in the hash but there is no chain. Also make sure that prev was initialized to NULL. All success cases were tested, but not tested with the deletion is tested.
+ *
+ * Revision 1.6 2005/05/24 00:00:45 archan
+ * Added basic functionalities to hash_t: 1, display and 2, delete a key from a hash. \n
+ *
+ * Revision 1.5 2005/05/11 07:01:38 archan
+ * Added comments on the usage of the current implementation of hash tables.
+ *
+ * Revision 1.4 2005/05/03 04:09:11 archan
+ * Implemented the heart of word copy search. For every ci-phone, every word end, a tree will be allocated to preserve its pathscore. This is different from 3.5 or below, only the best score for a particular ci-phone, regardless of the word-ends will be preserved at every frame. The graph propagation will not collect unused word tree at this point. srch_WST_propagate_wd_lv2 is also as the most stupid in the century. But well, after all, everything needs a start. I will then really get the results from the search and see how it looks.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 05-May-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Removed hash_key2hash(). Added hash_enter_bkey() and hash_lookup_bkey(),
+ * and len attribute to hash_entry_t.
+ *
+ * 30-Apr-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Added hash_key2hash().
+ *
+ * 18-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Included case sensitive/insensitive option. Removed local, static
+ * maintenance of all hash tables.
+ *
+ * 31-Jul-95 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon
+ * Created.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4018)
+#endif
+
+#include "sphinxbase/hash_table.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/case.h"
+
+
+#if 0
+static void
+prime_sieve(int32 max)
+{
+ char *notprime;
+ int32 p, pp;
+
+ notprime = (char *) ckd_calloc(max + 1, 1);
+ p = 2;
+ for (;;) {
+ printf("%d\n", p);
+ for (pp = p + p; pp <= max; pp += p)
+ notprime[pp] = 1;
+ for (++p; (p <= max) && notprime[p]; p++);
+ if (p > max)
+ break;
+ }
+}
+#endif
+
+
+/*
+ * HACK!! Initial hash table size is restricted by this set of primes. (Of course,
+ * collision resolution by chaining will accommodate more entries indefinitely, but
+ * efficiency will drop.)
+ */
+const int32 prime[] = {
+ 101, 211, 307, 401, 503, 601, 701, 809, 907,
+ 1009, 1201, 1601, 2003, 2411, 3001, 4001, 5003, 6007, 7001, 8009,
+ 9001,
+ 10007, 12007, 16001, 20011, 24001, 30011, 40009, 50021, 60013,
+ 70001, 80021, 90001,
+ 100003, 120011, 160001, 200003, 240007, 300007, 400009, 500009,
+ 600011, 700001, 800011, 900001,
+ -1
+};
+
+
+/**
+ * This function returns a very large prime.
+ */
+static int32
+prime_size(int32 size)
+{
+ int32 i;
+
+ for (i = 0; (prime[i] > 0) && (prime[i] < size); i++);
+ if (prime[i] <= 0) {
+ E_WARN("Very large hash table requested (%d entries)\n", size);
+ --i;
+ }
+ return (prime[i]);
+}
+
+
+hash_table_t *
+hash_table_new(int32 size, int32 casearg)
+{
+ hash_table_t *h;
+
+ h = (hash_table_t *) ckd_calloc(1, sizeof(hash_table_t));
+ h->size = prime_size(size + (size >> 1));
+ h->nocase = (casearg == HASH_CASE_NO);
+ h->table = (hash_entry_t *) ckd_calloc(h->size, sizeof(hash_entry_t));
+ /* The above calloc clears h->table[*].key and .next to NULL, i.e. an empty table */
+
+ return h;
+}
+
+
+/*
+ * Compute hash value for given key string.
+ * Somewhat tuned for English text word strings.
+ */
+static uint32
+key2hash(hash_table_t * h, const char *key)
+{
+
+ register const char *cp;
+
+ /** ARCHAN 20050712:
+ [1236322] libutil\str2words special character bgu
+ HACK Apply suggested hack of fixing the hash table such that
+ it can work with extended ascii code . This is a hack because
+ the best way to solve it is to make sure all character
+ representation is unsigned character in the first place. (or
+ better unicode.)
+ **/
+
+ /*register char c; */
+ register unsigned char c;
+ register int32 s;
+ register uint32 hash;
+
+ hash = 0;
+ s = 0;
+
+ if (h->nocase) {
+ for (cp = key; *cp; cp++) {
+ c = *cp;
+ c = UPPER_CASE(c);
+ hash += c << s;
+ s += 5;
+ if (s >= 25)
+ s -= 24;
+ }
+ }
+ else {
+ for (cp = key; *cp; cp++) {
+ hash += (*cp) << s;
+ s += 5;
+ if (s >= 25)
+ s -= 24;
+ }
+ }
+
+ return (hash % h->size);
+}
+
+
+static char *
+makekey(uint8 * data, int32 len, char *key)
+{
+ int32 i, j;
+
+ if (!key)
+ key = (char *) ckd_calloc(len * 2 + 1, sizeof(char));
+
+ for (i = 0, j = 0; i < len; i++, j += 2) {
+ key[j] = 'A' + (data[i] & 0x000f);
+ key[j + 1] = 'J' + ((data[i] >> 4) & 0x000f);
+ }
+ key[j] = '\0';
+
+ return key;
+}
+
+
+static int32
+keycmp_nocase(hash_entry_t * entry, const char *key)
+{
+ char c1, c2;
+ int32 i;
+ const char *str;
+
+ str = entry->key;
+ for (i = 0; i < entry->len; i++) {
+ c1 = *(str++);
+ c1 = UPPER_CASE(c1);
+ c2 = *(key++);
+ c2 = UPPER_CASE(c2);
+ if (c1 != c2)
+ return (c1 - c2);
+ }
+
+ return 0;
+}
+
+
+static int32
+keycmp_case(hash_entry_t * entry, const char *key)
+{
+ char c1, c2;
+ int32 i;
+ const char *str;
+
+ str = entry->key;
+ for (i = 0; i < entry->len; i++) {
+ c1 = *(str++);
+ c2 = *(key++);
+ if (c1 != c2)
+ return (c1 - c2);
+ }
+
+ return 0;
+}
+
+
+/*
+ * Lookup entry with hash-value hash in table h for given key
+ * Return value: hash_entry_t for key
+ */
+static hash_entry_t *
+lookup(hash_table_t * h, uint32 hash, const char *key, size_t len)
+{
+ hash_entry_t *entry;
+
+ entry = &(h->table[hash]);
+ if (entry->key == NULL)
+ return NULL;
+
+ if (h->nocase) {
+ while (entry && ((entry->len != len)
+ || (keycmp_nocase(entry, key) != 0)))
+ entry = entry->next;
+ }
+ else {
+ while (entry && ((entry->len != len)
+ || (keycmp_case(entry, key) != 0)))
+ entry = entry->next;
+ }
+
+ return entry;
+}
+
+
+int32
+hash_table_lookup(hash_table_t * h, const char *key, void ** val)
+{
+ hash_entry_t *entry;
+ uint32 hash;
+ int32 len;
+
+ hash = key2hash(h, key);
+ len = strlen(key);
+
+ entry = lookup(h, hash, key, len);
+ if (entry) {
+ if (val)
+ *val = entry->val;
+ return 0;
+ }
+ else
+ return -1;
+}
+
+int32
+hash_table_lookup_int32(hash_table_t * h, const char *key, int32 *val)
+{
+ void *vval;
+ int32 rv;
+
+ rv = hash_table_lookup(h, key, &vval);
+ if (rv != 0)
+ return rv;
+ if (val)
+ *val = (int32)(long)vval;
+ return 0;
+}
+
+
+int32
+hash_table_lookup_bkey(hash_table_t * h, const char *key, size_t len, void ** val)
+{
+ hash_entry_t *entry;
+ uint32 hash;
+ char *str;
+
+ str = makekey((uint8 *) key, len, NULL);
+ hash = key2hash(h, str);
+ ckd_free(str);
+
+ entry = lookup(h, hash, key, len);
+ if (entry) {
+ if (val)
+ *val = entry->val;
+ return 0;
+ }
+ else
+ return -1;
+}
+
+int32
+hash_table_lookup_bkey_int32(hash_table_t * h, const char *key, size_t len, int32 *val)
+{
+ void *vval;
+ int32 rv;
+
+ rv = hash_table_lookup_bkey(h, key, len, &vval);
+ if (rv != 0)
+ return rv;
+ if (val)
+ *val = (int32)(long)vval;
+ return 0;
+}
+
+
+static void *
+enter(hash_table_t * h, uint32 hash, const char *key, size_t len, void *val, int32 replace)
+{
+ hash_entry_t *cur, *new;
+
+ if ((cur = lookup(h, hash, key, len)) != NULL) {
+ void *oldval;
+ /* Key already exists. */
+ oldval = cur->val;
+ if (replace) {
+ /* Replace the pointer if replacement is requested,
+ * because this might be a different instance of the same
+ * string (this verges on magic, sorry) */
+ cur->key = key;
+ cur->val = val;
+ }
+ return oldval;
+ }
+
+ cur = &(h->table[hash]);
+ if (cur->key == NULL) {
+ /* Empty slot at hashed location; add this entry */
+ cur->key = key;
+ cur->len = len;
+ cur->val = val;
+
+ /* Added by ARCHAN at 20050515. This allows deletion could work. */
+ cur->next = NULL;
+
+ }
+ else {
+ /* Key collision; create new entry and link to hashed location */
+ new = (hash_entry_t *) ckd_calloc(1, sizeof(hash_entry_t));
+ new->key = key;
+ new->len = len;
+ new->val = val;
+ new->next = cur->next;
+ cur->next = new;
+ }
+ ++h->inuse;
+
+ return val;
+}
+
+/* 20050523 Added by ARCHAN to delete a key from a hash table */
+static void *
+delete(hash_table_t * h, uint32 hash, const char *key, size_t len)
+{
+ hash_entry_t *entry, *prev;
+ void *val;
+
+ prev = NULL;
+ entry = &(h->table[hash]);
+ if (entry->key == NULL)
+ return NULL;
+
+ if (h->nocase) {
+ while (entry && ((entry->len != len)
+ || (keycmp_nocase(entry, key) != 0))) {
+ prev = entry;
+ entry = entry->next;
+ }
+ }
+ else {
+ while (entry && ((entry->len != len)
+ || (keycmp_case(entry, key) != 0))) {
+ prev = entry;
+ entry = entry->next;
+ }
+ }
+
+ if (entry == NULL)
+ return NULL;
+
+ /* At this point, entry will be the one required to be deleted, prev
+ will contain the previous entry
+ */
+ val = entry->val;
+
+ if (prev == NULL) {
+ /* That is to say the entry in the hash table (not the chain) matched the key. */
+ /* We will then copy the things from the next entry to the hash table */
+ prev = entry;
+ if (entry->next) { /* There is a next entry, great, copy it. */
+ entry = entry->next;
+ prev->key = entry->key;
+ prev->len = entry->len;
+ prev->val = entry->val;
+ prev->next = entry->next;
+ ckd_free(entry);
+ }
+ else { /* There is not a next entry, just set the key to null */
+ prev->key = NULL;
+ prev->len = 0;
+ prev->next = NULL;
+ }
+
+ }
+ else { /* This case is simple */
+ prev->next = entry->next;
+ ckd_free(entry);
+ }
+
+ /* Do wiring and free the entry */
+
+ --h->inuse;
+
+ return val;
+}
+
+void
+hash_table_empty(hash_table_t *h)
+{
+ hash_entry_t *e, *e2;
+ int32 i;
+
+ for (i = 0; i < h->size; i++) {
+ /* Free collision lists. */
+ for (e = h->table[i].next; e; e = e2) {
+ e2 = e->next;
+ ckd_free((void *) e);
+ }
+ memset(&h->table[i], 0, sizeof(h->table[i]));
+ }
+ h->inuse = 0;
+}
+
+
+void *
+hash_table_enter(hash_table_t * h, const char *key, void *val)
+{
+ uint32 hash;
+ size_t len;
+
+ hash = key2hash(h, key);
+ len = strlen(key);
+ return (enter(h, hash, key, len, val, 0));
+}
+
+void *
+hash_table_replace(hash_table_t * h, const char *key, void *val)
+{
+ uint32 hash;
+ size_t len;
+
+ hash = key2hash(h, key);
+ len = strlen(key);
+ return (enter(h, hash, key, len, val, 1));
+}
+
+void *
+hash_table_delete(hash_table_t * h, const char *key)
+{
+ uint32 hash;
+ size_t len;
+
+ hash = key2hash(h, key);
+ len = strlen(key);
+
+ return (delete(h, hash, key, len));
+}
+
+void *
+hash_table_enter_bkey(hash_table_t * h, const char *key, size_t len, void *val)
+{
+ uint32 hash;
+ char *str;
+
+ str = makekey((uint8 *) key, len, NULL);
+ hash = key2hash(h, str);
+ ckd_free(str);
+
+ return (enter(h, hash, key, len, val, 0));
+}
+
+void *
+hash_table_replace_bkey(hash_table_t * h, const char *key, size_t len, void *val)
+{
+ uint32 hash;
+ char *str;
+
+ str = makekey((uint8 *) key, len, NULL);
+ hash = key2hash(h, str);
+ ckd_free(str);
+
+ return (enter(h, hash, key, len, val, 1));
+}
+
+void *
+hash_table_delete_bkey(hash_table_t * h, const char *key, size_t len)
+{
+ uint32 hash;
+ char *str;
+
+ str = makekey((uint8 *) key, len, NULL);
+ hash = key2hash(h, str);
+
+ return (delete(h, hash, key, len));
+}
+
+void
+hash_table_display(hash_table_t * h, int32 showdisplay)
+{
+ hash_entry_t *e;
+ int i, j;
+ j = 0;
+
+ E_INFOCONT("Hash with chaining representation of the hash table\n");
+
+ for (i = 0; i < h->size; i++) {
+ e = &(h->table[i]);
+ if (e->key != NULL) {
+ E_INFOCONT("|key:");
+ if (showdisplay)
+ E_INFOCONT("%s", e->key);
+ else
+ E_INFOCONT("%p", e->key);
+
+ E_INFOCONT("|len:%d|val=%ld|->", e->len, (long)e->val);
+ if (e->next == NULL) {
+ E_INFOCONT("NULL\n");
+ }
+ j++;
+
+ for (e = e->next; e; e = e->next) {
+ E_INFOCONT("|key:");
+ if (showdisplay)
+ E_INFOCONT("%s", e->key);
+
+ E_INFOCONT("|len:%d|val=%ld|->", e->len, (long)e->val);
+ if (e->next == NULL) {
+ E_INFOCONT("NULL\n");
+ }
+ j++;
+ }
+ }
+ }
+
+ E_INFOCONT("The total number of keys =%d\n", j);
+}
+
+
+glist_t
+hash_table_tolist(hash_table_t * h, int32 * count)
+{
+ glist_t g;
+ hash_entry_t *e;
+ int32 i, j;
+
+ g = NULL;
+
+ j = 0;
+ for (i = 0; i < h->size; i++) {
+ e = &(h->table[i]);
+
+ if (e->key != NULL) {
+ g = glist_add_ptr(g, (void *) e);
+ j++;
+
+ for (e = e->next; e; e = e->next) {
+ g = glist_add_ptr(g, (void *) e);
+ j++;
+ }
+ }
+ }
+
+ if (count)
+ *count = j;
+
+ return g;
+}
+
+hash_iter_t *
+hash_table_iter(hash_table_t *h)
+{
+ hash_iter_t *itor;
+
+ itor = ckd_calloc(1, sizeof(*itor));
+ itor->ht = h;
+ return hash_table_iter_next(itor);
+}
+
+hash_iter_t *
+hash_table_iter_next(hash_iter_t *itor)
+{
+ /* If there is an entry, walk down its list. */
+ if (itor->ent)
+ itor->ent = itor->ent->next;
+ /* If we got to the end of the chain, or we had no entry, scan
+ * forward in the table to find the next non-empty bucket. */
+ if (itor->ent == NULL) {
+ while (itor->idx < itor->ht->size
+ && itor->ht->table[itor->idx].key == NULL)
+ ++itor->idx;
+ /* If we did not find one then delete the iterator and
+ * return NULL. */
+ if (itor->idx == itor->ht->size) {
+ hash_table_iter_free(itor);
+ return NULL;
+ }
+ /* Otherwise use this next entry. */
+ itor->ent = itor->ht->table + itor->idx;
+ /* Increase idx for the next time around. */
+ ++itor->idx;
+ }
+ return itor;
+}
+
+void
+hash_table_iter_free(hash_iter_t *itor)
+{
+ ckd_free(itor);
+}
+
+void
+hash_table_free(hash_table_t * h)
+{
+ hash_entry_t *e, *e2;
+ int32 i;
+
+ if (h == NULL)
+ return;
+
+ /* Free additional entries created for key collision cases */
+ for (i = 0; i < h->size; i++) {
+ for (e = h->table[i].next; e; e = e2) {
+ e2 = e->next;
+ ckd_free((void *) e);
+ }
+ }
+
+ ckd_free((void *) h->table);
+ ckd_free((void *) h);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * heap.c -- Generic heap structure for inserting in any and popping in sorted
+ * order.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: heap.c,v $
+ * Revision 1.4 2005/06/22 03:05:49 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Add keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 05-Mar-99 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Fixed bug in heap_destroy() (in while loop exit condition).
+ *
+ * 23-Dec-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Started.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "sphinxbase/heap.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+
+/**
+ * One node on the heap
+ */
+typedef struct heapnode_s {
+ void *data; /**< Application data at this node */
+ int32 val; /**< Associated with above application data; according to which
+ heap is sorted (in ascending order) */
+ int32 nl, nr; /**< #left/right descendants of this node (for balancing heap) */
+ struct heapnode_s *l; /**< Root of left descendant heap */
+ struct heapnode_s *r; /**< Root of right descendant heap */
+} heapnode_t;
+
+/**
+ * Internal heap data structure.
+ */
+struct heap_s {
+ heapnode_t *top;
+};
+
+
+#if 0
+static void
+heap_dump(heapnode_t * top, int32 level)
+{
+ int32 i;
+
+ if (!top)
+ return;
+
+ for (i = 0; i < level; i++)
+ printf(" ");
+ /* print top info */
+ heap_dump(top->l, level + 1);
+ heap_dump(top->r, level + 1);
+}
+#endif
+
+
+heap_t *
+heap_new(void)
+{
+ heap_t *h = ckd_calloc(1, sizeof(*h));
+ return h;
+}
+
+
+static heapnode_t *
+subheap_insert(heapnode_t * root, void *data, int32 val)
+{
+ heapnode_t *h;
+ void *tmpdata;
+ int32 tmpval;
+
+ if (!root) {
+ h = (heapnode_t *) ckd_calloc(1, sizeof(heapnode_t));
+ h->data = data;
+ h->val = val;
+ h->l = h->r = NULL;
+ h->nl = h->nr = 0;
+ return h;
+ }
+
+ /* Root already exists; if new value is less, replace root node */
+ if (root->val > val) {
+ tmpdata = root->data;
+ tmpval = root->val;
+ root->data = data;
+ root->val = val;
+ data = tmpdata;
+ val = tmpval;
+ }
+
+ /* Insert new or old (replaced) node in right or left subtree; keep them balanced */
+ if (root->nl > root->nr) {
+ root->r = subheap_insert(root->r, data, val);
+ root->nr++;
+ }
+ else {
+ root->l = subheap_insert(root->l, data, val);
+ root->nl++;
+ }
+
+ return root;
+}
+
+
+int
+heap_insert(heap_t *heap, void *data, int32 val)
+{
+ heap->top = subheap_insert(heap->top, data, val);
+ return 0;
+}
+
+
+static heapnode_t *
+subheap_pop(heapnode_t * root)
+{
+ heapnode_t *l, *r;
+
+ /* Propagate best value from below into root, if any */
+ l = root->l;
+ r = root->r;
+
+ if (!l) {
+ if (!r) {
+ ckd_free((char *) root);
+ return NULL;
+ }
+ else {
+ root->data = r->data;
+ root->val = r->val;
+ root->r = subheap_pop(r);
+ root->nr--;
+ }
+ }
+ else {
+ if ((!r) || (l->val < r->val)) {
+ root->data = l->data;
+ root->val = l->val;
+ root->l = subheap_pop(l);
+ root->nl--;
+ }
+ else {
+ root->data = r->data;
+ root->val = r->val;
+ root->r = subheap_pop(r);
+ root->nr--;
+ }
+ }
+
+ return root;
+}
+
+
+int
+heap_pop(heap_t *heap, void **data, int32 * val)
+{
+ if (heap->top == NULL)
+ return 0;
+ *data = heap->top->data;
+ *val = heap->top->val;
+ heap->top = subheap_pop(heap->top);
+ return 1;
+}
+
+
+int
+heap_top(heap_t *heap, void **data, int32 * val)
+{
+ if (heap->top == NULL)
+ return 0;
+ *data = heap->top->data;
+ *val = heap->top->val;
+ return 1;
+}
+
+static int
+heap_remove_one(heap_t *heap, heapnode_t *top, void *data)
+{
+ if (top == NULL)
+ return -1;
+ else if (top->data == data) {
+ assert(top == heap->top);
+ heap->top = subheap_pop(heap->top);
+ return 0;
+ }
+ if (top->l) {
+ if (top->l->data == data) {
+ top->l = subheap_pop(top->l);
+ --top->nl;
+ return 0;
+ }
+ else if (heap_remove_one(heap, top->l, data) == 0) {
+ --top->nl;
+ return 0;
+ }
+ }
+ if (top->r) {
+ if (top->r->data == data) {
+ top->r = subheap_pop(top->r);
+ --top->nr;
+ return 0;
+ }
+ else if (heap_remove_one(heap, top->r, data) == 0) {
+ --top->nr;
+ return 0;
+ }
+ }
+ return -1;
+}
+
+int
+heap_remove(heap_t *heap, void *data)
+{
+ return heap_remove_one(heap, heap->top, data);
+}
+
+
+size_t
+heap_size(heap_t *heap)
+{
+ if (heap->top == NULL)
+ return 0;
+ return heap->top->nl + heap->top->nr + 1;
+}
+
+int
+heap_destroy(heap_t *heap)
+{
+ void *data;
+ int32 val;
+
+ /* Empty the heap and free it */
+ while (heap_pop(heap, &data, &val) > 0)
+ ;
+ ckd_free(heap);
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2009 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <string.h>
+
+#include "sphinxbase/huff_code.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/hash_table.h"
+#include "sphinxbase/byteorder.h"
+#include "sphinxbase/heap.h"
+#include "sphinxbase/pio.h"
+#include "sphinxbase/err.h"
+
+typedef struct huff_node_s {
+ int nbits;
+ struct huff_node_s *l;
+ union {
+ int32 ival;
+ char *sval;
+ struct huff_node_s *r;
+ } r;
+} huff_node_t;
+
+typedef struct huff_codeword_s {
+ union {
+ int32 ival;
+ char *sval;
+ } r;
+ uint32 nbits, codeword;
+} huff_codeword_t;
+
+enum {
+ HUFF_CODE_INT,
+ HUFF_CODE_STR
+};
+
+struct huff_code_s {
+ int16 refcount;
+ uint8 maxbits;
+ uint8 type;
+ uint32 *firstcode;
+ uint32 *numl;
+ huff_codeword_t **syms;
+ hash_table_t *codewords;
+ FILE *fh;
+ bit_encode_t *be;
+ int boff;
+};
+
+static huff_node_t *
+huff_node_new_int(int32 val)
+{
+ huff_node_t *hn = ckd_calloc(1, sizeof(*hn));
+ hn->r.ival = val;
+ return hn;
+}
+
+static huff_node_t *
+huff_node_new_str(char const *val)
+{
+ huff_node_t *hn = ckd_calloc(1, sizeof(*hn));
+ hn->r.sval = ckd_salloc(val);
+ return hn;
+}
+
+static huff_node_t *
+huff_node_new_parent(huff_node_t *l, huff_node_t *r)
+{
+ huff_node_t *hn = ckd_calloc(1, sizeof(*hn));
+ hn->l = l;
+ hn->r.r = r;
+ /* Propagate maximum bit length. */
+ if (r->nbits > l->nbits)
+ hn->nbits = r->nbits + 1;
+ else
+ hn->nbits = l->nbits + 1;
+ return hn;
+}
+
+static void
+huff_node_free_int(huff_node_t *root)
+{
+ if (root->l) {
+ huff_node_free_int(root->l);
+ huff_node_free_int(root->r.r);
+ }
+ ckd_free(root);
+}
+
+static void
+huff_node_free_str(huff_node_t *root, int freestr)
+{
+ if (root->l) {
+ huff_node_free_str(root->l, freestr);
+ huff_node_free_str(root->r.r, freestr);
+ }
+ else {
+ if (freestr)
+ ckd_free(root->r.sval);
+ }
+ ckd_free(root);
+}
+
+static huff_node_t *
+huff_code_build_tree(heap_t *q)
+{
+ huff_node_t *root = NULL;
+ int32 rf;
+
+ while (heap_size(q) > 1) {
+ huff_node_t *l, *r, *p;
+ int32 lf, rf;
+
+ heap_pop(q, (void *)&l, &lf);
+ heap_pop(q, (void *)&r, &rf);
+ p = huff_node_new_parent(l, r);
+ heap_insert(q, p, lf + rf);
+ }
+ heap_pop(q, (void **)&root, &rf);
+ return root;
+}
+
+static void
+huff_code_canonicalize(huff_code_t *hc, huff_node_t *root)
+{
+ glist_t agenda;
+ uint32 *nextcode;
+ int i, ncw;
+
+ hc->firstcode = ckd_calloc(hc->maxbits+1, sizeof(*hc->firstcode));
+ hc->syms = ckd_calloc(hc->maxbits+1, sizeof(*hc->syms));
+ hc->numl = ckd_calloc(hc->maxbits+1, sizeof(*nextcode));
+ nextcode = ckd_calloc(hc->maxbits+1, sizeof(*nextcode));
+
+ /* Traverse the tree, annotating it with the actual bit
+ * lengths, and histogramming them in numl. */
+ root->nbits = 0;
+ ncw = 0;
+ agenda = glist_add_ptr(NULL, root);
+ while (agenda) {
+ huff_node_t *node = gnode_ptr(agenda);
+ agenda = gnode_free(agenda, NULL);
+ if (node->l) {
+ node->l->nbits = node->nbits + 1;
+ agenda = glist_add_ptr(agenda, node->l);
+ node->r.r->nbits = node->nbits + 1;
+ agenda = glist_add_ptr(agenda, node->r.r);
+ }
+ else {
+ hc->numl[node->nbits]++;
+ ncw++;
+ }
+ }
+ /* Create starting codes and symbol tables for each bit length. */
+ hc->syms[hc->maxbits] = ckd_calloc(hc->numl[hc->maxbits], sizeof(**hc->syms));
+ for (i = hc->maxbits - 1; i > 0; --i) {
+ hc->firstcode[i] = (hc->firstcode[i+1] + hc->numl[i+1]) / 2;
+ hc->syms[i] = ckd_calloc(hc->numl[i], sizeof(**hc->syms));
+ }
+ memcpy(nextcode, hc->firstcode, (hc->maxbits + 1) * sizeof(*nextcode));
+ /* Traverse the tree again to produce the codebook itself. */
+ hc->codewords = hash_table_new(ncw, HASH_CASE_YES);
+ agenda = glist_add_ptr(NULL, root);
+ while (agenda) {
+ huff_node_t *node = gnode_ptr(agenda);
+ agenda = gnode_free(agenda, NULL);
+ if (node->l) {
+ agenda = glist_add_ptr(agenda, node->l);
+ agenda = glist_add_ptr(agenda, node->r.r);
+ }
+ else {
+ /* Initialize codebook entry, which also retains symbol pointer. */
+ huff_codeword_t *cw;
+ uint32 codeword = nextcode[node->nbits] & ((1 << node->nbits) - 1);
+ cw = hc->syms[node->nbits] + (codeword - hc->firstcode[node->nbits]);
+ cw->nbits = node->nbits;
+ cw->r.sval = node->r.sval; /* Will copy ints too... */
+ cw->codeword = codeword;
+ if (hc->type == HUFF_CODE_INT) {
+ hash_table_enter_bkey(hc->codewords,
+ (char const *)&cw->r.ival,
+ sizeof(cw->r.ival),
+ (void *)cw);
+ }
+ else {
+ hash_table_enter(hc->codewords, cw->r.sval, (void *)cw);
+ }
+ ++nextcode[node->nbits];
+ }
+ }
+ ckd_free(nextcode);
+}
+
+huff_code_t *
+huff_code_build_int(int32 const *values, int32 const *frequencies, int nvals)
+{
+ huff_code_t *hc;
+ huff_node_t *root;
+ heap_t *q;
+ int i;
+
+ hc = ckd_calloc(1, sizeof(*hc));
+ hc->refcount = 1;
+ hc->type = HUFF_CODE_INT;
+
+ /* Initialize the heap with nodes for each symbol. */
+ q = heap_new();
+ for (i = 0; i < nvals; ++i) {
+ heap_insert(q,
+ huff_node_new_int(values[i]),
+ frequencies[i]);
+ }
+
+ /* Now build the tree, which gives us codeword lengths. */
+ root = huff_code_build_tree(q);
+ heap_destroy(q);
+ if (root == NULL || root->nbits > 32) {
+ E_ERROR("Huffman trees currently limited to 32 bits\n");
+ huff_node_free_int(root);
+ huff_code_free(hc);
+ return NULL;
+ }
+
+ /* Build a canonical codebook. */
+ hc->maxbits = root->nbits;
+ huff_code_canonicalize(hc, root);
+
+ /* Tree no longer needed. */
+ huff_node_free_int(root);
+
+ return hc;
+}
+
+huff_code_t *
+huff_code_build_str(char * const *values, int32 const *frequencies, int nvals)
+{
+ huff_code_t *hc;
+ huff_node_t *root;
+ heap_t *q;
+ int i;
+
+ hc = ckd_calloc(1, sizeof(*hc));
+ hc->refcount = 1;
+ hc->type = HUFF_CODE_STR;
+
+ /* Initialize the heap with nodes for each symbol. */
+ q = heap_new();
+ for (i = 0; i < nvals; ++i) {
+ heap_insert(q,
+ huff_node_new_str(values[i]),
+ frequencies[i]);
+ }
+
+ /* Now build the tree, which gives us codeword lengths. */
+ root = huff_code_build_tree(q);
+ heap_destroy(q);
+ if (root == NULL || root->nbits > 32) {
+ E_ERROR("Huffman trees currently limited to 32 bits\n");
+ huff_node_free_str(root, TRUE);
+ huff_code_free(hc);
+ return NULL;
+ }
+
+ /* Build a canonical codebook. */
+ hc->maxbits = root->nbits;
+ huff_code_canonicalize(hc, root);
+
+ /* Tree no longer needed (note we retain pointers to its strings). */
+ huff_node_free_str(root, FALSE);
+
+ return hc;
+}
+
+huff_code_t *
+huff_code_read(FILE *infh)
+{
+ huff_code_t *hc;
+ int i, j;
+
+ hc = ckd_calloc(1, sizeof(*hc));
+ hc->refcount = 1;
+
+ hc->maxbits = fgetc(infh);
+ hc->type = fgetc(infh);
+
+ /* Two bytes of padding. */
+ fgetc(infh);
+ fgetc(infh);
+
+ /* Allocate stuff. */
+ hc->firstcode = ckd_calloc(hc->maxbits + 1, sizeof(*hc->firstcode));
+ hc->numl = ckd_calloc(hc->maxbits + 1, sizeof(*hc->numl));
+ hc->syms = ckd_calloc(hc->maxbits + 1, sizeof(*hc->syms));
+
+ /* Read the symbol tables. */
+ hc->codewords = hash_table_new(hc->maxbits, HASH_CASE_YES);
+ for (i = 1; i <= hc->maxbits; ++i) {
+ if (fread(&hc->firstcode[i], 4, 1, infh) != 1)
+ goto error_out;
+ SWAP_BE_32(&hc->firstcode[i]);
+ if (fread(&hc->numl[i], 4, 1, infh) != 1)
+ goto error_out;
+ SWAP_BE_32(&hc->numl[i]);
+ hc->syms[i] = ckd_calloc(hc->numl[i], sizeof(**hc->syms));
+ for (j = 0; j < hc->numl[i]; ++j) {
+ huff_codeword_t *cw = &hc->syms[i][j];
+ cw->nbits = i;
+ cw->codeword = hc->firstcode[i] + j;
+ if (hc->type == HUFF_CODE_INT) {
+ if (fread(&cw->r.ival, 4, 1, infh) != 1)
+ goto error_out;
+ SWAP_BE_32(&cw->r.ival);
+ hash_table_enter_bkey(hc->codewords,
+ (char const *)&cw->r.ival,
+ sizeof(cw->r.ival),
+ (void *)cw);
+ }
+ else {
+ size_t len;
+ cw->r.sval = fread_line(infh, &len);
+ cw->r.sval[len-1] = '\0';
+ hash_table_enter(hc->codewords, cw->r.sval, (void *)cw);
+ }
+ }
+ }
+
+ return hc;
+error_out:
+ huff_code_free(hc);
+ return NULL;
+}
+
+int
+huff_code_write(huff_code_t *hc, FILE *outfh)
+{
+ int i, j;
+
+ /* Maximum codeword length */
+ fputc(hc->maxbits, outfh);
+ /* Symbol type */
+ fputc(hc->type, outfh);
+ /* Two extra bytes (for future use and alignment) */
+ fputc(0, outfh);
+ fputc(0, outfh);
+ /* For each codeword length: */
+ for (i = 1; i <= hc->maxbits; ++i) {
+ uint32 val;
+
+ /* Starting code, number of codes. */
+ val = hc->firstcode[i];
+ /* Canonically big-endian (like the data itself) */
+ SWAP_BE_32(&val);
+ fwrite(&val, 4, 1, outfh);
+ val = hc->numl[i];
+ SWAP_BE_32(&val);
+ fwrite(&val, 4, 1, outfh);
+
+ /* Symbols for each code (FIXME: Should compress these too) */
+ for (j = 0; j < hc->numl[i]; ++j) {
+ if (hc->type == HUFF_CODE_INT) {
+ int32 val = hc->syms[i][j].r.ival;
+ SWAP_BE_32(&val);
+ fwrite(&val, 4, 1, outfh);
+ }
+ else {
+ /* Write them all separated by newlines, so that
+ * fgets() will read them for us. */
+ fprintf(outfh, "%s\n", hc->syms[i][j].r.sval);
+ }
+ }
+ }
+ return 0;
+}
+
+int
+huff_code_dump_codebits(FILE *dumpfh, uint32 nbits, uint32 codeword)
+{
+ uint32 i;
+
+ for (i = 0; i < nbits; ++i)
+ fputc((codeword & (1<<(nbits-i-1))) ? '1' : '0', dumpfh);
+ return 0;
+}
+
+int
+huff_code_dump(huff_code_t *hc, FILE *dumpfh)
+{
+ int i, j;
+
+ /* Print out all codewords. */
+ fprintf(dumpfh, "Maximum codeword length: %d\n", hc->maxbits);
+ fprintf(dumpfh, "Symbols are %s\n", (hc->type == HUFF_CODE_STR) ? "strings" : "ints");
+ fprintf(dumpfh, "Codewords:\n");
+ for (i = 1; i <= hc->maxbits; ++i) {
+ for (j = 0; j < hc->numl[i]; ++j) {
+ if (hc->type == HUFF_CODE_STR)
+ fprintf(dumpfh, "%-30s", hc->syms[i][j].r.sval);
+ else
+ fprintf(dumpfh, "%-30d", hc->syms[i][j].r.ival);
+ huff_code_dump_codebits(dumpfh, hc->syms[i][j].nbits,
+ hc->syms[i][j].codeword);
+ fprintf(dumpfh, "\n");
+ }
+ }
+ return 0;
+}
+
+huff_code_t *
+huff_code_retain(huff_code_t *hc)
+{
+ ++hc->refcount;
+ return hc;
+}
+
+int
+huff_code_free(huff_code_t *hc)
+{
+ int i;
+
+ if (hc == NULL)
+ return 0;
+ if (--hc->refcount > 0)
+ return hc->refcount;
+ for (i = 0; i <= hc->maxbits; ++i) {
+ int j;
+ for (j = 0; j < hc->numl[i]; ++j) {
+ if (hc->type == HUFF_CODE_STR)
+ ckd_free(hc->syms[i][j].r.sval);
+ }
+ ckd_free(hc->syms[i]);
+ }
+ ckd_free(hc->firstcode);
+ ckd_free(hc->numl);
+ ckd_free(hc->syms);
+ hash_table_free(hc->codewords);
+ ckd_free(hc);
+ return 0;
+}
+
+FILE *
+huff_code_attach(huff_code_t *hc, FILE *fh, char const *mode)
+{
+ FILE *oldfh = huff_code_detach(hc);
+
+ hc->fh = fh;
+ if (mode[0] == 'w')
+ hc->be = bit_encode_attach(hc->fh);
+ return oldfh;
+}
+
+FILE *
+huff_code_detach(huff_code_t *hc)
+{
+ FILE *oldfh = hc->fh;
+
+ if (hc->be) {
+ bit_encode_flush(hc->be);
+ bit_encode_free(hc->be);
+ hc->be = NULL;
+ }
+ hc->fh = NULL;
+ return oldfh;
+}
+
+int
+huff_code_encode_int(huff_code_t *hc, int32 sym, uint32 *outcw)
+{
+ huff_codeword_t *cw;
+
+ if (hash_table_lookup_bkey(hc->codewords,
+ (char const *)&sym,
+ sizeof(sym),
+ (void **)&cw) < 0)
+ return 0;
+ if (hc->be)
+ bit_encode_write_cw(hc->be, cw->codeword, cw->nbits);
+ if (outcw) *outcw = cw->codeword;
+ return cw->nbits;
+}
+
+int
+huff_code_encode_str(huff_code_t *hc, char const *sym, uint32 *outcw)
+{
+ huff_codeword_t *cw;
+
+ if (hash_table_lookup(hc->codewords,
+ sym,
+ (void **)&cw) < 0)
+ return 0;
+ if (hc->be)
+ bit_encode_write_cw(hc->be, cw->codeword, cw->nbits);
+ if (outcw) *outcw = cw->codeword;
+ return cw->nbits;
+}
+
+static huff_codeword_t *
+huff_code_decode_data(huff_code_t *hc, char const **inout_data,
+ size_t *inout_data_len, int *inout_offset)
+{
+ char const *data = *inout_data;
+ char const *end = data + *inout_data_len;
+ int offset = *inout_offset;
+ uint32 cw;
+ int cwlen;
+ int byte;
+
+ if (data == end)
+ return NULL;
+ byte = *data++;
+ cw = !!(byte & (1 << (7-offset++)));
+ cwlen = 1;
+ /* printf("%.*x ", cwlen, cw); */
+ while (cwlen <= hc->maxbits && cw < hc->firstcode[cwlen]) {
+ ++cwlen;
+ cw <<= 1;
+ if (offset > 7) {
+ if (data == end)
+ return NULL;
+ byte = *data++;
+ offset = 0;
+ }
+ cw |= !!(byte & (1 << (7-offset++)));
+ /* printf("%.*x ", cwlen, cw); */
+ }
+ if (cwlen > hc->maxbits) /* FAIL: invalid data */
+ return NULL;
+
+ /* Put the last byte back if there are bits left over. */
+ if (offset < 8)
+ --data;
+ else
+ offset = 0;
+
+ /* printf("%.*x\n", cwlen, cw); */
+ *inout_data_len = end - data;
+ *inout_data = data;
+ *inout_offset = offset;
+ return hc->syms[cwlen] + (cw - hc->firstcode[cwlen]);
+}
+
+static huff_codeword_t *
+huff_code_decode_fh(huff_code_t *hc)
+{
+ uint32 cw;
+ int cwlen;
+ int byte;
+
+ if ((byte = fgetc(hc->fh)) == EOF)
+ return NULL;
+ cw = !!(byte & (1 << (7-hc->boff++)));
+ cwlen = 1;
+ /* printf("%.*x ", cwlen, cw); */
+ while (cwlen <= hc->maxbits && cw < hc->firstcode[cwlen]) {
+ ++cwlen;
+ cw <<= 1;
+ if (hc->boff > 7) {
+ if ((byte = fgetc(hc->fh)) == EOF)
+ return NULL;
+ hc->boff = 0;
+ }
+ cw |= !!(byte & (1 << (7-hc->boff++)));
+ /* printf("%.*x ", cwlen, cw); */
+ }
+ if (cwlen > hc->maxbits) /* FAIL: invalid data */
+ return NULL;
+
+ /* Put the last byte back if there are bits left over. */
+ if (hc->boff < 8)
+ ungetc(byte, hc->fh);
+ else
+ hc->boff = 0;
+
+ /* printf("%.*x\n", cwlen, cw); */
+ return hc->syms[cwlen] + (cw - hc->firstcode[cwlen]);
+}
+
+int
+huff_code_decode_int(huff_code_t *hc, int *outval,
+ char const **inout_data,
+ size_t *inout_data_len, int *inout_offset)
+{
+ huff_codeword_t *cw;
+
+ if (inout_data)
+ cw = huff_code_decode_data(hc, inout_data, inout_data_len, inout_offset);
+ else if (hc->fh)
+ cw = huff_code_decode_fh(hc);
+ else
+ return -1;
+
+ if (cw == NULL)
+ return -1;
+ if (outval)
+ *outval = cw->r.ival;
+
+ return 0;
+}
+
+char const *
+huff_code_decode_str(huff_code_t *hc,
+ char const **inout_data,
+ size_t *inout_data_len, int *inout_offset)
+{
+ huff_codeword_t *cw;
+
+ if (inout_data)
+ cw = huff_code_decode_data(hc, inout_data, inout_data_len, inout_offset);
+ else if (hc->fh)
+ cw = huff_code_decode_fh(hc);
+ else
+ return NULL;
+
+ if (cw == NULL)
+ return NULL;
+
+ return cw->r.sval;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/* HISTORY
+ * $Log$
+ * Revision 1.3 2005/06/22 03:06:46 arthchan2003
+ * Add keyword.
+ *
+ * Revision 1.2 2005/06/15 04:21:46 archan
+ * 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file.
+ *
+ */
+
+#if !(defined(_WIN32) || defined(_WIN32_WCE))
+#include <unistd.h>
+#endif
+
+#include "sphinxbase/info.h"
+#include "sphinxbase/err.h"
+
+void
+print_appl_info(char *appl_name)
+{
+#if !(defined(_WIN32) || defined(_WIN32_WCE))
+ {
+ /* FIXME: Argh. */
+ char host[4096], path[16384];
+
+ gethostname(host, 1024);
+ host[1023] = '\0';
+
+ E_INFO("Host: '%s'\n", host);
+ if (getcwd(path, sizeof(path)) == NULL)
+ E_ERROR_SYSTEM("Failed to get current directory");
+ else
+ E_INFO("Directory: '%s'\n", path);
+ }
+#endif
+
+ E_INFO("%s Compiled on: %s, AT: %s\n\n", appl_name, __DATE__,
+ __TIME__);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/listelem_alloc.h"
+#include "sphinxbase/glist.h"
+
+/**
+ * Fast linked list allocator.
+ *
+ * We keep a separate linked list for each element-size. Element-size
+ * must be a multiple of pointer-size.
+ *
+ * Initially a block of empty elements is allocated, where the first
+ * machine word in each element points to the next available element.
+ * To allocate, we use this pointer to move the freelist to the next
+ * element, then return the current element.
+ *
+ * The last element in the list starts with a NULL pointer, which is
+ * used as a signal to allocate a new block of elements.
+ *
+ * In order to be able to actually release the memory allocated, we
+ * have to add a linked list of block pointers. This shouldn't create
+ * much overhead since we never access it except when freeing the
+ * allocator.
+ */
+struct listelem_alloc_s {
+ char **freelist; /**< ptr to first element in freelist */
+ glist_t blocks; /**< Linked list of blocks allocated. */
+ glist_t blocksize; /**< Number of elements in each block */
+ size_t elemsize; /**< Number of (char *) in element */
+ size_t blk_alloc; /**< Number of alloc operations before increasing blocksize */
+ size_t n_blocks;
+ size_t n_alloc;
+ size_t n_freed;
+};
+
+#define MIN_ALLOC 50 /**< Minimum number of elements to allocate in one block */
+#define BLKID_SHIFT 16 /**< Bit position of block number in element ID */
+#define BLKID_MASK ((1<<BLKID_SHIFT)-1)
+
+/**
+ * Allocate a new block of elements.
+ */
+static void listelem_add_block(listelem_alloc_t *list,
+ char *caller_file, int caller_line);
+
+listelem_alloc_t *
+listelem_alloc_init(size_t elemsize)
+{
+ listelem_alloc_t *list;
+
+ if ((elemsize % sizeof(void *)) != 0) {
+ size_t rounded = (elemsize + sizeof(void *) - 1) & ~(sizeof(void *)-1);
+ E_WARN
+ ("List item size (%lu) not multiple of sizeof(void *), rounding to %lu\n",
+ (unsigned long)elemsize,
+ (unsigned long)rounded);
+ elemsize = rounded;
+ }
+ list = ckd_calloc(1, sizeof(*list));
+ list->freelist = NULL;
+ list->blocks = NULL;
+ list->elemsize = elemsize;
+ /* Intent of this is to increase block size once we allocate
+ * 256KiB (i.e. 1<<18). If somehow the element size is big enough
+ * to overflow that, just fail, people should use malloc anyway. */
+ list->blk_alloc = (1 << 18) / (MIN_ALLOC * elemsize);
+ if (list->blk_alloc <= 0) {
+ E_ERROR("Element size * block size exceeds 256k, use malloc instead.\n");
+ ckd_free(list);
+ return NULL;
+ }
+ list->n_alloc = 0;
+ list->n_freed = 0;
+
+ /* Allocate an initial block to minimize latency. */
+ listelem_add_block(list, __FILE__, __LINE__);
+ return list;
+}
+
+void
+listelem_alloc_free(listelem_alloc_t *list)
+{
+ gnode_t *gn;
+ if (list == NULL)
+ return;
+ for (gn = list->blocks; gn; gn = gnode_next(gn))
+ ckd_free(gnode_ptr(gn));
+ glist_free(list->blocks);
+ glist_free(list->blocksize);
+ ckd_free(list);
+}
+
+static void
+listelem_add_block(listelem_alloc_t *list, char *caller_file, int caller_line)
+{
+ char **cpp, *cp;
+ size_t j;
+ int32 blocksize;
+
+ blocksize = list->blocksize ? gnode_int32(list->blocksize) : MIN_ALLOC;
+ /* Check if block size should be increased (if many requests for this size) */
+ if (list->blk_alloc == 0) {
+ /* See above. No sense in allocating blocks bigger than
+ * 256KiB (well, actually, there might be, but we'll worry
+ * about that later). */
+ blocksize <<= 1;
+ if (blocksize * list->elemsize > (1 << 18))
+ blocksize = (1 << 18) / list->elemsize;
+ list->blk_alloc = (1 << 18) / (blocksize * list->elemsize);
+ }
+
+ /* Allocate block */
+ cpp = list->freelist =
+ (char **) __ckd_calloc__(blocksize, list->elemsize,
+ caller_file, caller_line);
+ list->blocks = glist_add_ptr(list->blocks, cpp);
+ list->blocksize = glist_add_int32(list->blocksize, blocksize);
+ cp = (char *) cpp;
+ /* Link up the blocks via their first machine word. */
+ for (j = blocksize - 1; j > 0; --j) {
+ cp += list->elemsize;
+ *cpp = cp;
+ cpp = (char **) cp;
+ }
+ /* Make sure the last element's forward pointer is NULL */
+ *cpp = NULL;
+ --list->blk_alloc;
+ ++list->n_blocks;
+}
+
+
+void *
+__listelem_malloc__(listelem_alloc_t *list, char *caller_file, int caller_line)
+{
+ char **ptr;
+
+ /* Allocate a new block if list empty */
+ if (list->freelist == NULL)
+ listelem_add_block(list, caller_file, caller_line);
+
+ /* Unlink and return first element in freelist */
+ ptr = list->freelist;
+ list->freelist = (char **) (*(list->freelist));
+ (list->n_alloc)++;
+
+ return (void *)ptr;
+}
+
+void *
+__listelem_malloc_id__(listelem_alloc_t *list, char *caller_file,
+ int caller_line, int32 *out_id)
+{
+ char **ptr;
+
+ /* Allocate a new block if list empty */
+ if (list->freelist == NULL)
+ listelem_add_block(list, caller_file, caller_line);
+
+ /* Unlink and return first element in freelist */
+ ptr = list->freelist;
+ list->freelist = (char **) (*(list->freelist));
+ (list->n_alloc)++;
+
+ if (out_id) {
+ int32 blksize, blkidx, ptridx;
+ gnode_t *gn, *gn2;
+ char **block;
+
+ gn2 = list->blocksize;
+ block = NULL;
+ blkidx = 0;
+ for (gn = list->blocks; gn; gn = gnode_next(gn)) {
+ block = gnode_ptr(gn);
+ blksize = gnode_int32(gn2) * list->elemsize / sizeof(*block);
+ if (ptr >= block && ptr < block + blksize)
+ break;
+ gn2 = gnode_next(gn2);
+ ++blkidx;
+ }
+ if (gn == NULL) {
+ E_ERROR("Failed to find block index for pointer %p!\n", ptr);
+ }
+ ptridx = (ptr - block) / (list->elemsize / sizeof(*block));
+ E_DEBUG(4,("ptr %p block %p blkidx %d ptridx %d\n",
+ ptr, block, list->n_blocks - blkidx - 1, ptridx));
+ *out_id = ((list->n_blocks - blkidx - 1) << BLKID_SHIFT) | ptridx;
+ }
+
+ return ptr;
+}
+
+void *
+listelem_get_item(listelem_alloc_t *list, int32 id)
+{
+ int32 blkidx, ptridx, i;
+ gnode_t *gn;
+
+ blkidx = (id >> BLKID_SHIFT) & BLKID_MASK;
+ ptridx = id & BLKID_MASK;
+
+ i = 0;
+ blkidx = list->n_blocks - blkidx;
+ for (gn = list->blocks; gn; gn = gnode_next(gn)) {
+ if (++i == blkidx)
+ break;
+ }
+ if (gn == NULL) {
+ E_ERROR("Failed to find block index %d\n", blkidx);
+ return NULL;
+ }
+
+ return (void *)((char **)gnode_ptr(gn)
+ + ptridx * (list->elemsize / sizeof(void *)));
+}
+
+void
+__listelem_free__(listelem_alloc_t *list, void *elem,
+ char *caller_file, int caller_line)
+{
+ char **cpp;
+
+ /*
+ * Insert freed item at head of list.
+ */
+ cpp = (char **) elem;
+ *cpp = (char *) list->freelist;
+ list->freelist = cpp;
+ (list->n_freed)++;
+}
+
+
+void
+listelem_stats(listelem_alloc_t *list)
+{
+ gnode_t *gn, *gn2;
+ char **cpp;
+ size_t n;
+
+ E_INFO("Linklist stats:\n");
+ for (n = 0, cpp = list->freelist; cpp;
+ cpp = (char **) (*cpp), n++);
+ E_INFO
+ ("elemsize %lu, #alloc %lu, #freed %lu, #freelist %lu\n",
+ (unsigned long)list->elemsize,
+ (unsigned long)list->n_alloc,
+ (unsigned long)list->n_freed,
+ (unsigned long)n);
+ E_INFO("Allocated blocks:\n");
+ gn2 = list->blocksize;
+ for (gn = list->blocks; gn; gn = gnode_next(gn)) {
+ E_INFO("%p (%d * %d bytes)\n", gnode_ptr(gn), gnode_int32(gn2), list->elemsize);
+ gn2 = gnode_next(gn2);
+ }
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include <assert.h>
+
+#include "sphinxbase/logmath.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/mmio.h"
+#include "sphinxbase/bio.h"
+#include "sphinxbase/strfuncs.h"
+
+struct logmath_s {
+ logadd_t t;
+ int refcount;
+ mmio_file_t *filemap;
+ float64 base;
+ float64 log_of_base;
+ float64 log10_of_base;
+ float64 inv_log_of_base;
+ float64 inv_log10_of_base;
+ int32 zero;
+};
+
+logmath_t *
+logmath_init(float64 base, int shift, int use_table)
+{
+ logmath_t *lmath;
+ uint32 maxyx, i;
+ float64 byx;
+ int width;
+
+ /* Check that the base is correct. */
+ if (base <= 1.0) {
+ E_ERROR("Base must be greater than 1.0\n");
+ return NULL;
+ }
+
+ /* Set up various necessary constants. */
+ lmath = ckd_calloc(1, sizeof(*lmath));
+ lmath->refcount = 1;
+ lmath->base = base;
+ lmath->log_of_base = log(base);
+ lmath->log10_of_base = log10(base);
+ lmath->inv_log_of_base = 1.0/lmath->log_of_base;
+ lmath->inv_log10_of_base = 1.0/lmath->log10_of_base;
+ lmath->t.shift = shift;
+ /* Shift this sufficiently that overflows can be avoided. */
+ lmath->zero = MAX_NEG_INT32 >> (shift + 2);
+
+ if (!use_table)
+ return lmath;
+
+ /* Create a logadd table with the appropriate width */
+ maxyx = (uint32) (log(2.0) / log(base) + 0.5) >> shift;
+ /* Poor man's log2 */
+ if (maxyx < 256) width = 1;
+ else if (maxyx < 65536) width = 2;
+ else width = 4;
+
+ lmath->t.width = width;
+ /* Figure out size of add table required. */
+ byx = 1.0; /* Maximum possible base^{y-x} value - note that this implies that y-x == 0 */
+ for (i = 0;; ++i) {
+ float64 lobyx = log(1.0 + byx) * lmath->inv_log_of_base; /* log_{base}(1 + base^{y-x}); */
+ int32 k = (int32) (lobyx + 0.5 * (1<<shift)) >> shift; /* Round to shift */
+
+ /* base^{y-x} has reached the smallest representable value. */
+ if (k <= 0)
+ break;
+
+ /* This table is indexed by -(y-x), so we multiply byx by
+ * base^{-1} here which is equivalent to subtracting one from
+ * (y-x). */
+ byx /= base;
+ }
+ i >>= shift;
+
+ /* Never produce a table smaller than 256 entries. */
+ if (i < 255) i = 255;
+
+ lmath->t.table = ckd_calloc(i+1, width);
+ lmath->t.table_size = i + 1;
+ /* Create the add table (see above). */
+ byx = 1.0;
+ for (i = 0;; ++i) {
+ float64 lobyx = log(1.0 + byx) * lmath->inv_log_of_base;
+ int32 k = (int32) (lobyx + 0.5 * (1<<shift)) >> shift; /* Round to shift */
+ uint32 prev = 0;
+
+ /* Check any previous value - if there is a shift, we want to
+ * only store the highest one. */
+ switch (width) {
+ case 1:
+ prev = ((uint8 *)lmath->t.table)[i >> shift];
+ break;
+ case 2:
+ prev = ((uint16 *)lmath->t.table)[i >> shift];
+ break;
+ case 4:
+ prev = ((uint32 *)lmath->t.table)[i >> shift];
+ break;
+ }
+ if (prev == 0) {
+ switch (width) {
+ case 1:
+ ((uint8 *)lmath->t.table)[i >> shift] = (uint8) k;
+ break;
+ case 2:
+ ((uint16 *)lmath->t.table)[i >> shift] = (uint16) k;
+ break;
+ case 4:
+ ((uint32 *)lmath->t.table)[i >> shift] = (uint32) k;
+ break;
+ }
+ }
+ if (k <= 0)
+ break;
+
+ /* Decay base^{y-x} exponentially according to base. */
+ byx /= base;
+ }
+
+ return lmath;
+}
+
+logmath_t *
+logmath_read(const char *file_name)
+{
+ logmath_t *lmath;
+ char **argname, **argval;
+ int32 byteswap, i;
+ int chksum_present, do_mmap;
+ uint32 chksum;
+ long pos;
+ FILE *fp;
+
+ E_INFO("Reading log table file '%s'\n", file_name);
+ if ((fp = fopen(file_name, "rb")) == NULL) {
+ E_ERROR("Failed to open log table file '%s' for reading: %s\n", file_name, strerror(errno));
+ return NULL;
+ }
+
+ /* Read header, including argument-value info and 32-bit byteorder magic */
+ if (bio_readhdr(fp, &argname, &argval, &byteswap) < 0) {
+ E_ERROR("bio_readhdr(%s) failed\n", file_name);
+ fclose(fp);
+ return NULL;
+ }
+
+ lmath = ckd_calloc(1, sizeof(*lmath));
+ /* Default values. */
+ lmath->t.shift = 0;
+ lmath->t.width = 2;
+ lmath->base = 1.0001;
+
+ /* Parse argument-value list */
+ chksum_present = 0;
+ for (i = 0; argname[i]; i++) {
+ if (strcmp(argname[i], "version") == 0) {
+ }
+ else if (strcmp(argname[i], "chksum0") == 0) {
+ if (strcmp(argval[i], "yes") == 0)
+ chksum_present = 1;
+ }
+ else if (strcmp(argname[i], "width") == 0) {
+ lmath->t.width = atoi(argval[i]);
+ }
+ else if (strcmp(argname[i], "shift") == 0) {
+ lmath->t.shift = atoi(argval[i]);
+ }
+ else if (strcmp(argname[i], "logbase") == 0) {
+ lmath->base = atof_c(argval[i]);
+ }
+ }
+ bio_hdrarg_free(argname, argval);
+ chksum = 0;
+
+ /* Set up various necessary constants. */
+ lmath->log_of_base = log(lmath->base);
+ lmath->log10_of_base = log10(lmath->base);
+ lmath->inv_log_of_base = 1.0/lmath->log_of_base;
+ lmath->inv_log10_of_base = 1.0/lmath->log10_of_base;
+ /* Shift this sufficiently that overflows can be avoided. */
+ lmath->zero = MAX_NEG_INT32 >> (lmath->t.shift + 2);
+
+ /* #Values to follow */
+ if (bio_fread(&lmath->t.table_size, sizeof(int32), 1, fp, byteswap, &chksum) != 1) {
+ E_ERROR("fread(%s) (total #values) failed\n", file_name);
+ goto error_out;
+ }
+
+ /* Check alignment constraints for memory mapping */
+ do_mmap = 1;
+ pos = ftell(fp);
+ if (pos & ((long)lmath->t.width - 1)) {
+ E_WARN("%s: Data start %ld is not aligned on %d-byte boundary, will not memory map\n",
+ file_name, pos, lmath->t.width);
+ do_mmap = 0;
+ }
+ /* Check byte order for memory mapping */
+ if (byteswap) {
+ E_WARN("%s: Data is wrong-endian, will not memory map\n", file_name);
+ do_mmap = 0;
+ }
+
+ if (do_mmap) {
+ lmath->filemap = mmio_file_read(file_name);
+ lmath->t.table = (char *)mmio_file_ptr(lmath->filemap) + pos;
+ }
+ else {
+ lmath->t.table = ckd_calloc(lmath->t.table_size, lmath->t.width);
+ if (bio_fread(lmath->t.table, lmath->t.width, lmath->t.table_size,
+ fp, byteswap, &chksum) != lmath->t.table_size) {
+ E_ERROR("fread(%s) (%d x %d bytes) failed\n",
+ file_name, lmath->t.table_size, lmath->t.width);
+ goto error_out;
+ }
+ if (chksum_present)
+ bio_verify_chksum(fp, byteswap, chksum);
+
+ if (fread(&i, 1, 1, fp) == 1) {
+ E_ERROR("%s: More data than expected\n", file_name);
+ goto error_out;
+ }
+ }
+ fclose(fp);
+
+ return lmath;
+error_out:
+ logmath_free(lmath);
+ return NULL;
+}
+
+int32
+logmath_write(logmath_t *lmath, const char *file_name)
+{
+ FILE *fp;
+ long pos;
+ uint32 chksum;
+
+ if (lmath->t.table == NULL) {
+ E_ERROR("No log table to write!\n");
+ return -1;
+ }
+
+ E_INFO("Writing log table file '%s'\n", file_name);
+ if ((fp = fopen(file_name, "wb")) == NULL) {
+ E_ERROR("Failed to open logtable file '%s' for writing: %s\n", file_name, strerror(errno));
+ return -1;
+ }
+
+ /* For whatever reason, we have to do this manually at the
+ * moment. */
+ fprintf(fp, "s3\nversion 1.0\nchksum0 yes\n");
+ fprintf(fp, "width %d\n", lmath->t.width);
+ fprintf(fp, "shift %d\n", lmath->t.shift);
+ fprintf(fp, "logbase %f\n", lmath->base);
+ /* Pad it out to ensure alignment. */
+ pos = ftell(fp) + strlen("endhdr\n");
+ if (pos & ((long)lmath->t.width - 1)) {
+ size_t align = lmath->t.width - (pos & ((long)lmath->t.width - 1));
+ assert(lmath->t.width <= 8);
+ fwrite(" " /* 8 spaces */, 1, align, fp);
+ }
+ fprintf(fp, "endhdr\n");
+
+ /* Now write the binary data. */
+ chksum = (uint32)BYTE_ORDER_MAGIC;
+ fwrite(&chksum, sizeof(uint32), 1, fp);
+ chksum = 0;
+ /* #Values to follow */
+ if (bio_fwrite(&lmath->t.table_size, sizeof(uint32),
+ 1, fp, 0, &chksum) != 1) {
+ E_ERROR("fwrite(%s) (total #values) failed\n", file_name);
+ goto error_out;
+ }
+
+ if (bio_fwrite(lmath->t.table, lmath->t.width, lmath->t.table_size,
+ fp, 0, &chksum) != lmath->t.table_size) {
+ E_ERROR("fwrite(%s) (%d x %d bytes) failed\n",
+ file_name, lmath->t.table_size, lmath->t.width);
+ goto error_out;
+ }
+ if (bio_fwrite(&chksum, sizeof(uint32), 1, fp, 0, NULL) != 1) {
+ E_ERROR("fwrite(%s) checksum failed\n", file_name);
+ goto error_out;
+ }
+
+ fclose(fp);
+ return 0;
+
+error_out:
+ fclose(fp);
+ return -1;
+}
+
+logmath_t *
+logmath_retain(logmath_t *lmath)
+{
+ ++lmath->refcount;
+ return lmath;
+}
+
+int
+logmath_free(logmath_t *lmath)
+{
+ if (lmath == NULL)
+ return 0;
+ if (--lmath->refcount > 0)
+ return lmath->refcount;
+ if (lmath->filemap)
+ mmio_file_unmap(lmath->filemap);
+ else
+ ckd_free(lmath->t.table);
+ ckd_free(lmath);
+ return 0;
+}
+
+int32
+logmath_get_table_shape(logmath_t *lmath, uint32 *out_size,
+ uint32 *out_width, uint32 *out_shift)
+{
+ if (out_size) *out_size = lmath->t.table_size;
+ if (out_width) *out_width = lmath->t.width;
+ if (out_shift) *out_shift = lmath->t.shift;
+
+ return lmath->t.table_size * lmath->t.width;
+}
+
+float64
+logmath_get_base(logmath_t *lmath)
+{
+ return lmath->base;
+}
+
+int
+logmath_get_zero(logmath_t *lmath)
+{
+ return lmath->zero;
+}
+
+int
+logmath_get_width(logmath_t *lmath)
+{
+ return lmath->t.width;
+}
+
+int
+logmath_get_shift(logmath_t *lmath)
+{
+ return lmath->t.shift;
+}
+
+int
+logmath_add(logmath_t *lmath, int logb_x, int logb_y)
+{
+ logadd_t *t = LOGMATH_TABLE(lmath);
+ int d, r;
+
+ /* handle 0 + x = x case. */
+ if (logb_x <= lmath->zero)
+ return logb_y;
+ if (logb_y <= lmath->zero)
+ return logb_x;
+
+ if (t->table == NULL)
+ return logmath_add_exact(lmath, logb_x, logb_y);
+
+ /* d must be positive, obviously. */
+ if (logb_x > logb_y) {
+ d = (logb_x - logb_y);
+ r = logb_x;
+ }
+ else {
+ d = (logb_y - logb_x);
+ r = logb_y;
+ }
+
+ if (d < 0) {
+ /* Some kind of overflow has occurred, fail gracefully. */
+ return r;
+ }
+ if ((size_t)d >= t->table_size) {
+ /* If this happens, it's not actually an error, because the
+ * last entry in the logadd table is guaranteed to be zero.
+ * Therefore we just return the larger of the two values. */
+ return r;
+ }
+
+ switch (t->width) {
+ case 1:
+ return r + (((uint8 *)t->table)[d]);
+ case 2:
+ return r + (((uint16 *)t->table)[d]);
+ case 4:
+ return r + (((uint32 *)t->table)[d]);
+ }
+ return r;
+}
+
+int
+logmath_add_exact(logmath_t *lmath, int logb_p, int logb_q)
+{
+ return logmath_log(lmath,
+ logmath_exp(lmath, logb_p)
+ + logmath_exp(lmath, logb_q));
+}
+
+int
+logmath_log(logmath_t *lmath, float64 p)
+{
+ if (p <= 0) {
+ return lmath->zero;
+ }
+ return (int)(log(p) * lmath->inv_log_of_base) >> lmath->t.shift;
+}
+
+float64
+logmath_exp(logmath_t *lmath, int logb_p)
+{
+ return pow(lmath->base, (float64)(logb_p << lmath->t.shift));
+}
+
+int
+logmath_ln_to_log(logmath_t *lmath, float64 log_p)
+{
+ return (int)(log_p * lmath->inv_log_of_base) >> lmath->t.shift;
+}
+
+float64
+logmath_log_to_ln(logmath_t *lmath, int logb_p)
+{
+ return (float64)(logb_p << lmath->t.shift) * lmath->log_of_base;
+}
+
+int
+logmath_log10_to_log(logmath_t *lmath, float64 log_p)
+{
+ return (int)(log_p * lmath->inv_log10_of_base) >> lmath->t.shift;
+}
+
+float64
+logmath_log_to_log10(logmath_t *lmath, int logb_p)
+{
+ return (float64)(logb_p << lmath->t.shift) * lmath->log10_of_base;
+}
--- /dev/null
+/* -*- c-basic-offset: 4 -*- */
+/* ====================================================================
+ * Copyright (c) 1997-2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "sphinxbase/clapack_lite.h"
+#include "sphinxbase/matrix.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+
+void
+norm_3d(float32 ***arr,
+ uint32 d1,
+ uint32 d2,
+ uint32 d3)
+{
+ uint32 i, j, k;
+ float64 s;
+
+ for (i = 0; i < d1; i++) {
+ for (j = 0; j < d2; j++) {
+
+ /* compute sum (i, j) as over all k */
+ for (k = 0, s = 0; k < d3; k++) {
+ s += arr[i][j][k];
+ }
+
+ /* do 1 floating point divide */
+ s = 1.0 / s;
+
+ /* divide all k by sum over k */
+ for (k = 0; k < d3; k++) {
+ arr[i][j][k] *= s;
+ }
+ }
+ }
+}
+\f
+void
+accum_3d(float32 ***out,
+ float32 ***in,
+ uint32 d1,
+ uint32 d2,
+ uint32 d3)
+{
+ uint32 i, j, k;
+
+ for (i = 0; i < d1; i++) {
+ for (j = 0; j < d2; j++) {
+ for (k = 0; k < d3; k++) {
+ out[i][j][k] += in[i][j][k];
+ }
+ }
+ }
+}
+
+void
+floor_nz_3d(float32 ***m,
+ uint32 d1,
+ uint32 d2,
+ uint32 d3,
+ float32 floor)
+{
+ uint32 i, j, k;
+
+ for (i = 0; i < d1; i++) {
+ for (j = 0; j < d2; j++) {
+ for (k = 0; k < d3; k++) {
+ if ((m[i][j][k] != 0) && (m[i][j][k] < floor))
+ m[i][j][k] = floor;
+ }
+ }
+ }
+}
+void
+floor_nz_1d(float32 *v,
+ uint32 d1,
+ float32 floor)
+{
+ uint32 i;
+
+ for (i = 0; i < d1; i++) {
+ if ((v[i] != 0) && (v[i] < floor))
+ v[i] = floor;
+ }
+}
+
+void
+band_nz_1d(float32 *v,
+ uint32 d1,
+ float32 band)
+{
+ uint32 i;
+
+ for (i = 0; i < d1; i++) {
+ if (v[i] != 0) {
+ if ((v[i] > 0) && (v[i] < band)) {
+ v[i] = band;
+ }
+ else if ((v[i] < 0) && (v[i] > -band)) {
+ v[i] = -band;
+ }
+ }
+ }
+}
+
+#ifndef WITH_LAPACK
+float64
+determinant(float32 **a, int32 n)
+{
+ E_FATAL("No LAPACK library available, cannot compute determinant (FIXME)\n");
+ return 0.0;
+}
+int32
+invert(float32 **ainv, float32 **a, int32 n)
+{
+ E_FATAL("No LAPACK library available, cannot compute matrix inverse (FIXME)\n");
+ return 0;
+}
+int32
+solve(float32 **a, float32 *b, float32 *out_x, int32 n)
+{
+ E_FATAL("No LAPACK library available, cannot solve linear equations (FIXME)\n");
+ return 0;
+}
+
+void
+matrixmultiply(float32 ** c, float32 ** a, float32 ** b, int32 n)
+{
+ int32 i, j, k;
+
+ memset(c[0], 0, n*n*sizeof(float32));
+ for (i = 0; i < n; ++i) {
+ for (j = 0; j < n; ++j) {
+ for (k = 0; k < n; ++k) {
+ c[i][k] += a[i][j] * b[j][k];
+ }
+ }
+ }
+}
+#else /* WITH_LAPACK */
+/* Find determinant through LU decomposition. */
+float64
+determinant(float32 ** a, int32 n)
+{
+ float32 **tmp_a;
+ float64 det;
+ char uplo;
+ int32 info, i;
+
+ /* a is assumed to be symmetric, so we don't need to switch the
+ * ordering of the data. But we do need to copy it since it is
+ * overwritten by LAPACK. */
+ tmp_a = (float32 **)ckd_calloc_2d(n, n, sizeof(float32));
+ memcpy(tmp_a[0], a[0], n*n*sizeof(float32));
+
+ uplo = 'L';
+ spotrf_(&uplo, &n, tmp_a[0], &n, &info);
+ det = tmp_a[0][0];
+ /* det = prod(diag(l))^2 */
+ for (i = 1; i < n; ++i)
+ det *= tmp_a[i][i];
+ ckd_free_2d((void **)tmp_a);
+ if (info > 0)
+ return -1.0; /* Generic "not positive-definite" answer */
+ else
+ return det * det;
+}
+
+int32
+solve(float32 **a, /*Input : an n*n matrix A */
+ float32 *b, /*Input : a n dimesion vector b */
+ float32 *out_x, /*Output : a n dimesion vector x */
+ int32 n)
+{
+ char uplo;
+ float32 **tmp_a;
+ int32 info, nrhs;
+
+ /* a is assumed to be symmetric, so we don't need to switch the
+ * ordering of the data. But we do need to copy it since it is
+ * overwritten by LAPACK. */
+ tmp_a = (float32 **)ckd_calloc_2d(n, n, sizeof(float32));
+ memcpy(tmp_a[0], a[0], n*n*sizeof(float32));
+ memcpy(out_x, b, n*sizeof(float32));
+ uplo = 'L';
+ nrhs = 1;
+ sposv_(&uplo, &n, &nrhs, tmp_a[0], &n, out_x, &n, &info);
+ ckd_free_2d((void **)tmp_a);
+
+ if (info != 0)
+ return -1;
+ else
+ return info;
+}
+
+/* Find inverse by solving AX=I. */
+int32
+invert(float32 ** ainv, float32 ** a, int32 n)
+{
+ char uplo;
+ float32 **tmp_a;
+ int32 info, nrhs, i;
+
+ /* Construct an identity matrix. */
+ memset(ainv[0], 0, sizeof(float32) * n * n);
+ for (i = 0; i < n; i++)
+ ainv[i][i] = 1.0;
+ /* a is assumed to be symmetric, so we don't need to switch the
+ * ordering of the data. But we do need to copy it since it is
+ * overwritten by LAPACK. */
+ tmp_a = (float32 **)ckd_calloc_2d(n, n, sizeof(float32));
+ memcpy(tmp_a[0], a[0], n*n*sizeof(float32));
+ uplo = 'L';
+ nrhs = n;
+ sposv_(&uplo, &n, &nrhs, tmp_a[0], &n, ainv[0], &n, &info);
+ ckd_free_2d((void **)tmp_a);
+
+ if (info != 0)
+ return -1;
+ else
+ return info;
+}
+
+void
+matrixmultiply(float32 ** c, float32 ** a, float32 ** b, int32 n)
+{
+ char side, uplo;
+ float32 alpha;
+
+ side = 'L';
+ uplo = 'L';
+ alpha = 1.0;
+ ssymm_(&side, &uplo, &n, &n, &alpha, a[0], &n, b[0], &n, &alpha, c[0], &n);
+}
+
+#endif /* WITH_LAPACK */
+
+void
+outerproduct(float32 ** a, float32 * x, float32 * y, int32 len)
+{
+ int32 i, j;
+
+ for (i = 0; i < len; ++i) {
+ a[i][i] = x[i] * y[i];
+ for (j = i + 1; j < len; ++j) {
+ a[i][j] = x[i] * y[j];
+ a[j][i] = x[j] * y[i];
+ }
+ }
+}
+
+void
+scalarmultiply(float32 ** a, float32 x, int32 n)
+{
+ int32 i, j;
+
+ for (i = 0; i < n; ++i) {
+ a[i][i] *= x;
+ for (j = i+1; j < n; ++j) {
+ a[i][j] *= x;
+ a[j][i] *= x;
+ }
+ }
+}
+
+void
+matrixadd(float32 ** a, float32 ** b, int32 n)
+{
+ int32 i, j;
+
+ for (i = 0; i < n; ++i)
+ for (j = 0; j < n; ++j)
+ a[i][j] += b[i][j];
+}
+
+
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log$
+ * Revision 1.4 2004/07/21 18:05:40 egouvea
+ * Changed the license terms to make it the same as sphinx2 and sphinx3.
+ *
+ * Revision 1.3 2001/04/05 20:02:30 awb
+ * *** empty log message ***
+ *
+ * Revision 1.2 2000/09/29 22:35:13 awb
+ * *** empty log message ***
+ *
+ * Revision 1.1 2000/09/24 21:38:31 awb
+ * *** empty log message ***
+ *
+ * Revision 1.1 97/07/16 11:36:22 eht
+ * Initial revision
+ *
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2005 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: mmio.c
+ *
+ * Description: mmap() wrappers for Unix/Windows
+ *
+ * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
+ *
+ *********************************************************************/
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef GNUWINCE
+# include <sys/wcebase.h>
+# include <sys/wcetypes.h>
+# include <sys/wcememory.h>
+# include <sys/wcefile.h>
+#elif defined(__SYMBIAN32__) /* SYMBIAN32 must be before WIN32 since Symbian SDK defines WIN32 as well */
+# include <unistd.h>
+# include <fcntl.h>
+# include <sys/stat.h>
+# include <sys/mman.h>
+#elif defined(_WIN32)
+# include <windows.h>
+#else
+# include <unistd.h>
+# include <fcntl.h>
+# include <sys/stat.h>
+# include <sys/file.h>
+# include <sys/mman.h>
+#endif
+
+#include "sphinxbase/prim_type.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/mmio.h"
+#include "sphinxbase/ckd_alloc.h"
+
+/** Silvio Moioli: slightly updated */
+#if defined(_WIN32_WCE) || defined(GNUWINCE)
+struct mmio_file_s {
+ int dummy;
+};
+
+mmio_file_t *
+mmio_file_read(const char *filename)
+{
+ HANDLE ffm, fd;
+ WCHAR *wfilename;
+ void *rv;
+ int len;
+
+ len = mbstowcs(NULL, filename, 0) + 1;
+ wfilename = malloc(len * sizeof(WCHAR));
+ mbstowcs(wfilename, filename, len);
+
+ if ((ffm =
+ CreateFileForMappingW(wfilename, GENERIC_READ, FILE_SHARE_READ,
+ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
+ NULL)) == INVALID_HANDLE_VALUE) {
+ E_ERROR("Failed to CreateFileForMapping(%s): %08x\n", filename,
+ GetLastError());
+ return NULL;
+ }
+ if ((fd =
+ CreateFileMappingW(ffm, NULL, PAGE_READONLY, 0, 0, NULL)) == NULL) {
+ E_ERROR("Failed to CreateFileMapping: %08x\n", GetLastError());
+ CloseHandle(ffm);
+ return NULL;
+ }
+ rv = MapViewOfFile(fd, FILE_MAP_READ, 0, 0, 0);
+ free(wfilename);
+ CloseHandle(ffm);
+ CloseHandle(fd);
+
+ return (mmio_file_t *) rv;
+}
+
+void
+mmio_file_unmap(mmio_file_t *mf)
+{
+ if (!UnmapViewOfFile((void *)mf)) {
+ E_ERROR("Failed to UnmapViewOfFile: %08x\n", GetLastError());
+ }
+}
+
+void *
+mmio_file_ptr(mmio_file_t *mf)
+{
+ return (void *)mf;
+}
+
+#elif defined(WIN32) /* !WINCE */
+struct mmio_file_s {
+ int dummy;
+};
+
+mmio_file_t *
+mmio_file_read(const char *filename)
+{
+ HANDLE ffm, fd;
+ void *rv;
+
+ if ((ffm = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ,
+ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
+ NULL)) == INVALID_HANDLE_VALUE) {
+ E_ERROR("Failed to CreateFile(%s): %08x\n",
+ filename, GetLastError());
+ return NULL;
+ }
+ if ((fd = CreateFileMapping(ffm, NULL,
+ PAGE_READONLY, 0, 0, NULL)) == NULL) {
+ E_ERROR("Failed to CreateFileMapping: %08x\n", GetLastError());
+ CloseHandle(ffm);
+ }
+ rv = MapViewOfFile(fd, FILE_MAP_READ, 0, 0, 0);
+ CloseHandle(ffm);
+ CloseHandle(fd);
+
+ return (mmio_file_t *)rv;
+}
+
+void
+mmio_file_unmap(mmio_file_t *mf)
+{
+ if (!UnmapViewOfFile((void *)mf)) {
+ E_ERROR("Failed to UnmapViewOfFile: %08x\n", GetLastError());
+ }
+}
+
+void *
+mmio_file_ptr(mmio_file_t *mf)
+{
+ return (void *)mf;
+}
+
+#else /* !WIN32, !WINCE */
+#if defined(__ADSPBLACKFIN__) /* This is true for both uClinux and VisualDSP++,
+ but actually we need a better way to detect it. */
+struct mmio_file_s {
+ int dummy;
+};
+
+mmio_file_t *
+mmio_file_read(const char *filename)
+{
+ E_FATAL("mmio is not implemented on this platform!");
+ return NULL;
+}
+
+void
+mmio_file_unmap(mmio_file_t *mf)
+{
+ E_FATAL("mmio is not implemented on this platform!");
+}
+
+void *
+mmio_file_ptr(mmio_file_t *mf)
+{
+ E_FATAL("mmio is not implemented on this platform!");
+ return NULL;
+}
+#else /* !__ADSPBLACKFIN__ */
+struct mmio_file_s {
+ void *ptr;
+ size_t mapsize;
+};
+
+mmio_file_t *
+mmio_file_read(const char *filename)
+{
+ mmio_file_t *mf;
+ struct stat buf;
+ void *ptr;
+ int fd;
+ size_t pagesize;
+
+ if ((fd = open(filename, O_RDONLY)) == -1) {
+ E_ERROR_SYSTEM("Failed to open %s", filename);
+ return NULL;
+ }
+ if (fstat(fd, &buf) == -1) {
+ E_ERROR_SYSTEM("Failed to stat %s", filename);
+ return NULL;
+ }
+ ptr = mmap(NULL, buf.st_size, PROT_READ, MAP_SHARED, fd, 0);
+ if (ptr == (void *)-1) {
+ E_ERROR_SYSTEM("Failed to mmap %lld bytes", (unsigned long long)buf.st_size);
+ return NULL;
+ }
+ close(fd);
+ mf = ckd_calloc(1, sizeof(*mf));
+ mf->ptr = ptr;
+ /* Align map size to next page. */
+ pagesize = getpagesize();
+ mf->mapsize = (buf.st_size + pagesize - 1) / pagesize * pagesize;
+
+ return mf;
+}
+
+void
+mmio_file_unmap(mmio_file_t *mf)
+{
+ if (mf == NULL)
+ return;
+ if (munmap(mf->ptr, mf->mapsize) < 0) {
+ E_ERROR_SYSTEM("Failed to unmap %ld bytes at %p", mf->mapsize, mf->ptr);
+ }
+ ckd_free(mf);
+}
+
+void *
+mmio_file_ptr(mmio_file_t *mf)
+{
+ return mf->ptr;
+}
+#endif /* !__ADSPBLACKFIN__ */
+#endif /* !(WINCE || WIN32) */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <assert.h>
+
+#include "sphinxbase/pio.h"
+#include "sphinxbase/filename.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/strfuncs.h"
+#include "sphinxbase/ckd_alloc.h"
+
+#ifndef EXEEXT
+#define EXEEXT ""
+#endif
+
+enum {
+ COMP_NONE,
+ COMP_COMPRESS,
+ COMP_GZIP,
+ COMP_BZIP2
+};
+
+static void
+guess_comptype(char const *file, int32 *ispipe, int32 *isgz)
+{
+ int k;
+
+ k = strlen(file);
+ *ispipe = 0;
+ *isgz = COMP_NONE;
+ if ((k > 2)
+ && ((strcmp(file + k - 2, ".Z") == 0)
+ || (strcmp(file + k - 2, ".z") == 0))) {
+ *ispipe = 1;
+ *isgz = COMP_COMPRESS;
+ }
+ else if ((k > 3) && ((strcmp(file + k - 3, ".gz") == 0)
+ || (strcmp(file + k - 3, ".GZ") == 0))) {
+ *ispipe = 1;
+ *isgz = COMP_GZIP;
+ }
+ else if ((k > 4) && ((strcmp(file + k - 4, ".bz2") == 0)
+ || (strcmp(file + k - 4, ".BZ2") == 0))) {
+ *ispipe = 1;
+ *isgz = COMP_BZIP2;
+ }
+}
+
+FILE *
+fopen_comp(const char *file, const char *mode, int32 * ispipe)
+{
+ FILE *fp;
+
+#ifndef HAVE_POPEN
+ *ispipe = 0; /* No popen() on WinCE */
+#else /* HAVE_POPEN */
+ int32 isgz;
+ guess_comptype(file, ispipe, &isgz);
+#endif /* HAVE_POPEN */
+
+ if (*ispipe) {
+#ifndef HAVE_POPEN
+ /* Shouldn't get here, anyway */
+ E_FATAL("No popen() on WinCE\n");
+#else
+ if (strcmp(mode, "r") == 0) {
+ char *command;
+ switch (isgz) {
+ case COMP_GZIP:
+ command = string_join("gunzip" EXEEXT, " -c ", file, NULL);
+ break;
+ case COMP_COMPRESS:
+ command = string_join("zcat" EXEEXT, " ", file, NULL);
+ break;
+ case COMP_BZIP2:
+ command = string_join("bunzip2" EXEEXT, " -c ", file, NULL);
+ break;
+ default:
+ command = NULL; /* Make compiler happy. */
+ E_FATAL("Unknown compression type %d\n", isgz);
+ }
+ if ((fp = popen(command, mode)) == NULL) {
+ E_ERROR_SYSTEM("popen (%s,%s) failed\n", command, mode);
+ ckd_free(command);
+ return NULL;
+ }
+ ckd_free(command);
+ }
+ else if (strcmp(mode, "w") == 0) {
+ char *command;
+ switch (isgz) {
+ case COMP_GZIP:
+ command = string_join("gzip" EXEEXT, " > ", file, NULL);
+ break;
+ case COMP_COMPRESS:
+ command = string_join("compress" EXEEXT, " -c > ", file, NULL);
+ break;
+ case COMP_BZIP2:
+ command = string_join("bzip2" EXEEXT, " > ", file, NULL);
+ break;
+ default:
+ command = NULL; /* Make compiler happy. */
+ E_FATAL("Unknown compression type %d\n", isgz);
+ }
+ if ((fp = popen(command, mode)) == NULL) {
+ E_ERROR_SYSTEM("popen (%s,%s) failed\n", command, mode);
+ ckd_free(command);
+ return NULL;
+ }
+ ckd_free(command);
+ }
+ else {
+ E_ERROR("fopen_comp not implemented for mode = %s\n", mode);
+ return NULL;
+ }
+#endif /* HAVE_POPEN */
+ }
+ else {
+ fp = fopen(file, mode);
+ }
+
+ return (fp);
+}
+
+
+void
+fclose_comp(FILE * fp, int32 ispipe)
+{
+ if (ispipe) {
+#ifdef HAVE_POPEN
+#if defined(_WIN32) && (!defined(__SYMBIAN32__))
+ _pclose(fp);
+#else
+ pclose(fp);
+#endif
+#endif
+ }
+ else
+ fclose(fp);
+}
+
+
+FILE *
+fopen_compchk(const char *file, int32 * ispipe)
+{
+#ifndef HAVE_POPEN
+ *ispipe = 0; /* No popen() on WinCE */
+ /* And therefore the rest of this function is useless. */
+ return (fopen_comp(file, "r", ispipe));
+#else /* HAVE_POPEN */
+ int32 isgz;
+ FILE *fh;
+
+ /* First just try to fopen_comp() it */
+ if ((fh = fopen_comp(file, "r", ispipe)) != NULL)
+ return fh;
+ else {
+ char *tmpfile;
+ int k;
+
+ /* File doesn't exist; try other compressed/uncompressed form, as appropriate */
+ guess_comptype(file, ispipe, &isgz);
+ k = strlen(file);
+ tmpfile = ckd_calloc(k+5, 1);
+ strcpy(tmpfile, file);
+ switch (isgz) {
+ case COMP_GZIP:
+ tmpfile[k - 3] = '\0';
+ break;
+ case COMP_BZIP2:
+ tmpfile[k - 4] = '\0';
+ break;
+ case COMP_COMPRESS:
+ tmpfile[k - 2] = '\0';
+ break;
+ case COMP_NONE:
+ strcpy(tmpfile + k, ".gz");
+ if ((fh = fopen_comp(tmpfile, "r", ispipe)) != NULL) {
+ E_WARN("Using %s instead of %s\n", tmpfile, file);
+ ckd_free(tmpfile);
+ return fh;
+ }
+ strcpy(tmpfile + k, ".bz2");
+ if ((fh = fopen_comp(tmpfile, "r", ispipe)) != NULL) {
+ E_WARN("Using %s instead of %s\n", tmpfile, file);
+ ckd_free(tmpfile);
+ return fh;
+ }
+ strcpy(tmpfile + k, ".Z");
+ if ((fh = fopen_comp(tmpfile, "r", ispipe)) != NULL) {
+ E_WARN("Using %s instead of %s\n", tmpfile, file);
+ ckd_free(tmpfile);
+ return fh;
+ }
+ ckd_free(tmpfile);
+ return NULL;
+ }
+ E_WARN("Using %s instead of %s\n", tmpfile, file);
+ fh = fopen_comp(tmpfile, "r", ispipe);
+ ckd_free(tmpfile);
+ return NULL;
+ }
+#endif /* HAVE_POPEN */
+}
+
+lineiter_t *
+lineiter_start(FILE *fh)
+{
+ lineiter_t *li;
+
+ li = ckd_calloc(1, sizeof(*li));
+ li->buf = ckd_malloc(128);
+ li->buf[0] = '\0';
+ li->bsiz = 128;
+ li->len = 0;
+ li->fh = fh;
+
+ return lineiter_next(li);
+}
+
+lineiter_t *
+lineiter_next(lineiter_t *li)
+{
+ /* Read a line and check for EOF. */
+ if (fgets(li->buf, li->bsiz, li->fh) == NULL) {
+ lineiter_free(li);
+ return NULL;
+ }
+ /* If we managed to read the whole thing, then we are done
+ * (this will be by far the most common result). */
+ li->len = strlen(li->buf);
+ if (li->len < li->bsiz - 1 || li->buf[li->len - 1] == '\n')
+ return li;
+
+ /* Otherwise we have to reallocate and keep going. */
+ while (1) {
+ li->bsiz *= 2;
+ li->buf = ckd_realloc(li->buf, li->bsiz);
+ /* If we get an EOF, we are obviously done. */
+ if (fgets(li->buf + li->len, li->bsiz - li->len, li->fh) == NULL) {
+ li->len += strlen(li->buf + li->len);
+ return li;
+ }
+ li->len += strlen(li->buf + li->len);
+ /* If we managed to read the whole thing, then we are done. */
+ if (li->len < li->bsiz - 1 || li->buf[li->len - 1] == '\n')
+ return li;
+ }
+
+ /* Shouldn't get here. */
+ return li;
+}
+
+void
+lineiter_free(lineiter_t *li)
+{
+ if (li == NULL)
+ return;
+ ckd_free(li->buf);
+ ckd_free(li);
+}
+
+char *
+fread_line(FILE *stream, size_t *out_len)
+{
+ char *output, *outptr;
+ char buf[128];
+
+ output = outptr = NULL;
+ while (fgets(buf, sizeof(buf), stream)) {
+ size_t len = strlen(buf);
+ /* Append this data to the buffer. */
+ if (output == NULL) {
+ output = ckd_malloc(len + 1);
+ outptr = output;
+ }
+ else {
+ size_t cur = outptr - output;
+ output = ckd_realloc(output, cur + len + 1);
+ outptr = output + cur;
+ }
+ memcpy(outptr, buf, len + 1);
+ outptr += len;
+ /* Stop on a short read or end of line. */
+ if (len < sizeof(buf)-1 || buf[len-1] == '\n')
+ break;
+ }
+ if (out_len) *out_len = outptr - output;
+ return output;
+}
+
+
+#define FREAD_RETRY_COUNT 60
+
+int32
+fread_retry(void *pointer, int32 size, int32 num_items, FILE * stream)
+{
+ char *data;
+ uint32 n_items_read;
+ uint32 n_items_rem;
+ uint32 n_retry_rem;
+ int32 loc;
+
+ n_retry_rem = FREAD_RETRY_COUNT;
+
+ data = pointer;
+ loc = 0;
+ n_items_rem = num_items;
+
+ do {
+ n_items_read = fread(&data[loc], size, n_items_rem, stream);
+
+ n_items_rem -= n_items_read;
+
+ if (n_items_rem > 0) {
+ /* an incomplete read occurred */
+
+ if (n_retry_rem == 0)
+ return -1;
+
+ if (n_retry_rem == FREAD_RETRY_COUNT) {
+ E_ERROR_SYSTEM("fread() failed; retrying...\n");
+ }
+
+ --n_retry_rem;
+
+ loc += n_items_read * size;
+#ifdef HAVE_UNISTD_H
+ sleep(1);
+#endif
+ }
+ } while (n_items_rem > 0);
+
+ return num_items;
+}
+
+
+/* Silvio Moioli: updated to use Unicode */
+#ifdef _WIN32_WCE /* No stat() on WinCE */
+int32
+stat_retry(const char *file, struct stat * statbuf)
+{
+ WIN32_FIND_DATAW file_data;
+ HANDLE *h;
+ wchar_t *wfile;
+ size_t len;
+
+ len = mbstowcs(NULL, file, 0) + 1;
+ wfile = ckd_calloc(len, sizeof(*wfile));
+ mbstowcs(wfile, file, len);
+ if ((h = FindFirstFileW(wfile, &file_data)) == INVALID_HANDLE_VALUE) {
+ ckd_free(wfile);
+ return -1;
+ }
+ ckd_free(wfile);
+ memset(statbuf, 0, sizeof(statbuf));
+ statbuf->st_mtime = file_data.ftLastWriteTime.dwLowDateTime;
+ statbuf->st_size = file_data.nFileSizeLow;
+ FindClose(h);
+
+ return 0;
+}
+
+
+int32
+stat_mtime(const char *file)
+{
+ struct stat statbuf;
+
+ if (stat_retry(file, &statbuf) != 0)
+ return -1;
+
+ return ((int32) statbuf.st_mtime);
+}
+#else
+#define STAT_RETRY_COUNT 10
+int32
+stat_retry(const char *file, struct stat * statbuf)
+{
+ int32 i;
+
+
+
+ for (i = 0; i < STAT_RETRY_COUNT; i++) {
+
+#ifndef HAVE_SYS_STAT_H
+ FILE *fp;
+
+ if ((fp=(FILE *)fopen(file, "r"))!= 0)
+ {
+ fseek( fp, 0, SEEK_END);
+ statbuf->st_size = ftell( fp );
+ fclose(fp);
+ return 0;
+ }
+
+#else /* HAVE_SYS_STAT_H */
+ if (stat(file, statbuf) == 0)
+ return 0;
+#endif
+ if (i == 0) {
+ E_ERROR_SYSTEM("stat(%s) failed; retrying...\n", file);
+ }
+#ifdef HAVE_UNISTD_H
+ sleep(1);
+#endif
+ }
+
+ return -1;
+}
+
+int32
+stat_mtime(const char *file)
+{
+ struct stat statbuf;
+
+#ifdef HAVE_SYS_STAT_H
+ if (stat(file, &statbuf) != 0)
+ return -1;
+#else /* HAVE_SYS_STAT_H */
+ if (stat_retry(file, &statbuf) != 0)
+ return -1;
+#endif /* HAVE_SYS_STAT_H */
+
+ return ((int32) statbuf.st_mtime);
+}
+#endif /* !_WIN32_WCE */
+
+struct bit_encode_s {
+ FILE *fh;
+ unsigned char buf, bbits;
+ int16 refcount;
+};
+
+bit_encode_t *
+bit_encode_attach(FILE *outfh)
+{
+ bit_encode_t *be;
+
+ be = ckd_calloc(1, sizeof(*be));
+ be->refcount = 1;
+ be->fh = outfh;
+ return be;
+}
+
+bit_encode_t *
+bit_encode_retain(bit_encode_t *be)
+{
+ ++be->refcount;
+ return be;
+}
+
+int
+bit_encode_free(bit_encode_t *be)
+{
+ if (be == NULL)
+ return 0;
+ if (--be->refcount > 0)
+ return be->refcount;
+ ckd_free(be);
+
+ return 0;
+}
+
+int
+bit_encode_write(bit_encode_t *be, unsigned char const *bits, int nbits)
+{
+ int tbits;
+
+ tbits = nbits + be->bbits;
+ if (tbits < 8) {
+ /* Append to buffer. */
+ be->buf |= ((bits[0] >> (8 - nbits)) << (8 - tbits));
+ }
+ else {
+ int i = 0;
+ while (tbits >= 8) {
+ /* Shift bits out of the buffer and splice with high-order bits */
+ fputc(be->buf | ((bits[i]) >> be->bbits), be->fh);
+ /* Put low-order bits back into buffer */
+ be->buf = (bits[i] << (8 - be->bbits)) & 0xff;
+ tbits -= 8;
+ ++i;
+ }
+ }
+ /* tbits contains remaining number of bits. */
+ be->bbits = tbits;
+
+ return nbits;
+}
+
+int
+bit_encode_write_cw(bit_encode_t *be, uint32 codeword, int nbits)
+{
+ unsigned char bits[4];
+ codeword <<= (32 - nbits);
+ bits[0] = (codeword >> 24) & 0xff;
+ bits[1] = (codeword >> 16) & 0xff;
+ bits[2] = (codeword >> 8) & 0xff;
+ bits[3] = codeword & 0xff;
+ return bit_encode_write(be, bits, nbits);
+}
+
+int
+bit_encode_flush(bit_encode_t *be)
+{
+ if (be->bbits) {
+ fputc(be->buf, be->fh);
+ be->bbits = 0;
+ }
+ return 0;
+}
+
+#ifdef HAVE_SYS_STAT_H /* Unix, Cygwin */
+int
+build_directory(const char *path)
+{
+ int rv;
+
+ /* Utterly failed... */
+ if (strlen(path) == 0)
+ return -1;
+ /* Utterly succeeded... */
+ else if ((rv = mkdir(path, 0777)) == 0)
+ return 0;
+ /* Or, it already exists... */
+ else if (errno == EEXIST)
+ return 0;
+ else if (errno != ENOENT) {
+ E_ERROR_SYSTEM("Failed to create %s");
+ return -1;
+ }
+ else {
+ char *dirname = ckd_salloc(path);
+ path2dirname(path, dirname);
+ build_directory(dirname);
+ ckd_free(dirname);
+ return mkdir(path, 0777);
+ }
+}
+#elif defined(_WIN32)
+/* FIXME: Implement this. */
+int
+build_directory(const char *path)
+{
+ E_ERROR("build_directory() unimplemented on your platform!\n");
+ return -1;
+}
+#else
+int
+build_directory(const char *path)
+{
+ E_ERROR("build_directory() unimplemented on your platform!\n");
+ return -1;
+}
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * profile.c -- For timing and event counting.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log: profile.c,v $
+ * Revision 1.7 2005/06/22 03:10:59 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Added keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 11-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Added ptmr_init().
+ *
+ * 19-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if defined(_WIN32) && !defined(__SYMBIAN32__)
+# include <windows.h>
+# ifndef _WIN32_WCE
+# include <time.h>
+# endif
+#elif defined(HAVE_UNISTD_H) /* I know this, this is Unix... */
+# include <unistd.h>
+# include <sys/time.h>
+# include <sys/resource.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4996)
+#endif
+
+#include "sphinxbase/profile.h"
+#include "sphinxbase/err.h"
+#include "sphinxbase/ckd_alloc.h"
+
+/* Silvio Moioli: updated to use Unicode */
+#ifdef _WIN32_WCE
+DWORD unlink(const char *filename)
+{
+ WCHAR *wfilename;
+ DWORD rv;
+ size_t len;
+
+ len = mbstowcs(NULL, filename, 0);
+ wfilename = ckd_calloc(len+1, sizeof(*wfilename));
+ mbstowcs(wfilename, filename, len);
+ rv = DeleteFileW(wfilename);
+ ckd_free(wfilename);
+
+ return rv;
+}
+#endif
+
+pctr_t *
+pctr_new(char *nm)
+{
+ pctr_t *pc;
+
+ pc = ckd_calloc(1, sizeof(pctr_t));
+ pc->name = ckd_salloc(nm);
+ pc->count = 0;
+
+ return pc;
+}
+
+void
+pctr_reset(pctr_t * ctr)
+{
+ ctr->count = 0;
+}
+
+
+void
+pctr_increment(pctr_t * ctr, int32 inc)
+{
+ ctr->count += inc;
+ /* E_INFO("Name %s, Count %d, inc %d\n",ctr->name, ctr->count, inc); */
+}
+
+void
+pctr_print(FILE * fp, pctr_t * ctr)
+{
+ fprintf(fp, "CTR:");
+ fprintf(fp, "[%d %s]", ctr->count, ctr->name);
+}
+
+void
+pctr_free(pctr_t * pc)
+{
+ if (pc) {
+ if (pc->name)
+ ckd_free(pc->name);
+ }
+ ckd_free(pc);
+}
+
+
+#if defined(_WIN32) && !defined(GNUWINCE) && !defined(__SYMBIAN32__)
+
+#define TM_LOWSCALE 1e-7
+#define TM_HIGHSCALE (4294967296.0 * TM_LOWSCALE);
+
+static float64
+make_sec(FILETIME * tm)
+{
+ float64 dt;
+
+ dt = tm->dwLowDateTime * TM_LOWSCALE;
+ dt += tm->dwHighDateTime * TM_HIGHSCALE;
+
+ return (dt);
+}
+
+#else /* NOT WINDOWS */
+
+static float64
+make_sec(struct timeval *s)
+{
+ return (s->tv_sec + s->tv_usec * 0.000001);
+}
+
+#endif
+
+
+void
+ptmr_start(ptmr_t * tm)
+{
+#if (! defined(_WIN32)) || defined(GNUWINCE) || defined(__SYMBIAN32__)
+ struct timeval e_start; /* Elapsed time */
+
+#if (! defined(_HPUX_SOURCE)) && (! defined(__SYMBIAN32__))
+ struct rusage start; /* CPU time */
+
+ /* Unix but not HPUX */
+ getrusage(RUSAGE_SELF, &start);
+ tm->start_cpu = make_sec(&start.ru_utime) + make_sec(&start.ru_stime);
+#endif
+ /* Unix + HP */
+ gettimeofday(&e_start, 0);
+ tm->start_elapsed = make_sec(&e_start);
+#elif defined(_WIN32_WCE)
+ /* No GetProcessTimes() on WinCE. (Note CPU time will be bogus) */
+ tm->start_cpu = GetTickCount() / 1000;
+ tm->start_elapsed = GetTickCount() / 1000;
+#else
+ HANDLE pid;
+ FILETIME t_create, t_exit, kst, ust;
+
+ /* PC */
+ pid = GetCurrentProcess();
+ GetProcessTimes(pid, &t_create, &t_exit, &kst, &ust);
+ tm->start_cpu = make_sec(&ust) + make_sec(&kst);
+
+ tm->start_elapsed = (float64) clock() / CLOCKS_PER_SEC;
+#endif
+}
+
+
+void
+ptmr_stop(ptmr_t * tm)
+{
+ float64 dt_cpu, dt_elapsed;
+
+#if (! defined(_WIN32)) || defined(GNUWINCE) || defined(__SYMBIAN32__)
+ struct timeval e_stop; /* Elapsed time */
+
+#if (! defined(_HPUX_SOURCE)) && (! defined(__SYMBIAN32__))
+ struct rusage stop; /* CPU time */
+
+ /* Unix but not HPUX */
+ getrusage(RUSAGE_SELF, &stop);
+ dt_cpu =
+ make_sec(&stop.ru_utime) + make_sec(&stop.ru_stime) -
+ tm->start_cpu;
+#else
+ dt_cpu = 0.0;
+#endif
+ /* Unix + HP */
+ gettimeofday(&e_stop, 0);
+ dt_elapsed = (make_sec(&e_stop) - tm->start_elapsed);
+#elif defined(_WIN32_WCE)
+ /* No GetProcessTimes() on WinCE. (Note CPU time will be bogus) */
+ dt_cpu = GetTickCount() / 1000 - tm->start_cpu;
+ dt_elapsed = GetTickCount() / 1000 - tm->start_elapsed;
+#else
+ HANDLE pid;
+ FILETIME t_create, t_exit, kst, ust;
+
+ /* PC */
+ pid = GetCurrentProcess();
+ GetProcessTimes(pid, &t_create, &t_exit, &kst, &ust);
+ dt_cpu = make_sec(&ust) + make_sec(&kst) - tm->start_cpu;
+ dt_elapsed = ((float64) clock() / CLOCKS_PER_SEC) - tm->start_elapsed;
+#endif
+
+ tm->t_cpu += dt_cpu;
+ tm->t_elapsed += dt_elapsed;
+
+ tm->t_tot_cpu += dt_cpu;
+ tm->t_tot_elapsed += dt_elapsed;
+}
+
+
+void
+ptmr_reset(ptmr_t * tm)
+{
+ tm->t_cpu = 0.0;
+ tm->t_elapsed = 0.0;
+}
+
+
+void
+ptmr_init(ptmr_t * tm)
+{
+ tm->t_cpu = 0.0;
+ tm->t_elapsed = 0.0;
+ tm->t_tot_cpu = 0.0;
+ tm->t_tot_elapsed = 0.0;
+}
+
+
+void
+ptmr_reset_all(ptmr_t * tm)
+{
+ for (; tm->name; tm++)
+ ptmr_reset(tm);
+}
+
+
+void
+ptmr_print_all(FILE * fp, ptmr_t * tm, float64 norm)
+{
+ if (norm != 0.0) {
+ norm = 1.0 / norm;
+ for (; tm->name; tm++)
+ fprintf(fp, " %6.2fx %s", tm->t_cpu * norm, tm->name);
+ }
+}
+
+
+int32
+host_endian(void)
+{
+ FILE *fp;
+ int32 BYTE_ORDER_MAGIC;
+ char *file;
+ char buf[8];
+ int32 k, endian;
+
+ file = "/tmp/__EnDiAn_TeSt__";
+
+ if ((fp = fopen(file, "wb")) == NULL) {
+ E_ERROR("Failed to open file '%s' for writing: %s\n", file, strerror(errno));
+ return -1;
+ }
+
+ BYTE_ORDER_MAGIC = (int32) 0x11223344;
+
+ k = (int32) BYTE_ORDER_MAGIC;
+ if (fwrite(&k, sizeof(int32), 1, fp) != 1) {
+ E_ERROR("Failed to write to file '%s'\n", file);
+ fclose(fp);
+ unlink(file);
+ return -1;
+ }
+
+ fclose(fp);
+ if ((fp = fopen(file, "rb")) == NULL) {
+ E_ERROR("Failed to open file '%s' for reading: %s\n", file, strerror(errno));
+ unlink(file);
+ return -1;
+ }
+ if (fread(buf, 1, sizeof(int32), fp) != sizeof(int32)) {
+ E_ERROR("Failed to read from file '%s'\n", file);
+ fclose(fp);
+ unlink(file);
+ return -1;
+ }
+ fclose(fp);
+ unlink(file);
+
+ /* If buf[0] == lsB of BYTE_ORDER_MAGIC, we are little-endian */
+ endian = (buf[0] == (BYTE_ORDER_MAGIC & 0x000000ff)) ? 1 : 0;
+
+ return (endian);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2008 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+/**
+ * @file sbthread.c
+ * @brief Simple portable thread functions
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include <string.h>
+
+#include "sphinxbase/sbthread.h"
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/err.h"
+
+/*
+ * Platform-specific parts: threads, mutexes, and signals.
+ */
+#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(__SYMBIAN32__)
+#define _WIN32_WINNT 0x0400
+#include <windows.h>
+
+struct sbthread_s {
+ cmd_ln_t *config;
+ sbmsgq_t *msgq;
+ sbthread_main func;
+ void *arg;
+ HANDLE th;
+ DWORD tid;
+};
+
+struct sbmsgq_s {
+ /* Ringbuffer for passing messages. */
+ char *data;
+ size_t depth;
+ size_t out;
+ size_t nbytes;
+
+ /* Current message is stored here. */
+ char *msg;
+ size_t msglen;
+ CRITICAL_SECTION mtx;
+ HANDLE evt;
+};
+
+struct sbevent_s {
+ HANDLE evt;
+};
+
+struct sbmtx_s {
+ CRITICAL_SECTION mtx;
+};
+
+DWORD WINAPI
+sbthread_internal_main(LPVOID arg)
+{
+ sbthread_t *th = (sbthread_t *)arg;
+ int rv;
+
+ rv = (*th->func)(th);
+ return (DWORD)rv;
+}
+
+sbthread_t *
+sbthread_start(cmd_ln_t *config, sbthread_main func, void *arg)
+{
+ sbthread_t *th;
+
+ th = ckd_calloc(1, sizeof(*th));
+ th->config = config;
+ th->func = func;
+ th->arg = arg;
+ th->msgq = sbmsgq_init(256);
+ th->th = CreateThread(NULL, 0, sbthread_internal_main, th, 0, &th->tid);
+ if (th->th == NULL) {
+ sbthread_free(th);
+ return NULL;
+ }
+ return th;
+}
+
+int
+sbthread_wait(sbthread_t *th)
+{
+ DWORD rv, exit;
+
+ /* It has already been joined. */
+ if (th->th == NULL)
+ return -1;
+
+ rv = WaitForSingleObject(th->th, INFINITE);
+ if (rv == WAIT_FAILED) {
+ E_ERROR("Failed to join thread: WAIT_FAILED\n");
+ return -1;
+ }
+ GetExitCodeThread(th->th, &exit);
+ CloseHandle(th->th);
+ th->th = NULL;
+ return (int)exit;
+}
+
+static DWORD
+cond_timed_wait(HANDLE cond, int sec, int nsec)
+{
+ DWORD rv;
+ if (sec == -1) {
+ rv = WaitForSingleObject(cond, INFINITE);
+ }
+ else {
+ DWORD ms;
+
+ ms = sec * 1000 + nsec / (1000*1000);
+ rv = WaitForSingleObject(cond, ms);
+ }
+ return rv;
+}
+
+/* Silvio Moioli: updated to use Unicode */
+sbevent_t *
+sbevent_init(void)
+{
+ sbevent_t *evt;
+
+ evt = ckd_calloc(1, sizeof(*evt));
+ evt->evt = CreateEventW(NULL, FALSE, FALSE, NULL);
+ if (evt->evt == NULL) {
+ ckd_free(evt);
+ return NULL;
+ }
+ return evt;
+}
+
+void
+sbevent_free(sbevent_t *evt)
+{
+ CloseHandle(evt->evt);
+ ckd_free(evt);
+}
+
+int
+sbevent_signal(sbevent_t *evt)
+{
+ return SetEvent(evt->evt) ? 0 : -1;
+}
+
+int
+sbevent_wait(sbevent_t *evt, int sec, int nsec)
+{
+ DWORD rv;
+
+ rv = cond_timed_wait(evt->evt, sec, nsec);
+ return rv;
+}
+
+sbmtx_t *
+sbmtx_init(void)
+{
+ sbmtx_t *mtx;
+
+ mtx = ckd_calloc(1, sizeof(*mtx));
+ InitializeCriticalSection(&mtx->mtx);
+ return mtx;
+}
+
+int
+sbmtx_trylock(sbmtx_t *mtx)
+{
+ return TryEnterCriticalSection(&mtx->mtx) ? 0 : -1;
+}
+
+int
+sbmtx_lock(sbmtx_t *mtx)
+{
+ EnterCriticalSection(&mtx->mtx);
+ return 0;
+}
+
+int
+sbmtx_unlock(sbmtx_t *mtx)
+{
+ LeaveCriticalSection(&mtx->mtx);
+ return 0;
+}
+
+void
+sbmtx_free(sbmtx_t *mtx)
+{
+ DeleteCriticalSection(&mtx->mtx);
+ ckd_free(mtx);
+}
+
+sbmsgq_t *
+sbmsgq_init(size_t depth)
+{
+ sbmsgq_t *msgq;
+
+ msgq = ckd_calloc(1, sizeof(*msgq));
+ msgq->depth = depth;
+ msgq->evt = CreateEventW(NULL, FALSE, FALSE, NULL);
+ if (msgq->evt == NULL) {
+ ckd_free(msgq);
+ return NULL;
+ }
+ InitializeCriticalSection(&msgq->mtx);
+ msgq->data = ckd_calloc(depth, 1);
+ msgq->msg = ckd_calloc(depth, 1);
+ return msgq;
+}
+
+void
+sbmsgq_free(sbmsgq_t *msgq)
+{
+ CloseHandle(msgq->evt);
+ ckd_free(msgq->data);
+ ckd_free(msgq->msg);
+ ckd_free(msgq);
+}
+
+int
+sbmsgq_send(sbmsgq_t *q, size_t len, void const *data)
+{
+ char const *cdata = (char const *)data;
+ size_t in;
+
+ /* Don't allow things bigger than depth to be sent! */
+ if (len + sizeof(len) > q->depth)
+ return -1;
+
+ if (q->nbytes + len + sizeof(len) > q->depth)
+ WaitForSingleObject(q->evt, INFINITE);
+
+ /* Lock things while we manipulate the buffer (FIXME: this
+ actually should have been atomic with the wait above ...) */
+ EnterCriticalSection(&q->mtx);
+ in = (q->out + q->nbytes) % q->depth;
+ /* First write the size of the message. */
+ if (in + sizeof(len) > q->depth) {
+ /* Handle the annoying case where the size field gets wrapped around. */
+ size_t len1 = q->depth - in;
+ memcpy(q->data + in, &len, len1);
+ memcpy(q->data, ((char *)&len) + len1, sizeof(len) - len1);
+ q->nbytes += sizeof(len);
+ in = sizeof(len) - len1;
+ }
+ else {
+ memcpy(q->data + in, &len, sizeof(len));
+ q->nbytes += sizeof(len);
+ in += sizeof(len);
+ }
+
+ /* Now write the message body. */
+ if (in + len > q->depth) {
+ /* Handle wraparound. */
+ size_t len1 = q->depth - in;
+ memcpy(q->data + in, cdata, len1);
+ q->nbytes += len1;
+ cdata += len1;
+ len -= len1;
+ in = 0;
+ }
+ memcpy(q->data + in, cdata, len);
+ q->nbytes += len;
+
+ /* Signal the condition variable. */
+ SetEvent(q->evt);
+ /* Unlock. */
+ LeaveCriticalSection(&q->mtx);
+
+ return 0;
+}
+
+void *
+sbmsgq_wait(sbmsgq_t *q, size_t *out_len, int sec, int nsec)
+{
+ char *outptr;
+ size_t len;
+
+ /* Wait for data to be available. */
+ if (q->nbytes == 0) {
+ if (cond_timed_wait(q->evt, sec, nsec) == WAIT_FAILED)
+ /* Timed out or something... */
+ return NULL;
+ }
+ /* Lock to manipulate the queue (FIXME) */
+ EnterCriticalSection(&q->mtx);
+ /* Get the message size. */
+ if (q->out + sizeof(q->msglen) > q->depth) {
+ /* Handle annoying wraparound case. */
+ size_t len1 = q->depth - q->out;
+ memcpy(&q->msglen, q->data + q->out, len1);
+ memcpy(((char *)&q->msglen) + len1, q->data,
+ sizeof(q->msglen) - len1);
+ q->out = sizeof(q->msglen) - len1;
+ }
+ else {
+ memcpy(&q->msglen, q->data + q->out, sizeof(q->msglen));
+ q->out += sizeof(q->msglen);
+ }
+ q->nbytes -= sizeof(q->msglen);
+ /* Get the message body. */
+ outptr = q->msg;
+ len = q->msglen;
+ if (q->out + q->msglen > q->depth) {
+ /* Handle wraparound. */
+ size_t len1 = q->depth - q->out;
+ memcpy(outptr, q->data + q->out, len1);
+ outptr += len1;
+ len -= len1;
+ q->nbytes -= len1;
+ q->out = 0;
+ }
+ memcpy(outptr, q->data + q->out, len);
+ q->nbytes -= len;
+ q->out += len;
+
+ /* Signal the condition variable. */
+ SetEvent(q->evt);
+ /* Unlock. */
+ LeaveCriticalSection(&q->mtx);
+ if (out_len)
+ *out_len = q->msglen;
+ return q->msg;
+}
+
+#else /* POSIX */
+#include <pthread.h>
+#include <sys/time.h>
+
+struct sbthread_s {
+ cmd_ln_t *config;
+ sbmsgq_t *msgq;
+ sbthread_main func;
+ void *arg;
+ pthread_t th;
+};
+
+struct sbmsgq_s {
+ /* Ringbuffer for passing messages. */
+ char *data;
+ size_t depth;
+ size_t out;
+ size_t nbytes;
+
+ /* Current message is stored here. */
+ char *msg;
+ size_t msglen;
+ pthread_mutex_t mtx;
+ pthread_cond_t cond;
+};
+
+struct sbevent_s {
+ pthread_mutex_t mtx;
+ pthread_cond_t cond;
+ int signalled;
+};
+
+struct sbmtx_s {
+ pthread_mutex_t mtx;
+};
+
+static void *
+sbthread_internal_main(void *arg)
+{
+ sbthread_t *th = (sbthread_t *)arg;
+ int rv;
+
+ rv = (*th->func)(th);
+ return (void *)(long)rv;
+}
+
+sbthread_t *
+sbthread_start(cmd_ln_t *config, sbthread_main func, void *arg)
+{
+ sbthread_t *th;
+ int rv;
+
+ th = ckd_calloc(1, sizeof(*th));
+ th->config = config;
+ th->func = func;
+ th->arg = arg;
+ th->msgq = sbmsgq_init(1024);
+ if ((rv = pthread_create(&th->th, NULL, &sbthread_internal_main, th)) != 0) {
+ E_ERROR("Failed to create thread: %d\n", rv);
+ sbthread_free(th);
+ return NULL;
+ }
+ return th;
+}
+
+int
+sbthread_wait(sbthread_t *th)
+{
+ void *exit;
+ int rv;
+
+ /* It has already been joined. */
+ if (th->th == (pthread_t)-1)
+ return -1;
+
+ rv = pthread_join(th->th, &exit);
+ if (rv != 0) {
+ E_ERROR("Failed to join thread: %d\n", rv);
+ return -1;
+ }
+ th->th = (pthread_t)-1;
+ return (int)(long)exit;
+}
+
+sbmsgq_t *
+sbmsgq_init(size_t depth)
+{
+ sbmsgq_t *msgq;
+
+ msgq = ckd_calloc(1, sizeof(*msgq));
+ msgq->depth = depth;
+ if (pthread_cond_init(&msgq->cond, NULL) != 0) {
+ ckd_free(msgq);
+ return NULL;
+ }
+ if (pthread_mutex_init(&msgq->mtx, NULL) != 0) {
+ pthread_cond_destroy(&msgq->cond);
+ ckd_free(msgq);
+ return NULL;
+ }
+ msgq->data = ckd_calloc(depth, 1);
+ msgq->msg = ckd_calloc(depth, 1);
+ return msgq;
+}
+
+void
+sbmsgq_free(sbmsgq_t *msgq)
+{
+ pthread_mutex_destroy(&msgq->mtx);
+ pthread_cond_destroy(&msgq->cond);
+ ckd_free(msgq->data);
+ ckd_free(msgq->msg);
+ ckd_free(msgq);
+}
+
+int
+sbmsgq_send(sbmsgq_t *q, size_t len, void const *data)
+{
+ size_t in;
+
+ /* Don't allow things bigger than depth to be sent! */
+ if (len + sizeof(len) > q->depth)
+ return -1;
+
+ /* Lock the condition variable while we manipulate the buffer. */
+ pthread_mutex_lock(&q->mtx);
+ if (q->nbytes + len + sizeof(len) > q->depth) {
+ /* Unlock and wait for space to be available. */
+ if (pthread_cond_wait(&q->cond, &q->mtx) != 0) {
+ /* Timed out, don't send anything. */
+ pthread_mutex_unlock(&q->mtx);
+ return -1;
+ }
+ /* Condition is now locked again. */
+ }
+ in = (q->out + q->nbytes) % q->depth;
+
+ /* First write the size of the message. */
+ if (in + sizeof(len) > q->depth) {
+ /* Handle the annoying case where the size field gets wrapped around. */
+ size_t len1 = q->depth - in;
+ memcpy(q->data + in, &len, len1);
+ memcpy(q->data, ((char *)&len) + len1, sizeof(len) - len1);
+ q->nbytes += sizeof(len);
+ in = sizeof(len) - len1;
+ }
+ else {
+ memcpy(q->data + in, &len, sizeof(len));
+ q->nbytes += sizeof(len);
+ in += sizeof(len);
+ }
+
+ /* Now write the message body. */
+ if (in + len > q->depth) {
+ /* Handle wraparound. */
+ size_t len1 = q->depth - in;
+ memcpy(q->data + in, data, len1);
+ q->nbytes += len1;
+ data = (char const *)data + len1;
+ len -= len1;
+ in = 0;
+ }
+ memcpy(q->data + in, data, len);
+ q->nbytes += len;
+
+ /* Signal the condition variable. */
+ pthread_cond_signal(&q->cond);
+ /* Unlock it, we have nothing else to do. */
+ pthread_mutex_unlock(&q->mtx);
+ return 0;
+}
+
+static int
+cond_timed_wait(pthread_cond_t *cond, pthread_mutex_t *mtx, int sec, int nsec)
+{
+ int rv;
+ if (sec == -1) {
+ rv = pthread_cond_wait(cond, mtx);
+ }
+ else {
+ struct timeval now;
+ struct timespec end;
+
+ gettimeofday(&now, NULL);
+ end.tv_sec = now.tv_sec + sec;
+ end.tv_nsec = now.tv_usec * 1000 + nsec;
+ if (end.tv_nsec > (1000*1000*1000)) {
+ sec += end.tv_nsec / (1000*1000*1000);
+ end.tv_nsec = end.tv_nsec % (1000*1000*1000);
+ }
+ rv = pthread_cond_timedwait(cond, mtx, &end);
+ }
+ return rv;
+}
+
+void *
+sbmsgq_wait(sbmsgq_t *q, size_t *out_len, int sec, int nsec)
+{
+ char *outptr;
+ size_t len;
+
+ /* Lock the condition variable while we manipulate nmsg. */
+ pthread_mutex_lock(&q->mtx);
+ if (q->nbytes == 0) {
+ /* Unlock the condition variable and wait for a signal. */
+ if (cond_timed_wait(&q->cond, &q->mtx, sec, nsec) != 0) {
+ /* Timed out or something... */
+ pthread_mutex_unlock(&q->mtx);
+ return NULL;
+ }
+ /* Condition variable is now locked again. */
+ }
+ /* Get the message size. */
+ if (q->out + sizeof(q->msglen) > q->depth) {
+ /* Handle annoying wraparound case. */
+ size_t len1 = q->depth - q->out;
+ memcpy(&q->msglen, q->data + q->out, len1);
+ memcpy(((char *)&q->msglen) + len1, q->data,
+ sizeof(q->msglen) - len1);
+ q->out = sizeof(q->msglen) - len1;
+ }
+ else {
+ memcpy(&q->msglen, q->data + q->out, sizeof(q->msglen));
+ q->out += sizeof(q->msglen);
+ }
+ q->nbytes -= sizeof(q->msglen);
+ /* Get the message body. */
+ outptr = q->msg;
+ len = q->msglen;
+ if (q->out + q->msglen > q->depth) {
+ /* Handle wraparound. */
+ size_t len1 = q->depth - q->out;
+ memcpy(outptr, q->data + q->out, len1);
+ outptr += len1;
+ len -= len1;
+ q->nbytes -= len1;
+ q->out = 0;
+ }
+ memcpy(outptr, q->data + q->out, len);
+ q->nbytes -= len;
+ q->out += len;
+
+ /* Signal the condition variable. */
+ pthread_cond_signal(&q->cond);
+ /* Unlock the condition variable, we are done. */
+ pthread_mutex_unlock(&q->mtx);
+ if (out_len)
+ *out_len = q->msglen;
+ return q->msg;
+}
+
+sbevent_t *
+sbevent_init(void)
+{
+ sbevent_t *evt;
+ int rv;
+
+ evt = ckd_calloc(1, sizeof(*evt));
+ if ((rv = pthread_mutex_init(&evt->mtx, NULL)) != 0) {
+ E_ERROR("Failed to initialize mutex: %d\n", rv);
+ ckd_free(evt);
+ return NULL;
+ }
+ if ((rv = pthread_cond_init(&evt->cond, NULL)) != 0) {
+ E_ERROR_SYSTEM("Failed to initialize mutex: %d\n", rv);
+ pthread_mutex_destroy(&evt->mtx);
+ ckd_free(evt);
+ return NULL;
+ }
+ return evt;
+}
+
+void
+sbevent_free(sbevent_t *evt)
+{
+ pthread_mutex_destroy(&evt->mtx);
+ pthread_cond_destroy(&evt->cond);
+ ckd_free(evt);
+}
+
+int
+sbevent_signal(sbevent_t *evt)
+{
+ int rv;
+
+ pthread_mutex_lock(&evt->mtx);
+ evt->signalled = TRUE;
+ rv = pthread_cond_signal(&evt->cond);
+ pthread_mutex_unlock(&evt->mtx);
+ return rv;
+}
+
+int
+sbevent_wait(sbevent_t *evt, int sec, int nsec)
+{
+ int rv = 0;
+
+ /* Lock the mutex before we check its signalled state. */
+ pthread_mutex_lock(&evt->mtx);
+ /* If it's not signalled, then wait until it is. */
+ if (!evt->signalled)
+ rv = cond_timed_wait(&evt->cond, &evt->mtx, sec, nsec);
+ /* Set its state to unsignalled if we were successful. */
+ if (rv == 0)
+ evt->signalled = FALSE;
+ /* And unlock its mutex. */
+ pthread_mutex_unlock(&evt->mtx);
+
+ return rv;
+}
+
+sbmtx_t *
+sbmtx_init(void)
+{
+ sbmtx_t *mtx;
+
+ mtx = ckd_calloc(1, sizeof(*mtx));
+ if (pthread_mutex_init(&mtx->mtx, NULL) != 0) {
+ ckd_free(mtx);
+ return NULL;
+ }
+ return mtx;
+}
+
+int
+sbmtx_trylock(sbmtx_t *mtx)
+{
+ return pthread_mutex_trylock(&mtx->mtx);
+}
+
+int
+sbmtx_lock(sbmtx_t *mtx)
+{
+ return pthread_mutex_lock(&mtx->mtx);
+}
+
+int
+sbmtx_unlock(sbmtx_t *mtx)
+{
+ return pthread_mutex_unlock(&mtx->mtx);
+}
+
+void
+sbmtx_free(sbmtx_t *mtx)
+{
+ pthread_mutex_destroy(&mtx->mtx);
+ ckd_free(mtx);
+}
+#endif /* not WIN32 */
+
+cmd_ln_t *
+sbthread_config(sbthread_t *th)
+{
+ return th->config;
+}
+
+void *
+sbthread_arg(sbthread_t *th)
+{
+ return th->arg;
+}
+
+sbmsgq_t *
+sbthread_msgq(sbthread_t *th)
+{
+ return th->msgq;
+}
+
+int
+sbthread_send(sbthread_t *th, size_t len, void const *data)
+{
+ return sbmsgq_send(th->msgq, len, data);
+}
+
+void
+sbthread_free(sbthread_t *th)
+{
+ sbthread_wait(th);
+ sbmsgq_free(th->msgq);
+ ckd_free(th);
+}
--- /dev/null
+/* src/slamch.f -- translated by f2c (version 20050501).
+ You must link the resulting object file with libf2c:
+ on Microsoft Windows system, link with libf2c.lib;
+ on Linux or Unix systems, link with .../path/to/libf2c.a -lm
+ or, if you install libf2c.a in a standard place, with -lf2c -lm
+ -- in that order, at the end of the command line, as in
+ cc *.o -lf2c -lm
+ Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
+
+ http://www.netlib.org/f2c/libf2c.zip
+*/
+
+#include "sphinxbase/f2c.h"
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4244)
+#endif
+
+/* Table of constant values */
+
+static integer c__1 = 1;
+static real c_b32 = 0.f;
+
+doublereal
+slamch_(char *cmach, ftnlen cmach_len)
+{
+ /* Initialized data */
+
+ static logical first = TRUE_;
+
+ /* System generated locals */
+ integer i__1;
+ real ret_val;
+
+ /* Builtin functions */
+ double pow_ri(real *, integer *);
+
+ /* Local variables */
+ static real t;
+ static integer it;
+ static real rnd, eps, base;
+ static integer beta;
+ static real emin, prec, emax;
+ static integer imin, imax;
+ static logical lrnd;
+ static real rmin, rmax, rmach;
+ extern logical lsame_(char *, char *, ftnlen, ftnlen);
+ static real small, sfmin;
+ extern /* Subroutine */ int slamc2_(integer *, integer *, logical *, real
+ *, integer *, real *, integer *,
+ real *);
+
+
+/* -- LAPACK auxiliary routine (version 3.0) -- */
+/* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
+/* Courant Institute, Argonne National Lab, and Rice University */
+/* October 31, 1992 */
+
+/* .. Scalar Arguments .. */
+/* .. */
+
+/* Purpose */
+/* ======= */
+
+/* SLAMCH determines single precision machine parameters. */
+
+/* Arguments */
+/* ========= */
+
+/* CMACH (input) CHARACTER*1 */
+/* Specifies the value to be returned by SLAMCH: */
+/* = 'E' or 'e', SLAMCH := eps */
+/* = 'S' or 's , SLAMCH := sfmin */
+/* = 'B' or 'b', SLAMCH := base */
+/* = 'P' or 'p', SLAMCH := eps*base */
+/* = 'N' or 'n', SLAMCH := t */
+/* = 'R' or 'r', SLAMCH := rnd */
+/* = 'M' or 'm', SLAMCH := emin */
+/* = 'U' or 'u', SLAMCH := rmin */
+/* = 'L' or 'l', SLAMCH := emax */
+/* = 'O' or 'o', SLAMCH := rmax */
+
+/* where */
+
+/* eps = relative machine precision */
+/* sfmin = safe minimum, such that 1/sfmin does not overflow */
+/* base = base of the machine */
+/* prec = eps*base */
+/* t = number of (base) digits in the mantissa */
+/* rnd = 1.0 when rounding occurs in addition, 0.0 otherwise */
+/* emin = minimum exponent before (gradual) underflow */
+/* rmin = underflow threshold - base**(emin-1) */
+/* emax = largest exponent before overflow */
+/* rmax = overflow threshold - (base**emax)*(1-eps) */
+
+/* ===================================================================== */
+
+/* .. Parameters .. */
+/* .. */
+/* .. Local Scalars .. */
+/* .. */
+/* .. External Functions .. */
+/* .. */
+/* .. External Subroutines .. */
+/* .. */
+/* .. Save statement .. */
+/* .. */
+/* .. Data statements .. */
+/* .. */
+/* .. Executable Statements .. */
+
+ if (first) {
+ first = FALSE_;
+ slamc2_(&beta, &it, &lrnd, &eps, &imin, &rmin, &imax, &rmax);
+ base = (real) beta;
+ t = (real) it;
+ if (lrnd) {
+ rnd = 1.f;
+ i__1 = 1 - it;
+ eps = pow_ri(&base, &i__1) / 2;
+ }
+ else {
+ rnd = 0.f;
+ i__1 = 1 - it;
+ eps = pow_ri(&base, &i__1);
+ }
+ prec = eps * base;
+ emin = (real) imin;
+ emax = (real) imax;
+ sfmin = rmin;
+ small = 1.f / rmax;
+ if (small >= sfmin) {
+
+/* Use SMALL plus a bit, to avoid the possibility of rounding */
+/* causing overflow when computing 1/sfmin. */
+
+ sfmin = small * (eps + 1.f);
+ }
+ }
+
+ if (lsame_(cmach, "E", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = eps;
+ }
+ else if (lsame_(cmach, "S", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = sfmin;
+ }
+ else if (lsame_(cmach, "B", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = base;
+ }
+ else if (lsame_(cmach, "P", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = prec;
+ }
+ else if (lsame_(cmach, "N", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = t;
+ }
+ else if (lsame_(cmach, "R", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = rnd;
+ }
+ else if (lsame_(cmach, "M", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = emin;
+ }
+ else if (lsame_(cmach, "U", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = rmin;
+ }
+ else if (lsame_(cmach, "L", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = emax;
+ }
+ else if (lsame_(cmach, "O", (ftnlen) 1, (ftnlen) 1)) {
+ rmach = rmax;
+ }
+
+ ret_val = rmach;
+ return ret_val;
+
+/* End of SLAMCH */
+
+} /* slamch_ */
+
+
+/* *********************************************************************** */
+
+/* Subroutine */ int
+slamc1_(integer * beta, integer * t, logical * rnd, logical * ieee1)
+{
+ /* Initialized data */
+
+ static logical first = TRUE_;
+
+ /* System generated locals */
+ real r__1, r__2;
+
+ /* Local variables */
+ static real a, b, c__, f, t1, t2;
+ static integer lt;
+ static real one, qtr;
+ static logical lrnd;
+ static integer lbeta;
+ static real savec;
+ static logical lieee1;
+ extern doublereal slamc3_(real *, real *);
+
+
+/* -- LAPACK auxiliary routine (version 3.0) -- */
+/* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
+/* Courant Institute, Argonne National Lab, and Rice University */
+/* October 31, 1992 */
+
+/* .. Scalar Arguments .. */
+/* .. */
+
+/* Purpose */
+/* ======= */
+
+/* SLAMC1 determines the machine parameters given by BETA, T, RND, and */
+/* IEEE1. */
+
+/* Arguments */
+/* ========= */
+
+/* BETA (output) INTEGER */
+/* The base of the machine. */
+
+/* T (output) INTEGER */
+/* The number of ( BETA ) digits in the mantissa. */
+
+/* RND (output) LOGICAL */
+/* Specifies whether proper rounding ( RND = .TRUE. ) or */
+/* chopping ( RND = .FALSE. ) occurs in addition. This may not */
+/* be a reliable guide to the way in which the machine performs */
+/* its arithmetic. */
+
+/* IEEE1 (output) LOGICAL */
+/* Specifies whether rounding appears to be done in the IEEE */
+/* 'round to nearest' style. */
+
+/* Further Details */
+/* =============== */
+
+/* The routine is based on the routine ENVRON by Malcolm and */
+/* incorporates suggestions by Gentleman and Marovich. See */
+
+/* Malcolm M. A. (1972) Algorithms to reveal properties of */
+/* floating-point arithmetic. Comms. of the ACM, 15, 949-951. */
+
+/* Gentleman W. M. and Marovich S. B. (1974) More on algorithms */
+/* that reveal properties of floating point arithmetic units. */
+/* Comms. of the ACM, 17, 276-277. */
+
+/* ===================================================================== */
+
+/* .. Local Scalars .. */
+/* .. */
+/* .. External Functions .. */
+/* .. */
+/* .. Save statement .. */
+/* .. */
+/* .. Data statements .. */
+/* .. */
+/* .. Executable Statements .. */
+
+ if (first) {
+ first = FALSE_;
+ one = 1.f;
+
+/* LBETA, LIEEE1, LT and LRND are the local values of BETA, */
+/* IEEE1, T and RND. */
+
+/* Throughout this routine we use the function SLAMC3 to ensure */
+/* that relevant values are stored and not held in registers, or */
+/* are not affected by optimizers. */
+
+/* Compute a = 2.0**m with the smallest positive integer m such */
+/* that */
+
+/* fl( a + 1.0 ) = a. */
+
+ a = 1.f;
+ c__ = 1.f;
+
+/* + WHILE( C.EQ.ONE )LOOP */
+ L10:
+ if (c__ == one) {
+ a *= 2;
+ c__ = slamc3_(&a, &one);
+ r__1 = -a;
+ c__ = slamc3_(&c__, &r__1);
+ goto L10;
+ }
+/* + END WHILE */
+
+/* Now compute b = 2.0**m with the smallest positive integer m */
+/* such that */
+
+/* fl( a + b ) .gt. a. */
+
+ b = 1.f;
+ c__ = slamc3_(&a, &b);
+
+/* + WHILE( C.EQ.A )LOOP */
+ L20:
+ if (c__ == a) {
+ b *= 2;
+ c__ = slamc3_(&a, &b);
+ goto L20;
+ }
+/* + END WHILE */
+
+/* Now compute the base. a and c are neighbouring floating point */
+/* numbers in the interval ( beta**t, beta**( t + 1 ) ) and so */
+/* their difference is beta. Adding 0.25 to c is to ensure that it */
+/* is truncated to beta and not ( beta - 1 ). */
+
+ qtr = one / 4;
+ savec = c__;
+ r__1 = -a;
+ c__ = slamc3_(&c__, &r__1);
+ lbeta = c__ + qtr;
+
+/* Now determine whether rounding or chopping occurs, by adding a */
+/* bit less than beta/2 and a bit more than beta/2 to a. */
+
+ b = (real) lbeta;
+ r__1 = b / 2;
+ r__2 = -b / 100;
+ f = slamc3_(&r__1, &r__2);
+ c__ = slamc3_(&f, &a);
+ if (c__ == a) {
+ lrnd = TRUE_;
+ }
+ else {
+ lrnd = FALSE_;
+ }
+ r__1 = b / 2;
+ r__2 = b / 100;
+ f = slamc3_(&r__1, &r__2);
+ c__ = slamc3_(&f, &a);
+ if (lrnd && c__ == a) {
+ lrnd = FALSE_;
+ }
+
+/* Try and decide whether rounding is done in the IEEE 'round to */
+/* nearest' style. B/2 is half a unit in the last place of the two */
+/* numbers A and SAVEC. Furthermore, A is even, i.e. has last bit */
+/* zero, and SAVEC is odd. Thus adding B/2 to A should not change */
+/* A, but adding B/2 to SAVEC should change SAVEC. */
+
+ r__1 = b / 2;
+ t1 = slamc3_(&r__1, &a);
+ r__1 = b / 2;
+ t2 = slamc3_(&r__1, &savec);
+ lieee1 = t1 == a && t2 > savec && lrnd;
+
+/* Now find the mantissa, t. It should be the integer part of */
+/* log to the base beta of a, however it is safer to determine t */
+/* by powering. So we find t as the smallest positive integer for */
+/* which */
+
+/* fl( beta**t + 1.0 ) = 1.0. */
+
+ lt = 0;
+ a = 1.f;
+ c__ = 1.f;
+
+/* + WHILE( C.EQ.ONE )LOOP */
+ L30:
+ if (c__ == one) {
+ ++lt;
+ a *= lbeta;
+ c__ = slamc3_(&a, &one);
+ r__1 = -a;
+ c__ = slamc3_(&c__, &r__1);
+ goto L30;
+ }
+/* + END WHILE */
+
+ }
+
+ *beta = lbeta;
+ *t = lt;
+ *rnd = lrnd;
+ *ieee1 = lieee1;
+ return 0;
+
+/* End of SLAMC1 */
+
+} /* slamc1_ */
+
+
+/* *********************************************************************** */
+
+/* Subroutine */ int
+slamc2_(integer * beta, integer * t, logical * rnd, real *
+ eps, integer * emin, real * rmin, integer * emax, real * rmax)
+{
+ /* Initialized data */
+
+ static logical first = TRUE_;
+ static logical iwarn = FALSE_;
+
+ /* Format strings */
+ static char fmt_9999[] =
+ "(//\002 WARNING. The value EMIN may be incorre"
+ "ct:-\002,\002 EMIN = \002,i8,/\002 If, after inspection, the va"
+ "lue EMIN looks\002,\002 acceptable please comment out \002,/\002"
+ " the IF block as marked within the code of routine\002,\002 SLAM"
+ "C2,\002,/\002 otherwise supply EMIN explicitly.\002,/)";
+
+ /* System generated locals */
+ integer i__1;
+ real r__1, r__2, r__3, r__4, r__5;
+
+ /* Builtin functions */
+ double pow_ri(real *, integer *);
+ integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen),
+ e_wsfe(void);
+
+ /* Local variables */
+ static real a, b, c__;
+ static integer i__, lt;
+ static real one, two;
+ static logical ieee;
+ static real half;
+ static logical lrnd;
+ static real leps, zero;
+ static integer lbeta;
+ static real rbase;
+ static integer lemin, lemax, gnmin;
+ static real small;
+ static integer gpmin;
+ static real third, lrmin, lrmax, sixth;
+ static logical lieee1;
+ extern /* Subroutine */ int slamc1_(integer *, integer *, logical *,
+ logical *);
+ extern doublereal slamc3_(real *, real *);
+ extern /* Subroutine */ int slamc4_(integer *, real *, integer *),
+ slamc5_(integer *, integer *, integer *, logical *, integer *,
+ real *);
+ static integer ngnmin, ngpmin;
+
+ /* Fortran I/O blocks */
+ static cilist io___58 = { 0, 6, 0, fmt_9999, 0 };
+
+
+
+/* -- LAPACK auxiliary routine (version 3.0) -- */
+/* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
+/* Courant Institute, Argonne National Lab, and Rice University */
+/* October 31, 1992 */
+
+/* .. Scalar Arguments .. */
+/* .. */
+
+/* Purpose */
+/* ======= */
+
+/* SLAMC2 determines the machine parameters specified in its argument */
+/* list. */
+
+/* Arguments */
+/* ========= */
+
+/* BETA (output) INTEGER */
+/* The base of the machine. */
+
+/* T (output) INTEGER */
+/* The number of ( BETA ) digits in the mantissa. */
+
+/* RND (output) LOGICAL */
+/* Specifies whether proper rounding ( RND = .TRUE. ) or */
+/* chopping ( RND = .FALSE. ) occurs in addition. This may not */
+/* be a reliable guide to the way in which the machine performs */
+/* its arithmetic. */
+
+/* EPS (output) REAL */
+/* The smallest positive number such that */
+
+/* fl( 1.0 - EPS ) .LT. 1.0, */
+
+/* where fl denotes the computed value. */
+
+/* EMIN (output) INTEGER */
+/* The minimum exponent before (gradual) underflow occurs. */
+
+/* RMIN (output) REAL */
+/* The smallest normalized number for the machine, given by */
+/* BASE**( EMIN - 1 ), where BASE is the floating point value */
+/* of BETA. */
+
+/* EMAX (output) INTEGER */
+/* The maximum exponent before overflow occurs. */
+
+/* RMAX (output) REAL */
+/* The largest positive number for the machine, given by */
+/* BASE**EMAX * ( 1 - EPS ), where BASE is the floating point */
+/* value of BETA. */
+
+/* Further Details */
+/* =============== */
+
+/* The computation of EPS is based on a routine PARANOIA by */
+/* W. Kahan of the University of California at Berkeley. */
+
+/* ===================================================================== */
+
+/* .. Local Scalars .. */
+/* .. */
+/* .. External Functions .. */
+/* .. */
+/* .. External Subroutines .. */
+/* .. */
+/* .. Intrinsic Functions .. */
+/* .. */
+/* .. Save statement .. */
+/* .. */
+/* .. Data statements .. */
+/* .. */
+/* .. Executable Statements .. */
+
+ if (first) {
+ first = FALSE_;
+ zero = 0.f;
+ one = 1.f;
+ two = 2.f;
+
+/* LBETA, LT, LRND, LEPS, LEMIN and LRMIN are the local values of */
+/* BETA, T, RND, EPS, EMIN and RMIN. */
+
+/* Throughout this routine we use the function SLAMC3 to ensure */
+/* that relevant values are stored and not held in registers, or */
+/* are not affected by optimizers. */
+
+/* SLAMC1 returns the parameters LBETA, LT, LRND and LIEEE1. */
+
+ slamc1_(&lbeta, <, &lrnd, &lieee1);
+
+/* Start to find EPS. */
+
+ b = (real) lbeta;
+ i__1 = -lt;
+ a = pow_ri(&b, &i__1);
+ leps = a;
+
+/* Try some tricks to see whether or not this is the correct EPS. */
+
+ b = two / 3;
+ half = one / 2;
+ r__1 = -half;
+ sixth = slamc3_(&b, &r__1);
+ third = slamc3_(&sixth, &sixth);
+ r__1 = -half;
+ b = slamc3_(&third, &r__1);
+ b = slamc3_(&b, &sixth);
+ b = dabs(b);
+ if (b < leps) {
+ b = leps;
+ }
+
+ leps = 1.f;
+
+/* + WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP */
+ L10:
+ if (leps > b && b > zero) {
+ leps = b;
+ r__1 = half * leps;
+/* Computing 5th power */
+ r__3 = two, r__4 = r__3, r__3 *= r__3;
+/* Computing 2nd power */
+ r__5 = leps;
+ r__2 = r__4 * (r__3 * r__3) * (r__5 * r__5);
+ c__ = slamc3_(&r__1, &r__2);
+ r__1 = -c__;
+ c__ = slamc3_(&half, &r__1);
+ b = slamc3_(&half, &c__);
+ r__1 = -b;
+ c__ = slamc3_(&half, &r__1);
+ b = slamc3_(&half, &c__);
+ goto L10;
+ }
+/* + END WHILE */
+
+ if (a < leps) {
+ leps = a;
+ }
+
+/* Computation of EPS complete. */
+
+/* Now find EMIN. Let A = + or - 1, and + or - (1 + BASE**(-3)). */
+/* Keep dividing A by BETA until (gradual) underflow occurs. This */
+/* is detected when we cannot recover the previous A. */
+
+ rbase = one / lbeta;
+ small = one;
+ for (i__ = 1; i__ <= 3; ++i__) {
+ r__1 = small * rbase;
+ small = slamc3_(&r__1, &zero);
+/* L20: */
+ }
+ a = slamc3_(&one, &small);
+ slamc4_(&ngpmin, &one, &lbeta);
+ r__1 = -one;
+ slamc4_(&ngnmin, &r__1, &lbeta);
+ slamc4_(&gpmin, &a, &lbeta);
+ r__1 = -a;
+ slamc4_(&gnmin, &r__1, &lbeta);
+ ieee = FALSE_;
+
+ if (ngpmin == ngnmin && gpmin == gnmin) {
+ if (ngpmin == gpmin) {
+ lemin = ngpmin;
+/* ( Non twos-complement machines, no gradual underflow; */
+/* e.g., VAX ) */
+ }
+ else if (gpmin - ngpmin == 3) {
+ lemin = ngpmin - 1 + lt;
+ ieee = TRUE_;
+/* ( Non twos-complement machines, with gradual underflow; */
+/* e.g., IEEE standard followers ) */
+ }
+ else {
+ lemin = min(ngpmin, gpmin);
+/* ( A guess; no known machine ) */
+ iwarn = TRUE_;
+ }
+
+ }
+ else if (ngpmin == gpmin && ngnmin == gnmin) {
+ if ((i__1 = ngpmin - ngnmin, abs(i__1)) == 1) {
+ lemin = max(ngpmin, ngnmin);
+/* ( Twos-complement machines, no gradual underflow; */
+/* e.g., CYBER 205 ) */
+ }
+ else {
+ lemin = min(ngpmin, ngnmin);
+/* ( A guess; no known machine ) */
+ iwarn = TRUE_;
+ }
+
+ }
+ else if ((i__1 = ngpmin - ngnmin, abs(i__1)) == 1
+ && gpmin == gnmin) {
+ if (gpmin - min(ngpmin, ngnmin) == 3) {
+ lemin = max(ngpmin, ngnmin) - 1 + lt;
+/* ( Twos-complement machines with gradual underflow; */
+/* no known machine ) */
+ }
+ else {
+ lemin = min(ngpmin, ngnmin);
+/* ( A guess; no known machine ) */
+ iwarn = TRUE_;
+ }
+
+ }
+ else {
+/* Computing MIN */
+ i__1 = min(ngpmin, ngnmin), i__1 = min(i__1, gpmin);
+ lemin = min(i__1, gnmin);
+/* ( A guess; no known machine ) */
+ iwarn = TRUE_;
+ }
+/* ** */
+/* Comment out this if block if EMIN is ok */
+ if (iwarn) {
+ first = TRUE_;
+ s_wsfe(&io___58);
+ do_fio(&c__1, (char *) &lemin, (ftnlen) sizeof(integer));
+ e_wsfe();
+ }
+/* ** */
+
+/* Assume IEEE arithmetic if we found denormalised numbers above, */
+/* or if arithmetic seems to round in the IEEE style, determined */
+/* in routine SLAMC1. A true IEEE machine should have both things */
+/* true; however, faulty machines may have one or the other. */
+
+ ieee = ieee || lieee1;
+
+/* Compute RMIN by successive division by BETA. We could compute */
+/* RMIN as BASE**( EMIN - 1 ), but some machines underflow during */
+/* this computation. */
+
+ lrmin = 1.f;
+ i__1 = 1 - lemin;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ r__1 = lrmin * rbase;
+ lrmin = slamc3_(&r__1, &zero);
+/* L30: */
+ }
+
+/* Finally, call SLAMC5 to compute EMAX and RMAX. */
+
+ slamc5_(&lbeta, <, &lemin, &ieee, &lemax, &lrmax);
+ }
+
+ *beta = lbeta;
+ *t = lt;
+ *rnd = lrnd;
+ *eps = leps;
+ *emin = lemin;
+ *rmin = lrmin;
+ *emax = lemax;
+ *rmax = lrmax;
+
+ return 0;
+
+
+/* End of SLAMC2 */
+
+} /* slamc2_ */
+
+
+/* *********************************************************************** */
+
+doublereal
+slamc3_(real * a, real * b)
+{
+ /* System generated locals */
+ real ret_val;
+
+
+/* -- LAPACK auxiliary routine (version 3.0) -- */
+/* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
+/* Courant Institute, Argonne National Lab, and Rice University */
+/* October 31, 1992 */
+
+/* .. Scalar Arguments .. */
+/* .. */
+
+/* Purpose */
+/* ======= */
+
+/* SLAMC3 is intended to force A and B to be stored prior to doing */
+/* the addition of A and B , for use in situations where optimizers */
+/* might hold one of these in a register. */
+
+/* Arguments */
+/* ========= */
+
+/* A, B (input) REAL */
+/* The values A and B. */
+
+/* ===================================================================== */
+
+/* .. Executable Statements .. */
+
+ ret_val = *a + *b;
+
+ return ret_val;
+
+/* End of SLAMC3 */
+
+} /* slamc3_ */
+
+
+/* *********************************************************************** */
+
+/* Subroutine */ int
+slamc4_(integer * emin, real * start, integer * base)
+{
+ /* System generated locals */
+ integer i__1;
+ real r__1;
+
+ /* Local variables */
+ static real a;
+ static integer i__;
+ static real b1, b2, c1, c2, d1, d2, one, zero, rbase;
+ extern doublereal slamc3_(real *, real *);
+
+
+/* -- LAPACK auxiliary routine (version 3.0) -- */
+/* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
+/* Courant Institute, Argonne National Lab, and Rice University */
+/* October 31, 1992 */
+
+/* .. Scalar Arguments .. */
+/* .. */
+
+/* Purpose */
+/* ======= */
+
+/* SLAMC4 is a service routine for SLAMC2. */
+
+/* Arguments */
+/* ========= */
+
+/* EMIN (output) EMIN */
+/* The minimum exponent before (gradual) underflow, computed by */
+/* setting A = START and dividing by BASE until the previous A */
+/* can not be recovered. */
+
+/* START (input) REAL */
+/* The starting point for determining EMIN. */
+
+/* BASE (input) INTEGER */
+/* The base of the machine. */
+
+/* ===================================================================== */
+
+/* .. Local Scalars .. */
+/* .. */
+/* .. External Functions .. */
+/* .. */
+/* .. Executable Statements .. */
+
+ a = *start;
+ one = 1.f;
+ rbase = one / *base;
+ zero = 0.f;
+ *emin = 1;
+ r__1 = a * rbase;
+ b1 = slamc3_(&r__1, &zero);
+ c1 = a;
+ c2 = a;
+ d1 = a;
+ d2 = a;
+/* + WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND. */
+/* $ ( D1.EQ.A ).AND.( D2.EQ.A ) )LOOP */
+ L10:
+ if (c1 == a && c2 == a && d1 == a && d2 == a) {
+ --(*emin);
+ a = b1;
+ r__1 = a / *base;
+ b1 = slamc3_(&r__1, &zero);
+ r__1 = b1 * *base;
+ c1 = slamc3_(&r__1, &zero);
+ d1 = zero;
+ i__1 = *base;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ d1 += b1;
+/* L20: */
+ }
+ r__1 = a * rbase;
+ b2 = slamc3_(&r__1, &zero);
+ r__1 = b2 / rbase;
+ c2 = slamc3_(&r__1, &zero);
+ d2 = zero;
+ i__1 = *base;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ d2 += b2;
+/* L30: */
+ }
+ goto L10;
+ }
+/* + END WHILE */
+
+ return 0;
+
+/* End of SLAMC4 */
+
+} /* slamc4_ */
+
+
+/* *********************************************************************** */
+
+/* Subroutine */ int
+slamc5_(integer * beta, integer * p, integer * emin,
+ logical * ieee, integer * emax, real * rmax)
+{
+ /* System generated locals */
+ integer i__1;
+ real r__1;
+
+ /* Local variables */
+ static integer i__;
+ static real y, z__;
+ static integer try__, lexp;
+ static real oldy;
+ static integer uexp, nbits;
+ extern doublereal slamc3_(real *, real *);
+ static real recbas;
+ static integer exbits, expsum;
+
+
+/* -- LAPACK auxiliary routine (version 3.0) -- */
+/* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
+/* Courant Institute, Argonne National Lab, and Rice University */
+/* October 31, 1992 */
+
+/* .. Scalar Arguments .. */
+/* .. */
+
+/* Purpose */
+/* ======= */
+
+/* SLAMC5 attempts to compute RMAX, the largest machine floating-point */
+/* number, without overflow. It assumes that EMAX + abs(EMIN) sum */
+/* approximately to a power of 2. It will fail on machines where this */
+/* assumption does not hold, for example, the Cyber 205 (EMIN = -28625, */
+/* EMAX = 28718). It will also fail if the value supplied for EMIN is */
+/* too large (i.e. too close to zero), probably with overflow. */
+
+/* Arguments */
+/* ========= */
+
+/* BETA (input) INTEGER */
+/* The base of floating-point arithmetic. */
+
+/* P (input) INTEGER */
+/* The number of base BETA digits in the mantissa of a */
+/* floating-point value. */
+
+/* EMIN (input) INTEGER */
+/* The minimum exponent before (gradual) underflow. */
+
+/* IEEE (input) LOGICAL */
+/* A logical flag specifying whether or not the arithmetic */
+/* system is thought to comply with the IEEE standard. */
+
+/* EMAX (output) INTEGER */
+/* The largest exponent before overflow */
+
+/* RMAX (output) REAL */
+/* The largest machine floating-point number. */
+
+/* ===================================================================== */
+
+/* .. Parameters .. */
+/* .. */
+/* .. Local Scalars .. */
+/* .. */
+/* .. External Functions .. */
+/* .. */
+/* .. Intrinsic Functions .. */
+/* .. */
+/* .. Executable Statements .. */
+
+/* First compute LEXP and UEXP, two powers of 2 that bound */
+/* abs(EMIN). We then assume that EMAX + abs(EMIN) will sum */
+/* approximately to the bound that is closest to abs(EMIN). */
+/* (EMAX is the exponent of the required number RMAX). */
+
+ lexp = 1;
+ exbits = 1;
+ L10:
+ try__ = lexp << 1;
+ if (try__ <= -(*emin)) {
+ lexp = try__;
+ ++exbits;
+ goto L10;
+ }
+ if (lexp == -(*emin)) {
+ uexp = lexp;
+ }
+ else {
+ uexp = try__;
+ ++exbits;
+ }
+
+/* Now -LEXP is less than or equal to EMIN, and -UEXP is greater */
+/* than or equal to EMIN. EXBITS is the number of bits needed to */
+/* store the exponent. */
+
+ if (uexp + *emin > -lexp - *emin) {
+ expsum = lexp << 1;
+ }
+ else {
+ expsum = uexp << 1;
+ }
+
+/* EXPSUM is the exponent range, approximately equal to */
+/* EMAX - EMIN + 1 . */
+
+ *emax = expsum + *emin - 1;
+ nbits = exbits + 1 + *p;
+
+/* NBITS is the total number of bits needed to store a */
+/* floating-point number. */
+
+ if (nbits % 2 == 1 && *beta == 2) {
+
+/* Either there are an odd number of bits used to store a */
+/* floating-point number, which is unlikely, or some bits are */
+/* not used in the representation of numbers, which is possible, */
+/* (e.g. Cray machines) or the mantissa has an implicit bit, */
+/* (e.g. IEEE machines, Dec Vax machines), which is perhaps the */
+/* most likely. We have to assume the last alternative. */
+/* If this is true, then we need to reduce EMAX by one because */
+/* there must be some way of representing zero in an implicit-bit */
+/* system. On machines like Cray, we are reducing EMAX by one */
+/* unnecessarily. */
+
+ --(*emax);
+ }
+
+ if (*ieee) {
+
+/* Assume we are on an IEEE machine which reserves one exponent */
+/* for infinity and NaN. */
+
+ --(*emax);
+ }
+
+/* Now create RMAX, the largest machine number, which should */
+/* be equal to (1.0 - BETA**(-P)) * BETA**EMAX . */
+
+/* First compute 1.0 - BETA**(-P), being careful that the */
+/* result is less than 1.0 . */
+
+ recbas = 1.f / *beta;
+ z__ = *beta - 1.f;
+ y = 0.f;
+ i__1 = *p;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ z__ *= recbas;
+ if (y < 1.f) {
+ oldy = y;
+ }
+ y = slamc3_(&y, &z__);
+/* L20: */
+ }
+ if (y >= 1.f) {
+ y = oldy;
+ }
+
+/* Now multiply by BETA**EMAX to get RMAX. */
+
+ i__1 = *emax;
+ for (i__ = 1; i__ <= i__1; ++i__) {
+ r__1 = y * *beta;
+ y = slamc3_(&r__1, &c_b32);
+/* L30: */
+ }
+
+ *rmax = y;
+ return 0;
+
+/* End of SLAMC5 */
+
+} /* slamc5_ */
--- /dev/null
+/*
+NOTE: This is generated code. Look in README.python for information on
+ remaking this file.
+*/
+#include "sphinxbase/f2c.h"
+
+#ifdef HAVE_CONFIG
+#include "config.h"
+#else
+extern doublereal slamch_(char *);
+#define EPSILON slamch_("Epsilon")
+#define SAFEMINIMUM slamch_("Safe minimum")
+#define PRECISION slamch_("Precision")
+#define BASE slamch_("Base")
+#endif
+
+
+extern doublereal slapy2_(real *, real *);
+
+
+
+/* Table of constant values */
+
+static integer c__0 = 0;
+static real c_b163 = 0.f;
+static real c_b164 = 1.f;
+static integer c__1 = 1;
+static real c_b181 = -1.f;
+static integer c_n1 = -1;
+
+integer ieeeck_(integer *ispec, real *zero, real *one)
+{
+ /* System generated locals */
+ integer ret_val;
+
+ /* Local variables */
+ static real nan1, nan2, nan3, nan4, nan5, nan6, neginf, posinf, negzro,
+ newzro;
+
+
+/*
+ -- LAPACK auxiliary routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ June 30, 1998
+
+
+ Purpose
+ =======
+
+ IEEECK is called from the ILAENV to verify that Infinity and
+ possibly NaN arithmetic is safe (i.e. will not trap).
+
+ Arguments
+ =========
+
+ ISPEC (input) INTEGER
+ Specifies whether to test just for inifinity arithmetic
+ or whether to test for infinity and NaN arithmetic.
+ = 0: Verify infinity arithmetic only.
+ = 1: Verify infinity and NaN arithmetic.
+
+ ZERO (input) REAL
+ Must contain the value 0.0
+ This is passed to prevent the compiler from optimizing
+ away this code.
+
+ ONE (input) REAL
+ Must contain the value 1.0
+ This is passed to prevent the compiler from optimizing
+ away this code.
+
+ RETURN VALUE: INTEGER
+ = 0: Arithmetic failed to produce the correct answers
+ = 1: Arithmetic produced the correct answers
+*/
+
+ ret_val = 1;
+
+ posinf = *one / *zero;
+ if (posinf <= *one) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ neginf = -(*one) / *zero;
+ if (neginf >= *zero) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ negzro = *one / (neginf + *one);
+ if (negzro != *zero) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ neginf = *one / negzro;
+ if (neginf >= *zero) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ newzro = negzro + *zero;
+ if (newzro != *zero) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ posinf = *one / newzro;
+ if (posinf <= *one) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ neginf *= posinf;
+ if (neginf >= *zero) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ posinf *= posinf;
+ if (posinf <= *one) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+
+/* Return if we were only asked to check infinity arithmetic */
+
+ if (*ispec == 0) {
+ return ret_val;
+ }
+
+ nan1 = posinf + neginf;
+
+ nan2 = posinf / neginf;
+
+ nan3 = posinf / posinf;
+
+ nan4 = posinf * *zero;
+
+ nan5 = neginf * negzro;
+
+ nan6 = nan5 * 0.f;
+
+ if (nan1 == nan1) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ if (nan2 == nan2) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ if (nan3 == nan3) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ if (nan4 == nan4) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ if (nan5 == nan5) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ if (nan6 == nan6) {
+ ret_val = 0;
+ return ret_val;
+ }
+
+ return ret_val;
+} /* ieeeck_ */
+
+integer ilaenv_(integer *ispec, char *name__, char *opts, integer *n1,
+ integer *n2, integer *n3, integer *n4, ftnlen name_len, ftnlen
+ opts_len)
+{
+ /* System generated locals */
+ integer ret_val;
+
+ /* Builtin functions */
+ /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen);
+ integer s_cmp(char *, char *, ftnlen, ftnlen);
+
+ /* Local variables */
+ static integer i__;
+ static char c1[1], c2[2], c3[3], c4[2];
+ static integer ic, nb, iz, nx;
+ static logical cname, sname;
+ static integer nbmin;
+ extern integer ieeeck_(integer *, real *, real *);
+ static char subnam[6];
+
+
+/*
+ -- LAPACK auxiliary routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ June 30, 1999
+
+
+ Purpose
+ =======
+
+ ILAENV is called from the LAPACK routines to choose problem-dependent
+ parameters for the local environment. See ISPEC for a description of
+ the parameters.
+
+ This version provides a set of parameters which should give good,
+ but not optimal, performance on many of the currently available
+ computers. Users are encouraged to modify this subroutine to set
+ the tuning parameters for their particular machine using the option
+ and problem size information in the arguments.
+
+ This routine will not function correctly if it is converted to all
+ lower case. Converting it to all upper case is allowed.
+
+ Arguments
+ =========
+
+ ISPEC (input) INTEGER
+ Specifies the parameter to be returned as the value of
+ ILAENV.
+ = 1: the optimal blocksize; if this value is 1, an unblocked
+ algorithm will give the best performance.
+ = 2: the minimum block size for which the block routine
+ should be used; if the usable block size is less than
+ this value, an unblocked routine should be used.
+ = 3: the crossover point (in a block routine, for N less
+ than this value, an unblocked routine should be used)
+ = 4: the number of shifts, used in the nonsymmetric
+ eigenvalue routines
+ = 5: the minimum column dimension for blocking to be used;
+ rectangular blocks must have dimension at least k by m,
+ where k is given by ILAENV(2,...) and m by ILAENV(5,...)
+ = 6: the crossover point for the SVD (when reducing an m by n
+ matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
+ this value, a QR factorization is used first to reduce
+ the matrix to a triangular form.)
+ = 7: the number of processors
+ = 8: the crossover point for the multishift QR and QZ methods
+ for nonsymmetric eigenvalue problems.
+ = 9: maximum size of the subproblems at the bottom of the
+ computation tree in the divide-and-conquer algorithm
+ (used by xGELSD and xGESDD)
+ =10: ieee NaN arithmetic can be trusted not to trap
+ =11: infinity arithmetic can be trusted not to trap
+
+ NAME (input) CHARACTER*(*)
+ The name of the calling subroutine, in either upper case or
+ lower case.
+
+ OPTS (input) CHARACTER*(*)
+ The character options to the subroutine NAME, concatenated
+ into a single character string. For example, UPLO = 'U',
+ TRANS = 'T', and DIAG = 'N' for a triangular routine would
+ be specified as OPTS = 'UTN'.
+
+ N1 (input) INTEGER
+ N2 (input) INTEGER
+ N3 (input) INTEGER
+ N4 (input) INTEGER
+ Problem dimensions for the subroutine NAME; these may not all
+ be required.
+
+ (ILAENV) (output) INTEGER
+ >= 0: the value of the parameter specified by ISPEC
+ < 0: if ILAENV = -k, the k-th argument had an illegal value.
+
+ Further Details
+ ===============
+
+ The following conventions have been used when calling ILAENV from the
+ LAPACK routines:
+ 1) OPTS is a concatenation of all of the character options to
+ subroutine NAME, in the same order that they appear in the
+ argument list for NAME, even if they are not used in determining
+ the value of the parameter specified by ISPEC.
+ 2) The problem dimensions N1, N2, N3, N4 are specified in the order
+ that they appear in the argument list for NAME. N1 is used
+ first, N2 second, and so on, and unused problem dimensions are
+ passed a value of -1.
+ 3) The parameter value returned by ILAENV is checked for validity in
+ the calling subroutine. For example, ILAENV is used to retrieve
+ the optimal blocksize for STRTRI as follows:
+
+ NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
+ IF( NB.LE.1 ) NB = MAX( 1, N )
+
+ =====================================================================
+*/
+
+
+ switch (*ispec) {
+ case 1: goto L100;
+ case 2: goto L100;
+ case 3: goto L100;
+ case 4: goto L400;
+ case 5: goto L500;
+ case 6: goto L600;
+ case 7: goto L700;
+ case 8: goto L800;
+ case 9: goto L900;
+ case 10: goto L1000;
+ case 11: goto L1100;
+ }
+
+/* Invalid value for ISPEC */
+
+ ret_val = -1;
+ return ret_val;
+
+L100:
+
+/* Convert NAME to upper case if the first character is lower case. */
+
+ ret_val = 1;
+ s_copy(subnam, name__, (ftnlen)6, name_len);
+ ic = *(unsigned char *)subnam;
+ iz = 'Z';
+ if (iz == 90 || iz == 122) {
+
+/* ASCII character set */
+
+ if (ic >= 97 && ic <= 122) {
+ *(unsigned char *)subnam = (char) (ic - 32);
+ for (i__ = 2; i__ <= 6; ++i__) {
+ ic = *(unsigned char *)&subnam[i__ - 1];
+ if (ic >= 97 && ic <= 122) {
+ *(unsigned char *)&subnam[i__ - 1] = (char) (ic - 32);
+ }
+/* L10: */
+ }
+ }
+
+ } else if (iz == 233 || iz == 169) {
+
+/* EBCDIC character set */
+
+ if (ic >= 129 && ic <= 137 || ic >= 145 && ic <= 153 || ic >= 162 &&
+ ic <= 169) {
+ *(unsigned char *)subnam = (char) (ic + 64);
+ for (i__ = 2; i__ <= 6; ++i__) {
+ ic = *(unsigned char *)&subnam[i__ - 1];
+ if (ic >= 129 && ic <= 137 || ic >= 145 && ic <= 153 || ic >=
+ 162 && ic <= 169) {
+ *(unsigned char *)&subnam[i__ - 1] = (char) (ic + 64);
+ }
+/* L20: */
+ }
+ }
+
+ } else if (iz == 218 || iz == 250) {
+
+/* Prime machines: ASCII+128 */
+
+ if (ic >= 225 && ic <= 250) {
+ *(unsigned char *)subnam = (char) (ic - 32);
+ for (i__ = 2; i__ <= 6; ++i__) {
+ ic = *(unsigned char *)&subnam[i__ - 1];
+ if (ic >= 225 && ic <= 250) {
+ *(unsigned char *)&subnam[i__ - 1] = (char) (ic - 32);
+ }
+/* L30: */
+ }
+ }
+ }
+
+ *(unsigned char *)c1 = *(unsigned char *)subnam;
+ sname = *(unsigned char *)c1 == 'S' || *(unsigned char *)c1 == 'D';
+ cname = *(unsigned char *)c1 == 'C' || *(unsigned char *)c1 == 'Z';
+ if (! (cname || sname)) {
+ return ret_val;
+ }
+ s_copy(c2, subnam + 1, (ftnlen)2, (ftnlen)2);
+ s_copy(c3, subnam + 3, (ftnlen)3, (ftnlen)3);
+ s_copy(c4, c3 + 1, (ftnlen)2, (ftnlen)2);
+
+ switch (*ispec) {
+ case 1: goto L110;
+ case 2: goto L200;
+ case 3: goto L300;
+ }
+
+L110:
+
+/*
+ ISPEC = 1: block size
+
+ In these examples, separate code is provided for setting NB for
+ real and complex. We assume that NB will take the same value in
+ single or double precision.
+*/
+
+ nb = 1;
+
+ if (s_cmp(c2, "GE", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 64;
+ } else {
+ nb = 64;
+ }
+ } else if (s_cmp(c3, "QRF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3,
+ "RQF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "LQF", (ftnlen)
+ 3, (ftnlen)3) == 0 || s_cmp(c3, "QLF", (ftnlen)3, (ftnlen)3)
+ == 0) {
+ if (sname) {
+ nb = 32;
+ } else {
+ nb = 32;
+ }
+ } else if (s_cmp(c3, "HRD", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 32;
+ } else {
+ nb = 32;
+ }
+ } else if (s_cmp(c3, "BRD", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 32;
+ } else {
+ nb = 32;
+ }
+ } else if (s_cmp(c3, "TRI", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 64;
+ } else {
+ nb = 64;
+ }
+ }
+ } else if (s_cmp(c2, "PO", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 64;
+ } else {
+ nb = 64;
+ }
+ }
+ } else if (s_cmp(c2, "SY", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 64;
+ } else {
+ nb = 64;
+ }
+ } else if (sname && s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) {
+ nb = 32;
+ } else if (sname && s_cmp(c3, "GST", (ftnlen)3, (ftnlen)3) == 0) {
+ nb = 64;
+ }
+ } else if (cname && s_cmp(c2, "HE", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ nb = 64;
+ } else if (s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) {
+ nb = 32;
+ } else if (s_cmp(c3, "GST", (ftnlen)3, (ftnlen)3) == 0) {
+ nb = 64;
+ }
+ } else if (sname && s_cmp(c2, "OR", (ftnlen)2, (ftnlen)2) == 0) {
+ if (*(unsigned char *)c3 == 'G') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nb = 32;
+ }
+ } else if (*(unsigned char *)c3 == 'M') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nb = 32;
+ }
+ }
+ } else if (cname && s_cmp(c2, "UN", (ftnlen)2, (ftnlen)2) == 0) {
+ if (*(unsigned char *)c3 == 'G') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nb = 32;
+ }
+ } else if (*(unsigned char *)c3 == 'M') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nb = 32;
+ }
+ }
+ } else if (s_cmp(c2, "GB", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ if (*n4 <= 64) {
+ nb = 1;
+ } else {
+ nb = 32;
+ }
+ } else {
+ if (*n4 <= 64) {
+ nb = 1;
+ } else {
+ nb = 32;
+ }
+ }
+ }
+ } else if (s_cmp(c2, "PB", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ if (*n2 <= 64) {
+ nb = 1;
+ } else {
+ nb = 32;
+ }
+ } else {
+ if (*n2 <= 64) {
+ nb = 1;
+ } else {
+ nb = 32;
+ }
+ }
+ }
+ } else if (s_cmp(c2, "TR", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRI", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 64;
+ } else {
+ nb = 64;
+ }
+ }
+ } else if (s_cmp(c2, "LA", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "UUM", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nb = 64;
+ } else {
+ nb = 64;
+ }
+ }
+ } else if (sname && s_cmp(c2, "ST", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "EBZ", (ftnlen)3, (ftnlen)3) == 0) {
+ nb = 1;
+ }
+ }
+ ret_val = nb;
+ return ret_val;
+
+L200:
+
+/* ISPEC = 2: minimum block size */
+
+ nbmin = 2;
+ if (s_cmp(c2, "GE", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "QRF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "RQF", (
+ ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "LQF", (ftnlen)3, (
+ ftnlen)3) == 0 || s_cmp(c3, "QLF", (ftnlen)3, (ftnlen)3) == 0)
+ {
+ if (sname) {
+ nbmin = 2;
+ } else {
+ nbmin = 2;
+ }
+ } else if (s_cmp(c3, "HRD", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nbmin = 2;
+ } else {
+ nbmin = 2;
+ }
+ } else if (s_cmp(c3, "BRD", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nbmin = 2;
+ } else {
+ nbmin = 2;
+ }
+ } else if (s_cmp(c3, "TRI", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nbmin = 2;
+ } else {
+ nbmin = 2;
+ }
+ }
+ } else if (s_cmp(c2, "SY", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nbmin = 8;
+ } else {
+ nbmin = 8;
+ }
+ } else if (sname && s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) {
+ nbmin = 2;
+ }
+ } else if (cname && s_cmp(c2, "HE", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) {
+ nbmin = 2;
+ }
+ } else if (sname && s_cmp(c2, "OR", (ftnlen)2, (ftnlen)2) == 0) {
+ if (*(unsigned char *)c3 == 'G') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nbmin = 2;
+ }
+ } else if (*(unsigned char *)c3 == 'M') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nbmin = 2;
+ }
+ }
+ } else if (cname && s_cmp(c2, "UN", (ftnlen)2, (ftnlen)2) == 0) {
+ if (*(unsigned char *)c3 == 'G') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nbmin = 2;
+ }
+ } else if (*(unsigned char *)c3 == 'M') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nbmin = 2;
+ }
+ }
+ }
+ ret_val = nbmin;
+ return ret_val;
+
+L300:
+
+/* ISPEC = 3: crossover point */
+
+ nx = 0;
+ if (s_cmp(c2, "GE", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "QRF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "RQF", (
+ ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "LQF", (ftnlen)3, (
+ ftnlen)3) == 0 || s_cmp(c3, "QLF", (ftnlen)3, (ftnlen)3) == 0)
+ {
+ if (sname) {
+ nx = 128;
+ } else {
+ nx = 128;
+ }
+ } else if (s_cmp(c3, "HRD", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nx = 128;
+ } else {
+ nx = 128;
+ }
+ } else if (s_cmp(c3, "BRD", (ftnlen)3, (ftnlen)3) == 0) {
+ if (sname) {
+ nx = 128;
+ } else {
+ nx = 128;
+ }
+ }
+ } else if (s_cmp(c2, "SY", (ftnlen)2, (ftnlen)2) == 0) {
+ if (sname && s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) {
+ nx = 32;
+ }
+ } else if (cname && s_cmp(c2, "HE", (ftnlen)2, (ftnlen)2) == 0) {
+ if (s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) {
+ nx = 32;
+ }
+ } else if (sname && s_cmp(c2, "OR", (ftnlen)2, (ftnlen)2) == 0) {
+ if (*(unsigned char *)c3 == 'G') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nx = 128;
+ }
+ }
+ } else if (cname && s_cmp(c2, "UN", (ftnlen)2, (ftnlen)2) == 0) {
+ if (*(unsigned char *)c3 == 'G') {
+ if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ",
+ (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, (
+ ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) ==
+ 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(
+ c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", (
+ ftnlen)2, (ftnlen)2) == 0) {
+ nx = 128;
+ }
+ }
+ }
+ ret_val = nx;
+ return ret_val;
+
+L400:
+
+/* ISPEC = 4: number of shifts (used by xHSEQR) */
+
+ ret_val = 6;
+ return ret_val;
+
+L500:
+
+/* ISPEC = 5: minimum column dimension (not used) */
+
+ ret_val = 2;
+ return ret_val;
+
+L600:
+
+/* ISPEC = 6: crossover point for SVD (used by xGELSS and xGESVD) */
+
+ ret_val = (integer) ((real) min(*n1,*n2) * 1.6f);
+ return ret_val;
+
+L700:
+
+/* ISPEC = 7: number of processors (not used) */
+
+ ret_val = 1;
+ return ret_val;
+
+L800:
+
+/* ISPEC = 8: crossover point for multishift (used by xHSEQR) */
+
+ ret_val = 50;
+ return ret_val;
+
+L900:
+
+/*
+ ISPEC = 9: maximum size of the subproblems at the bottom of the
+ computation tree in the divide-and-conquer algorithm
+ (used by xGELSD and xGESDD)
+*/
+
+ ret_val = 25;
+ return ret_val;
+
+L1000:
+
+/*
+ ISPEC = 10: ieee NaN arithmetic can be trusted not to trap
+
+ ILAENV = 0
+*/
+ ret_val = 1;
+ if (ret_val == 1) {
+ ret_val = ieeeck_(&c__0, &c_b163, &c_b164);
+ }
+ return ret_val;
+
+L1100:
+
+/*
+ ISPEC = 11: infinity arithmetic can be trusted not to trap
+
+ ILAENV = 0
+*/
+ ret_val = 1;
+ if (ret_val == 1) {
+ ret_val = ieeeck_(&c__1, &c_b163, &c_b164);
+ }
+ return ret_val;
+
+/* End of ILAENV */
+
+} /* ilaenv_ */
+
+/* Subroutine */ int sposv_(char *uplo, integer *n, integer *nrhs, real *a,
+ integer *lda, real *b, integer *ldb, integer *info)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, b_dim1, b_offset, i__1;
+
+ /* Local variables */
+ extern logical lsame_(char *, char *);
+ extern /* Subroutine */ int xerbla_(char *, integer *), spotrf_(
+ char *, integer *, real *, integer *, integer *), spotrs_(
+ char *, integer *, integer *, real *, integer *, real *, integer *
+ , integer *);
+
+
+/*
+ -- LAPACK driver routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ March 31, 1993
+
+
+ Purpose
+ =======
+
+ SPOSV computes the solution to a real system of linear equations
+ A * X = B,
+ where A is an N-by-N symmetric positive definite matrix and X and B
+ are N-by-NRHS matrices.
+
+ The Cholesky decomposition is used to factor A as
+ A = U**T* U, if UPLO = 'U', or
+ A = L * L**T, if UPLO = 'L',
+ where U is an upper triangular matrix and L is a lower triangular
+ matrix. The factored form of A is then used to solve the system of
+ equations A * X = B.
+
+ Arguments
+ =========
+
+ UPLO (input) CHARACTER*1
+ = 'U': Upper triangle of A is stored;
+ = 'L': Lower triangle of A is stored.
+
+ N (input) INTEGER
+ The number of linear equations, i.e., the order of the
+ matrix A. N >= 0.
+
+ NRHS (input) INTEGER
+ The number of right hand sides, i.e., the number of columns
+ of the matrix B. NRHS >= 0.
+
+ A (input/output) REAL array, dimension (LDA,N)
+ On entry, the symmetric matrix A. If UPLO = 'U', the leading
+ N-by-N upper triangular part of A contains the upper
+ triangular part of the matrix A, and the strictly lower
+ triangular part of A is not referenced. If UPLO = 'L', the
+ leading N-by-N lower triangular part of A contains the lower
+ triangular part of the matrix A, and the strictly upper
+ triangular part of A is not referenced.
+
+ On exit, if INFO = 0, the factor U or L from the Cholesky
+ factorization A = U**T*U or A = L*L**T.
+
+ LDA (input) INTEGER
+ The leading dimension of the array A. LDA >= max(1,N).
+
+ B (input/output) REAL array, dimension (LDB,NRHS)
+ On entry, the N-by-NRHS right hand side matrix B.
+ On exit, if INFO = 0, the N-by-NRHS solution matrix X.
+
+ LDB (input) INTEGER
+ The leading dimension of the array B. LDB >= max(1,N).
+
+ INFO (output) INTEGER
+ = 0: successful exit
+ < 0: if INFO = -i, the i-th argument had an illegal value
+ > 0: if INFO = i, the leading minor of order i of A is not
+ positive definite, so the factorization could not be
+ completed, and the solution has not been computed.
+
+ =====================================================================
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ b_dim1 = *ldb;
+ b_offset = 1 + b_dim1;
+ b -= b_offset;
+
+ /* Function Body */
+ *info = 0;
+ if (! lsame_(uplo, "U") && ! lsame_(uplo, "L")) {
+ *info = -1;
+ } else if (*n < 0) {
+ *info = -2;
+ } else if (*nrhs < 0) {
+ *info = -3;
+ } else if (*lda < max(1,*n)) {
+ *info = -5;
+ } else if (*ldb < max(1,*n)) {
+ *info = -7;
+ }
+ if (*info != 0) {
+ i__1 = -(*info);
+ xerbla_("SPOSV ", &i__1);
+ return 0;
+ }
+
+/* Compute the Cholesky factorization A = U'*U or A = L*L'. */
+
+ spotrf_(uplo, n, &a[a_offset], lda, info);
+ if (*info == 0) {
+
+/* Solve the system A*X = B, overwriting B with X. */
+
+ spotrs_(uplo, n, nrhs, &a[a_offset], lda, &b[b_offset], ldb, info);
+
+ }
+ return 0;
+
+/* End of SPOSV */
+
+} /* sposv_ */
+
+/* Subroutine */ int spotf2_(char *uplo, integer *n, real *a, integer *lda,
+ integer *info)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, i__1, i__2, i__3;
+ real r__1;
+
+ /* Builtin functions */
+ double sqrt(doublereal);
+
+ /* Local variables */
+ static integer j;
+ static real ajj;
+ extern doublereal sdot_(integer *, real *, integer *, real *, integer *);
+ extern logical lsame_(char *, char *);
+ extern /* Subroutine */ int sscal_(integer *, real *, real *, integer *),
+ sgemv_(char *, integer *, integer *, real *, real *, integer *,
+ real *, integer *, real *, real *, integer *);
+ static logical upper;
+ extern /* Subroutine */ int xerbla_(char *, integer *);
+
+
+/*
+ -- LAPACK routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ February 29, 1992
+
+
+ Purpose
+ =======
+
+ SPOTF2 computes the Cholesky factorization of a real symmetric
+ positive definite matrix A.
+
+ The factorization has the form
+ A = U' * U , if UPLO = 'U', or
+ A = L * L', if UPLO = 'L',
+ where U is an upper triangular matrix and L is lower triangular.
+
+ This is the unblocked version of the algorithm, calling Level 2 BLAS.
+
+ Arguments
+ =========
+
+ UPLO (input) CHARACTER*1
+ Specifies whether the upper or lower triangular part of the
+ symmetric matrix A is stored.
+ = 'U': Upper triangular
+ = 'L': Lower triangular
+
+ N (input) INTEGER
+ The order of the matrix A. N >= 0.
+
+ A (input/output) REAL array, dimension (LDA,N)
+ On entry, the symmetric matrix A. If UPLO = 'U', the leading
+ n by n upper triangular part of A contains the upper
+ triangular part of the matrix A, and the strictly lower
+ triangular part of A is not referenced. If UPLO = 'L', the
+ leading n by n lower triangular part of A contains the lower
+ triangular part of the matrix A, and the strictly upper
+ triangular part of A is not referenced.
+
+ On exit, if INFO = 0, the factor U or L from the Cholesky
+ factorization A = U'*U or A = L*L'.
+
+ LDA (input) INTEGER
+ The leading dimension of the array A. LDA >= max(1,N).
+
+ INFO (output) INTEGER
+ = 0: successful exit
+ < 0: if INFO = -k, the k-th argument had an illegal value
+ > 0: if INFO = k, the leading minor of order k is not
+ positive definite, and the factorization could not be
+ completed.
+
+ =====================================================================
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+
+ /* Function Body */
+ *info = 0;
+ upper = lsame_(uplo, "U");
+ if (! upper && ! lsame_(uplo, "L")) {
+ *info = -1;
+ } else if (*n < 0) {
+ *info = -2;
+ } else if (*lda < max(1,*n)) {
+ *info = -4;
+ }
+ if (*info != 0) {
+ i__1 = -(*info);
+ xerbla_("SPOTF2", &i__1);
+ return 0;
+ }
+
+/* Quick return if possible */
+
+ if (*n == 0) {
+ return 0;
+ }
+
+ if (upper) {
+
+/* Compute the Cholesky factorization A = U'*U. */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+
+/* Compute U(J,J) and test for non-positive-definiteness. */
+
+ i__2 = j - 1;
+ ajj = a[j + j * a_dim1] - sdot_(&i__2, &a[j * a_dim1 + 1], &c__1,
+ &a[j * a_dim1 + 1], &c__1);
+ if (ajj <= 0.f) {
+ a[j + j * a_dim1] = ajj;
+ goto L30;
+ }
+ ajj = sqrt(ajj);
+ a[j + j * a_dim1] = ajj;
+
+/* Compute elements J+1:N of row J. */
+
+ if (j < *n) {
+ i__2 = j - 1;
+ i__3 = *n - j;
+ sgemv_("Transpose", &i__2, &i__3, &c_b181, &a[(j + 1) *
+ a_dim1 + 1], lda, &a[j * a_dim1 + 1], &c__1, &c_b164,
+ &a[j + (j + 1) * a_dim1], lda);
+ i__2 = *n - j;
+ r__1 = 1.f / ajj;
+ sscal_(&i__2, &r__1, &a[j + (j + 1) * a_dim1], lda);
+ }
+/* L10: */
+ }
+ } else {
+
+/* Compute the Cholesky factorization A = L*L'. */
+
+ i__1 = *n;
+ for (j = 1; j <= i__1; ++j) {
+
+/* Compute L(J,J) and test for non-positive-definiteness. */
+
+ i__2 = j - 1;
+ ajj = a[j + j * a_dim1] - sdot_(&i__2, &a[j + a_dim1], lda, &a[j
+ + a_dim1], lda);
+ if (ajj <= 0.f) {
+ a[j + j * a_dim1] = ajj;
+ goto L30;
+ }
+ ajj = sqrt(ajj);
+ a[j + j * a_dim1] = ajj;
+
+/* Compute elements J+1:N of column J. */
+
+ if (j < *n) {
+ i__2 = *n - j;
+ i__3 = j - 1;
+ sgemv_("No transpose", &i__2, &i__3, &c_b181, &a[j + 1 +
+ a_dim1], lda, &a[j + a_dim1], lda, &c_b164, &a[j + 1
+ + j * a_dim1], &c__1);
+ i__2 = *n - j;
+ r__1 = 1.f / ajj;
+ sscal_(&i__2, &r__1, &a[j + 1 + j * a_dim1], &c__1);
+ }
+/* L20: */
+ }
+ }
+ goto L40;
+
+L30:
+ *info = j;
+
+L40:
+ return 0;
+
+/* End of SPOTF2 */
+
+} /* spotf2_ */
+
+/* Subroutine */ int spotrf_(char *uplo, integer *n, real *a, integer *lda,
+ integer *info)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, i__1, i__2, i__3, i__4;
+
+ /* Local variables */
+ static integer j, jb, nb;
+ extern logical lsame_(char *, char *);
+ extern /* Subroutine */ int sgemm_(char *, char *, integer *, integer *,
+ integer *, real *, real *, integer *, real *, integer *, real *,
+ real *, integer *);
+ static logical upper;
+ extern /* Subroutine */ int strsm_(char *, char *, char *, char *,
+ integer *, integer *, real *, real *, integer *, real *, integer *
+ ), ssyrk_(char *, char *, integer
+ *, integer *, real *, real *, integer *, real *, real *, integer *
+ ), spotf2_(char *, integer *, real *, integer *,
+ integer *), xerbla_(char *, integer *);
+ extern integer ilaenv_(integer *, char *, char *, integer *, integer *,
+ integer *, integer *, ftnlen, ftnlen);
+
+
+/*
+ -- LAPACK routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ March 31, 1993
+
+
+ Purpose
+ =======
+
+ SPOTRF computes the Cholesky factorization of a real symmetric
+ positive definite matrix A.
+
+ The factorization has the form
+ A = U**T * U, if UPLO = 'U', or
+ A = L * L**T, if UPLO = 'L',
+ where U is an upper triangular matrix and L is lower triangular.
+
+ This is the block version of the algorithm, calling Level 3 BLAS.
+
+ Arguments
+ =========
+
+ UPLO (input) CHARACTER*1
+ = 'U': Upper triangle of A is stored;
+ = 'L': Lower triangle of A is stored.
+
+ N (input) INTEGER
+ The order of the matrix A. N >= 0.
+
+ A (input/output) REAL array, dimension (LDA,N)
+ On entry, the symmetric matrix A. If UPLO = 'U', the leading
+ N-by-N upper triangular part of A contains the upper
+ triangular part of the matrix A, and the strictly lower
+ triangular part of A is not referenced. If UPLO = 'L', the
+ leading N-by-N lower triangular part of A contains the lower
+ triangular part of the matrix A, and the strictly upper
+ triangular part of A is not referenced.
+
+ On exit, if INFO = 0, the factor U or L from the Cholesky
+ factorization A = U**T*U or A = L*L**T.
+
+ LDA (input) INTEGER
+ The leading dimension of the array A. LDA >= max(1,N).
+
+ INFO (output) INTEGER
+ = 0: successful exit
+ < 0: if INFO = -i, the i-th argument had an illegal value
+ > 0: if INFO = i, the leading minor of order i is not
+ positive definite, and the factorization could not be
+ completed.
+
+ =====================================================================
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+
+ /* Function Body */
+ *info = 0;
+ upper = lsame_(uplo, "U");
+ if (! upper && ! lsame_(uplo, "L")) {
+ *info = -1;
+ } else if (*n < 0) {
+ *info = -2;
+ } else if (*lda < max(1,*n)) {
+ *info = -4;
+ }
+ if (*info != 0) {
+ i__1 = -(*info);
+ xerbla_("SPOTRF", &i__1);
+ return 0;
+ }
+
+/* Quick return if possible */
+
+ if (*n == 0) {
+ return 0;
+ }
+
+/* Determine the block size for this environment. */
+
+ nb = ilaenv_(&c__1, "SPOTRF", uplo, n, &c_n1, &c_n1, &c_n1, (ftnlen)6, (
+ ftnlen)1);
+ if (nb <= 1 || nb >= *n) {
+
+/* Use unblocked code. */
+
+ spotf2_(uplo, n, &a[a_offset], lda, info);
+ } else {
+
+/* Use blocked code. */
+
+ if (upper) {
+
+/* Compute the Cholesky factorization A = U'*U. */
+
+ i__1 = *n;
+ i__2 = nb;
+ for (j = 1; i__2 < 0 ? j >= i__1 : j <= i__1; j += i__2) {
+
+/*
+ Update and factorize the current diagonal block and test
+ for non-positive-definiteness.
+
+ Computing MIN
+*/
+ i__3 = nb, i__4 = *n - j + 1;
+ jb = min(i__3,i__4);
+ i__3 = j - 1;
+ ssyrk_("Upper", "Transpose", &jb, &i__3, &c_b181, &a[j *
+ a_dim1 + 1], lda, &c_b164, &a[j + j * a_dim1], lda);
+ spotf2_("Upper", &jb, &a[j + j * a_dim1], lda, info);
+ if (*info != 0) {
+ goto L30;
+ }
+ if (j + jb <= *n) {
+
+/* Compute the current block row. */
+
+ i__3 = *n - j - jb + 1;
+ i__4 = j - 1;
+ sgemm_("Transpose", "No transpose", &jb, &i__3, &i__4, &
+ c_b181, &a[j * a_dim1 + 1], lda, &a[(j + jb) *
+ a_dim1 + 1], lda, &c_b164, &a[j + (j + jb) *
+ a_dim1], lda);
+ i__3 = *n - j - jb + 1;
+ strsm_("Left", "Upper", "Transpose", "Non-unit", &jb, &
+ i__3, &c_b164, &a[j + j * a_dim1], lda, &a[j + (j
+ + jb) * a_dim1], lda);
+ }
+/* L10: */
+ }
+
+ } else {
+
+/* Compute the Cholesky factorization A = L*L'. */
+
+ i__2 = *n;
+ i__1 = nb;
+ for (j = 1; i__1 < 0 ? j >= i__2 : j <= i__2; j += i__1) {
+
+/*
+ Update and factorize the current diagonal block and test
+ for non-positive-definiteness.
+
+ Computing MIN
+*/
+ i__3 = nb, i__4 = *n - j + 1;
+ jb = min(i__3,i__4);
+ i__3 = j - 1;
+ ssyrk_("Lower", "No transpose", &jb, &i__3, &c_b181, &a[j +
+ a_dim1], lda, &c_b164, &a[j + j * a_dim1], lda);
+ spotf2_("Lower", &jb, &a[j + j * a_dim1], lda, info);
+ if (*info != 0) {
+ goto L30;
+ }
+ if (j + jb <= *n) {
+
+/* Compute the current block column. */
+
+ i__3 = *n - j - jb + 1;
+ i__4 = j - 1;
+ sgemm_("No transpose", "Transpose", &i__3, &jb, &i__4, &
+ c_b181, &a[j + jb + a_dim1], lda, &a[j + a_dim1],
+ lda, &c_b164, &a[j + jb + j * a_dim1], lda);
+ i__3 = *n - j - jb + 1;
+ strsm_("Right", "Lower", "Transpose", "Non-unit", &i__3, &
+ jb, &c_b164, &a[j + j * a_dim1], lda, &a[j + jb +
+ j * a_dim1], lda);
+ }
+/* L20: */
+ }
+ }
+ }
+ goto L40;
+
+L30:
+ *info = *info + j - 1;
+
+L40:
+ return 0;
+
+/* End of SPOTRF */
+
+} /* spotrf_ */
+
+/* Subroutine */ int spotrs_(char *uplo, integer *n, integer *nrhs, real *a,
+ integer *lda, real *b, integer *ldb, integer *info)
+{
+ /* System generated locals */
+ integer a_dim1, a_offset, b_dim1, b_offset, i__1;
+
+ /* Local variables */
+ extern logical lsame_(char *, char *);
+ static logical upper;
+ extern /* Subroutine */ int strsm_(char *, char *, char *, char *,
+ integer *, integer *, real *, real *, integer *, real *, integer *
+ ), xerbla_(char *, integer *);
+
+
+/*
+ -- LAPACK routine (version 3.0) --
+ Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ Courant Institute, Argonne National Lab, and Rice University
+ March 31, 1993
+
+
+ Purpose
+ =======
+
+ SPOTRS solves a system of linear equations A*X = B with a symmetric
+ positive definite matrix A using the Cholesky factorization
+ A = U**T*U or A = L*L**T computed by SPOTRF.
+
+ Arguments
+ =========
+
+ UPLO (input) CHARACTER*1
+ = 'U': Upper triangle of A is stored;
+ = 'L': Lower triangle of A is stored.
+
+ N (input) INTEGER
+ The order of the matrix A. N >= 0.
+
+ NRHS (input) INTEGER
+ The number of right hand sides, i.e., the number of columns
+ of the matrix B. NRHS >= 0.
+
+ A (input) REAL array, dimension (LDA,N)
+ The triangular factor U or L from the Cholesky factorization
+ A = U**T*U or A = L*L**T, as computed by SPOTRF.
+
+ LDA (input) INTEGER
+ The leading dimension of the array A. LDA >= max(1,N).
+
+ B (input/output) REAL array, dimension (LDB,NRHS)
+ On entry, the right hand side matrix B.
+ On exit, the solution matrix X.
+
+ LDB (input) INTEGER
+ The leading dimension of the array B. LDB >= max(1,N).
+
+ INFO (output) INTEGER
+ = 0: successful exit
+ < 0: if INFO = -i, the i-th argument had an illegal value
+
+ =====================================================================
+
+
+ Test the input parameters.
+*/
+
+ /* Parameter adjustments */
+ a_dim1 = *lda;
+ a_offset = 1 + a_dim1;
+ a -= a_offset;
+ b_dim1 = *ldb;
+ b_offset = 1 + b_dim1;
+ b -= b_offset;
+
+ /* Function Body */
+ *info = 0;
+ upper = lsame_(uplo, "U");
+ if (! upper && ! lsame_(uplo, "L")) {
+ *info = -1;
+ } else if (*n < 0) {
+ *info = -2;
+ } else if (*nrhs < 0) {
+ *info = -3;
+ } else if (*lda < max(1,*n)) {
+ *info = -5;
+ } else if (*ldb < max(1,*n)) {
+ *info = -7;
+ }
+ if (*info != 0) {
+ i__1 = -(*info);
+ xerbla_("SPOTRS", &i__1);
+ return 0;
+ }
+
+/* Quick return if possible */
+
+ if (*n == 0 || *nrhs == 0) {
+ return 0;
+ }
+
+ if (upper) {
+
+/*
+ Solve A*X = B where A = U'*U.
+
+ Solve U'*X = B, overwriting B with X.
+*/
+
+ strsm_("Left", "Upper", "Transpose", "Non-unit", n, nrhs, &c_b164, &a[
+ a_offset], lda, &b[b_offset], ldb);
+
+/* Solve U*X = B, overwriting B with X. */
+
+ strsm_("Left", "Upper", "No transpose", "Non-unit", n, nrhs, &c_b164,
+ &a[a_offset], lda, &b[b_offset], ldb);
+ } else {
+
+/*
+ Solve A*X = B where A = L*L'.
+
+ Solve L*X = B, overwriting B with X.
+*/
+
+ strsm_("Left", "Lower", "No transpose", "Non-unit", n, nrhs, &c_b164,
+ &a[a_offset], lda, &b[b_offset], ldb);
+
+/* Solve L'*X = B, overwriting B with X. */
+
+ strsm_("Left", "Lower", "Transpose", "Non-unit", n, nrhs, &c_b164, &a[
+ a_offset], lda, &b[b_offset], ldb);
+ }
+
+ return 0;
+
+/* End of SPOTRS */
+
+} /* spotrs_ */
+
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2006 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * strfuncs.c -- String functions
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <assert.h>
+#include <stdarg.h>
+
+#include "sphinxbase/ckd_alloc.h"
+#include "sphinxbase/strfuncs.h"
+
+/* Defined in dtoa.c */
+double sb_strtod(const char *s00, char **se);
+
+double
+atof_c(char const *str)
+{
+ return sb_strtod(str, NULL);
+}
+
+char *
+string_join(const char *base, ...)
+{
+ va_list args;
+ size_t len;
+ const char *c;
+ char *out;
+
+ va_start(args, base);
+ len = strlen(base);
+ while ((c = va_arg(args, const char *)) != NULL) {
+ len += strlen(c);
+ }
+ len++;
+ va_end(args);
+
+ out = ckd_calloc(len, 1);
+ va_start(args, base);
+ strcpy(out, base);
+ while ((c = va_arg(args, const char *)) != NULL) {
+ strcat(out, c);
+ }
+ va_end(args);
+
+ return out;
+}
+
+char *
+string_trim(char *string, enum string_edge_e which)
+{
+ size_t len;
+
+ len = strlen(string);
+ if (which == STRING_START || which == STRING_BOTH) {
+ size_t sub = strspn(string, " \t\n\r\f");
+ if (sub > 0) {
+ memmove(string, string + sub, len + 1 - sub);
+ len -= sub;
+ }
+ }
+ if (which == STRING_END || which == STRING_BOTH) {
+ long sub = len;
+ while (--sub >= 0)
+ if (strchr(" \t\n\r\f", string[sub]) == NULL)
+ break;
+ if (sub == -1)
+ string[0] = '\0';
+ else
+ string[sub+1] = '\0';
+ }
+ return string;
+}
+
+int32
+str2words(char *line, char **ptr, int32 max_ptr)
+{
+ int32 i, n;
+
+ n = 0; /* #words found so far */
+ i = 0; /* For scanning through the input string */
+ while (1) {
+ /* Skip whitespace before next word */
+ while (line[i] && isspace((unsigned char)line[i]))
+ ++i;
+ if (!line[i])
+ break;
+
+ if (ptr != NULL && n >= max_ptr) {
+ /*
+ * Pointer array size insufficient. Restore NULL chars inserted so far
+ * to space chars. Not a perfect restoration, but better than nothing.
+ */
+ for (; i >= 0; --i)
+ if (line[i] == '\0')
+ line[i] = ' ';
+
+ return -1;
+ }
+
+ /* Scan to end of word */
+ if (ptr != NULL)
+ ptr[n] = line + i;
+ ++n;
+ while (line[i] && !isspace((unsigned char)line[i]))
+ ++i;
+ if (!line[i])
+ break;
+ if (ptr != NULL)
+ line[i] = '\0';
+ ++i;
+ }
+
+ return n;
+}
+
+
+int32
+nextword(char *line, const char *delim, char **word, char *delimfound)
+{
+ const char *d;
+ char *w;
+
+ /* Skip past any preceding delimiters */
+ for (w = line; *w; w++) {
+ for (d = delim; *d && (*d != *w); d++);
+ if (!*d)
+ break;
+ }
+ if (!*w)
+ return -1;
+
+ *word = w; /* Beginning of word */
+
+ /* Skip until first delimiter char */
+ for (w++; *w; w++) {
+ for (d = delim; *d && (*d != *w); d++);
+ if (*d)
+ break;
+ }
+
+ /* Replace delimiter with NULL char, but return the original first */
+ *delimfound = *w;
+ *w = '\0';
+
+ return (w - *word);
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+/*********************************************************************
+ *
+ * File: string_wce.c
+ *
+ * Description: string functions missing from Windows CE standard library
+ *
+ * Author: Silvio Moioli <silvio@moioli.net>
+ *
+ *********************************************************************/
+
+#include <string.h>
+#include <stdlib.h>
+
+#if defined(_WIN32_WCE)
+ char *strdup(const char * str)
+ {
+ char *p;
+ p = malloc( strlen(str)+1 );
+ strcpy( p, str );
+ return p;
+ }
+#endif
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * unlimit.c -- "unlimit" the memory usage of program.
+ *
+ * **********************************************
+ * CMU ARPA Speech Project
+ *
+ * Copyright (c) 1999 Carnegie Mellon University.
+ * ALL RIGHTS RESERVED.
+ * **********************************************
+ *
+ * HISTORY
+ * $Log$
+ * Revision 1.5 2005/06/22 03:12:31 arthchan2003
+ * 1, Fixed doxygen documentation, 2, Added keyword.
+ *
+ * Revision 1.3 2005/03/30 01:22:48 archan
+ * Fixed mistakes in last updates. Add
+ *
+ *
+ * 03-Oct-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University.
+ * Copied from Sphinx-II sources.
+ */
+
+
+#if ((! _WIN32) && (! _HPUX_SOURCE))
+#include <sys/time.h>
+#include <sys/resource.h>
+#endif
+
+#include "sphinxbase/unlimit.h"
+
+
+/*
+ * The limit is set to the maximum of your system.
+ */
+void
+unlimit(void)
+{
+#if 0
+#if ((! WIN32) && (! _HPUX_SOURCE))
+ struct rlimit rl;
+
+ getrlimit(RLIMIT_DATA, &rl);
+ rl.rlim_cur = rl.rlim_max;
+ setrlimit(RLIMIT_DATA, &rl);
+#endif
+#endif
+}
--- /dev/null
+/* Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de> */
+/* See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. */
+
+/* Slightly modified to use Sphinx types and remove explicit inline. */
+
+#include "sphinxbase/prim_type.h"
+
+#define UTF8_ACCEPT 0
+#define UTF8_REJECT 1
+
+static const uint8 utf8d[] = {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f
+ 0,0,0,0,0,0,0,0,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..5f
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f
+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf
+ 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df
+ 0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, // e0..ef
+ 0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, // f0..ff
+ 0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1, // s0..s0
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, // s1..s2
+ 1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, // s3..s4
+ 1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, // s5..s6
+ 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8
+};
+
+uint32
+utf8_decode(uint32 *state, uint32 *codep, uint32 byte) {
+ uint32 type = utf8d[byte];
+
+ *codep = (*state != UTF8_ACCEPT) ?
+ (byte & 0x3fu) | (*codep << 6) :
+ (0xff >> type) & (byte);
+
+ *state = utf8d[256 + *state*16 + type];
+ return *state;
+}
+
+/* CMU code starts here. */
+/* ====================================================================
+ * Copyright (c) 2009 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
--- /dev/null
+bin_PROGRAMS = sphinx_cont_adseg sphinx_cont_fileseg sphinx_pitch
+
+sphinx_cont_adseg_SOURCES = cont_adseg.c
+sphinx_cont_fileseg_SOURCES = cont_fileseg.c
+
+LDADD = $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxad/libsphinxad.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = sphinx_cont_adseg$(EXEEXT) sphinx_cont_fileseg$(EXEEXT) \
+ sphinx_pitch$(EXEEXT)
+subdir = src/sphinx_adtools
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_sphinx_cont_adseg_OBJECTS = cont_adseg.$(OBJEXT)
+sphinx_cont_adseg_OBJECTS = $(am_sphinx_cont_adseg_OBJECTS)
+sphinx_cont_adseg_LDADD = $(LDADD)
+sphinx_cont_adseg_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxad/libsphinxad.la
+am_sphinx_cont_fileseg_OBJECTS = cont_fileseg.$(OBJEXT)
+sphinx_cont_fileseg_OBJECTS = $(am_sphinx_cont_fileseg_OBJECTS)
+sphinx_cont_fileseg_LDADD = $(LDADD)
+sphinx_cont_fileseg_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxad/libsphinxad.la
+sphinx_pitch_SOURCES = sphinx_pitch.c
+sphinx_pitch_OBJECTS = sphinx_pitch.$(OBJEXT)
+sphinx_pitch_LDADD = $(LDADD)
+sphinx_pitch_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxad/libsphinxad.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(sphinx_cont_adseg_SOURCES) $(sphinx_cont_fileseg_SOURCES) \
+ sphinx_pitch.c
+DIST_SOURCES = $(sphinx_cont_adseg_SOURCES) \
+ $(sphinx_cont_fileseg_SOURCES) sphinx_pitch.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+sphinx_cont_adseg_SOURCES = cont_adseg.c
+sphinx_cont_fileseg_SOURCES = cont_fileseg.c
+LDADD = $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxad/libsphinxad.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sphinx_adtools/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/sphinx_adtools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+sphinx_cont_adseg$(EXEEXT): $(sphinx_cont_adseg_OBJECTS) $(sphinx_cont_adseg_DEPENDENCIES)
+ @rm -f sphinx_cont_adseg$(EXEEXT)
+ $(LINK) $(sphinx_cont_adseg_OBJECTS) $(sphinx_cont_adseg_LDADD) $(LIBS)
+sphinx_cont_fileseg$(EXEEXT): $(sphinx_cont_fileseg_OBJECTS) $(sphinx_cont_fileseg_DEPENDENCIES)
+ @rm -f sphinx_cont_fileseg$(EXEEXT)
+ $(LINK) $(sphinx_cont_fileseg_OBJECTS) $(sphinx_cont_fileseg_LDADD) $(LIBS)
+sphinx_pitch$(EXEEXT): $(sphinx_pitch_OBJECTS) $(sphinx_pitch_DEPENDENCIES)
+ @rm -f sphinx_pitch$(EXEEXT)
+ $(LINK) $(sphinx_pitch_OBJECTS) $(sphinx_pitch_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cont_adseg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cont_fileseg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sphinx_pitch.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cont_adseg.c -- Continuously listen and segment input speech into utterances.
+ *
+ * HISTORY
+ *
+ * 27-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/ad.h>
+#include <sphinxbase/cont_ad.h>
+#include <sphinxbase/err.h>
+
+/*
+ * Segment raw A/D input data into utterances whenever silence region of given
+ * duration is encountered.
+ * Utterances are written to files named 0001.raw, 0002.raw, 0003.raw, etc.
+ */
+int
+main(int32 argc, char **argv)
+{
+ ad_rec_t *ad;
+ cont_ad_t *cont;
+ int32 k, uttno, ts, uttlen, sps, endsilsamples;
+ float endsil;
+ int16 buf[4096];
+ FILE *fp;
+ char file[1024];
+
+ if ((argc != 3) ||
+ (sscanf(argv[1], "%d", &sps) != 1) ||
+ (sscanf(argv[2], "%f", &endsil) != 1) || (endsil <= 0.0)) {
+ E_FATAL("Usage: %s <sampling-rate> <utt-end-sil(sec)>\n", argv[0]);
+ }
+
+ /* Convert desired min. inter-utterance silence duration to #samples */
+ endsilsamples = (int32) (endsil * sps);
+
+ /* Open raw A/D device */
+ if ((ad = ad_open_sps(sps)) == NULL)
+ E_FATAL("ad_open_sps(%d) failed\n", sps);
+
+ /* Associate new continuous listening module with opened raw A/D device */
+ if ((cont = cont_ad_init(ad, ad_read)) == NULL)
+ E_FATAL("cont_ad_init failed\n");
+
+ /* Calibrate continuous listening for background noise/silence level */
+ printf("Calibrating ...");
+ fflush(stdout);
+ ad_start_rec(ad);
+ if (cont_ad_calib(cont) < 0)
+ printf(" failed\n");
+ else
+ printf(" done\n");
+
+ /* Forever listen for utterances */
+ printf("You may speak now\n");
+ fflush(stdout);
+ uttno = 0;
+ for (;;) {
+ /* Wait for beginning of next utterance; for non-silence data */
+ while ((k = cont_ad_read(cont, buf, 4096)) == 0);
+ if (k < 0)
+ E_FATAL("cont_ad_read failed\n");
+
+ /* Non-silence data received; open and write to new logging file */
+ uttno++;
+ sprintf(file, "%04d.raw", uttno);
+ if ((fp = fopen(file, "wb")) == NULL)
+ E_FATAL("Failed to open '%s' for reading: %s\n", file, strerror(errno));
+ fwrite(buf, sizeof(int16), k, fp);
+ uttlen = k;
+ printf("Utterance %04d, logging to %s\n", uttno, file);
+
+ /* Note current timestamp */
+ ts = cont->read_ts;
+
+ /* Read utterance data until a gap of at least 1 sec observed */
+ for (;;) {
+ if ((k = cont_ad_read(cont, buf, 4096)) < 0)
+ E_FATAL("cont_ad_read failed\n");
+ if (k == 0) {
+ /*
+ * No speech data available; check current timestamp. End of
+ * utterance if no non-silence data been read for at least 1 sec.
+ */
+ if ((cont->read_ts - ts) > endsilsamples)
+ break;
+ }
+ else {
+ /* Note timestamp at the end of most recently read speech data */
+ ts = cont->read_ts;
+ uttlen += k;
+ fwrite(buf, sizeof(int16), k, fp);
+ }
+ }
+ fclose(fp);
+
+ printf("\tUtterance %04d = %d samples (%.1fsec)\n\n",
+ uttno, uttlen, (double) uttlen / (double) sps);
+ }
+
+ ad_stop_rec(ad);
+ cont_ad_close(cont);
+ ad_close(ad);
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1999-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*
+ * cont_fileseg.c -- Read input file, filter silence regions, and segment into utterances.
+ *
+ * HISTORY
+ *
+ * $Log: cont_fileseg.c,v $
+ * Revision 1.1.1.1 2006/05/23 18:45:02 dhuggins
+ * re-importation
+ *
+ * Revision 1.13 2005/06/30 00:28:46 rkm
+ * Kept within-utterance silences in rawmode
+ *
+ *
+ * 28-Jun-2005 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Modified to use new state variables in cont_ad_t.
+ *
+ * Revision 1.12 2005/05/31 15:54:38 rkm
+ * *** empty log message ***
+ *
+ * Revision 1.11 2005/05/24 20:56:58 rkm
+ * Added min/max-noise parameters to cont_fileseg
+ *
+ * Revision 1.10 2005/05/13 23:28:43 egouvea
+ * Changed null device to system dependent one: NUL for windows, /dev/null for everything else
+ *
+ * $Log: cont_fileseg.c,v $
+ * Revision 1.1.1.1 2006/05/23 18:45:02 dhuggins
+ * re-importation
+ *
+ * Revision 1.13 2005/06/30 00:28:46 rkm
+ * Kept within-utterance silences in rawmode
+ *
+ * Revision 1.12 2005/05/31 15:54:38 rkm
+ * *** empty log message ***
+ *
+ * Revision 1.11 2005/05/24 20:56:58 rkm
+ * Added min/max-noise parameters to cont_fileseg
+ *
+ * Revision 1.9 2005/02/13 01:29:48 rkm
+ * Fixed cont_ad_read to never cross sil/speech boundary, and rawmode
+ *
+ * Revision 1.8 2005/02/01 22:21:13 rkm
+ * Added raw data logging, and raw data pass-through mode to cont_ad
+ *
+ * Revision 1.7 2004/07/16 00:57:11 egouvea
+ * Added Ravi's implementation of FSG support.
+ *
+ * Revision 1.3 2004/06/25 14:58:05 rkm
+ * *** empty log message ***
+ *
+ * Revision 1.2 2004/06/23 20:32:08 rkm
+ * Exposed several cont_ad config parameters
+ *
+ *
+ * 27-Jun-96 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
+ * Created.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/ad.h>
+#include <sphinxbase/cont_ad.h>
+#include <sphinxbase/err.h>
+
+static FILE *infp; /* File being segmented */
+static int32 swap;
+
+/* Max size read by file_ad_read function on each invocation, for debugging */
+static int32 max_ad_read_size;
+
+#if defined(WIN32) && !defined(GNUWINCE)
+#define NULL_DEVICE "NUL"
+#else
+#define NULL_DEVICE "/dev/null"
+#endif
+
+
+/*
+ * Need to provide cont_ad_init with a read function to read the input file.
+ * This is it. The ad_rec_t *r argument is ignored since there is no A/D
+ * device involved.
+ */
+static int32
+file_ad_read(ad_rec_t * r, int16 * buf, int32 max)
+{
+ int32 i, k;
+
+ if (max > max_ad_read_size)
+ max = max_ad_read_size;
+
+ k = fread(buf, sizeof(int16), max, infp);
+ if (swap) {
+ for (i = 0; i < k; i++) {
+ buf[i] = ((buf[i] >> 8) & 0x00ff) | ((buf[i] << 8) & 0xff00);
+ }
+ }
+
+ return ((k > 0) ? k : -1);
+}
+
+
+static void
+usagemsg(char *pgm)
+{
+ E_INFO("Usage: %s \\\n", pgm);
+ E_INFOCONT("\t[-? | -h] \\\n");
+ E_INFOCONT("\t[-d | -debug] \\\n");
+ E_INFOCONT("\t[-sps <sampling-rate> (16000)] \\\n");
+ E_INFOCONT("\t[-b | -byteswap] \\\n");
+ E_INFOCONT
+ ("\t[{-s | -silsep} <length-silence-separator(sec) (0.5)]> \\\n");
+ E_INFOCONT("\t[-w | -writeseg] \\\n");
+ E_INFOCONT("\t[-min-noise <min-noise>] \\\n");
+ E_INFOCONT("\t[-max-noise <max-noise>] \\\n");
+ E_INFOCONT("\t[-delta-sil <delta-sil>] \\\n");
+ E_INFOCONT("\t[-delta-speech <delta-speech>] \\\n");
+ E_INFOCONT("\t[-sil-onset <sil-onset>] \\\n");
+ E_INFOCONT("\t[-speech-onset <speech-onset>] \\\n");
+ E_INFOCONT("\t[-adapt-rate <adapt-rate>] \\\n");
+ E_INFOCONT("\t[-max-adreadsize <ad_read_blksize>] \\\n");
+ E_INFOCONT("\t[-c <copy-input-file>] \\\n");
+ E_INFOCONT("\t[-r | -rawmode] \\\n");
+ E_INFOCONT("\t-i <input-file>\n");
+
+ exit(0);
+}
+
+/*
+ * Read specified input file, segment it into utterances wherever a silence segment of
+ * a given minimum duration is encountered. Filter out long silences.
+ * Utterances are written to files named 00000000.raw, 00000001.raw, 00000002.raw, etc.
+ */
+int
+main(int32 argc, char **argv)
+{
+ cont_ad_t *cont;
+ int32 uttid, uttlen, starttime, siltime, sps, debug, writeseg, rawmode;
+ int16 buf[4096];
+ char *infile, *copyfile, segfile[1024];
+ FILE *fp;
+ float endsil;
+ ad_rec_t ad;
+ int32 i, k;
+ int32 winsize, leader, trailer;
+ int32 orig_min_noise, orig_max_noise;
+ int32 orig_delta_sil, orig_delta_speech;
+ int32 orig_speech_onset, orig_sil_onset;
+ int32 min_noise, max_noise;
+ int32 delta_sil, delta_speech;
+ int32 sil_onset, speech_onset;
+ float32 orig_adapt_rate;
+ float32 adapt_rate;
+ int32 total_speech_samples;
+ float32 total_speech_sec;
+ FILE *rawfp;
+
+ /* Set argument defaults */
+ cont = NULL;
+ sps = 16000;
+ swap = 0;
+ endsil = 0.5;
+ writeseg = 0;
+ min_noise = max_noise = -1;
+ delta_sil = delta_speech = -1;
+ sil_onset = speech_onset = -1;
+ adapt_rate = -1.0;
+ max_ad_read_size = (int32) 0x7ffffff0;
+ debug = 0;
+ infile = NULL;
+ copyfile = NULL;
+ rawfp = NULL;
+ rawmode = 0;
+
+ /* Parse arguments */
+ for (i = 1; i < argc; i++) {
+ if ((strcmp(argv[i], "-help") == 0)
+ || (strcmp(argv[i], "-h") == 0)
+ || (strcmp(argv[i], "-?") == 0)) {
+ usagemsg(argv[0]);
+ }
+ else if ((strcmp(argv[i], "-debug") == 0)
+ || (strcmp(argv[i], "-d") == 0)) {
+ debug = 1;
+ }
+ else if (strcmp(argv[i], "-sps") == 0) {
+ i++;
+ if ((i == argc)
+ || (sscanf(argv[i], "%d", &sps) != 1)
+ || (sps <= 0)) {
+ E_ERROR("Invalid -sps argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if ((strcmp(argv[i], "-byteswap") == 0)
+ || (strcmp(argv[i], "-b") == 0)) {
+ swap = 1;
+ }
+ else if ((strcmp(argv[i], "-silsep") == 0)
+ || (strcmp(argv[i], "-s") == 0)) {
+ i++;
+ if ((i == argc)
+ || (sscanf(argv[i], "%f", &endsil) != 1)
+ || (endsil <= 0.0)) {
+ E_ERROR("Invalid -silsep argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if ((strcmp(argv[i], "-writeseg") == 0)
+ || (strcmp(argv[i], "-w") == 0)) {
+ writeseg = 1;
+ }
+ else if (strcmp(argv[i], "-min-noise") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &min_noise) != 1) ||
+ (min_noise < 0)) {
+ E_ERROR("Invalid -min-noise argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-max-noise") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &max_noise) != 1) ||
+ (max_noise < 0)) {
+ E_ERROR("Invalid -max-noise argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-delta-sil") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &delta_sil) != 1) ||
+ (delta_sil < 0)) {
+ E_ERROR("Invalid -delta-sil argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-delta-speech") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &delta_speech) != 1) ||
+ (delta_speech < 0)) {
+ E_ERROR("Invalid -delta-speech argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-sil-onset") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &sil_onset) != 1) ||
+ (sil_onset < 1)) {
+ E_ERROR("Invalid -sil-onset argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-speech-onset") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &speech_onset) != 1) ||
+ (speech_onset < 1)) {
+ E_ERROR("Invalid -speech-onset argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-adapt-rate") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%f", &adapt_rate) != 1) ||
+ (adapt_rate < 0.0) || (adapt_rate > 1.0)) {
+ E_ERROR("Invalid -adapt-rate argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-max-adreadsize") == 0) {
+ i++;
+ if ((i == argc) ||
+ (sscanf(argv[i], "%d", &max_ad_read_size) != 1) ||
+ (max_ad_read_size < 1)) {
+ E_ERROR("Invalid -max-adreadsize argument\n");
+ usagemsg(argv[0]);
+ }
+ }
+ else if (strcmp(argv[i], "-c") == 0) {
+ i++;
+ if (i == argc) {
+ E_ERROR("Invalid -c argument\n");
+ usagemsg(argv[0]);
+ }
+ copyfile = argv[i];
+ }
+ else if ((strcmp(argv[i], "-rawmode") == 0)
+ || (strcmp(argv[i], "-r") == 0)) {
+ rawmode = 1;
+ }
+ else if (strcmp(argv[i], "-i") == 0) {
+ i++;
+ if (i == argc) {
+ E_ERROR("Invalid -i argument\n");
+ usagemsg(argv[0]);
+ }
+ infile = argv[i];
+ }
+ else {
+ usagemsg(argv[0]);
+ }
+ }
+
+ if (infile == NULL) {
+ E_ERROR("No input file specified\n");
+ usagemsg(argv[0]);
+ }
+
+ if ((infp = fopen(infile, "rb")) == NULL)
+ E_FATAL("Failed to open '%s' for reading: %s\n", infile, strerror(errno));
+
+ /*
+ * Associate continuous listening module with opened input file and read function.
+ * No A/D device is involved, but need to fill in ad->sps.
+ * Calibrate input data using first few seconds of file, but then rewind it!!
+ */
+ ad.sps = sps;
+ ad.bps = sizeof(int16);
+ if (!rawmode)
+ cont = cont_ad_init(&ad, file_ad_read);
+ else
+ cont = cont_ad_init_rawmode(&ad, file_ad_read);
+
+ printf("Calibrating ...");
+ fflush(stdout);
+ if (cont_ad_calib(cont) < 0)
+ printf(" failed; file too short?\n");
+ else
+ printf(" done\n");
+ rewind(infp);
+
+ /* Convert desired min. inter-utterance silence duration to #samples */
+ siltime = (int32) (endsil * sps);
+
+ /* Enable writing raw input to output by the cont module if specified */
+ if (copyfile) {
+ if ((rawfp = fopen(copyfile, "wb")) == NULL)
+ E_ERROR("Failed to open raw output file '%s' for writing: %s\n",
+ copyfile, strerror(errno));
+ else
+ cont_ad_set_rawfp(cont, rawfp);
+ }
+
+ cont_ad_get_params(cont,
+ &orig_delta_sil, &orig_delta_speech,
+ &orig_min_noise, &orig_max_noise,
+ &winsize,
+ &orig_speech_onset, &orig_sil_onset,
+ &leader, &trailer, &orig_adapt_rate);
+
+ E_INFO("Default parameters:\n");
+ E_INFOCONT("\tmin-noise = %d, max-noise = %d\n",
+ orig_min_noise, orig_max_noise);
+ E_INFOCONT("\tdelta-sil = %d, delta-speech = %d\n",
+ orig_delta_sil, orig_delta_speech);
+ E_INFOCONT("\tsil-onset = %d, speech-onset = %d\n",
+ orig_sil_onset, orig_speech_onset);
+ E_INFOCONT("\tadapt_rate = %.3f\n", orig_adapt_rate);
+
+ if (min_noise < 0)
+ min_noise = orig_min_noise;
+ if (max_noise < 0)
+ max_noise = orig_max_noise;
+ if (delta_sil < 0)
+ delta_sil = orig_delta_sil;
+ if (delta_speech < 0)
+ delta_speech = orig_delta_speech;
+ if (sil_onset < 0)
+ sil_onset = orig_sil_onset;
+ if (speech_onset < 0)
+ speech_onset = orig_speech_onset;
+ if (adapt_rate < 0.0)
+ adapt_rate = orig_adapt_rate;
+
+ cont_ad_set_params(cont,
+ delta_sil, delta_speech,
+ min_noise, max_noise,
+ winsize,
+ speech_onset, sil_onset,
+ leader, trailer, adapt_rate);
+
+ E_INFO("Current parameters:\n");
+ E_INFOCONT("\tmin-noise = %d, max-noise = %d\n", min_noise, max_noise);
+ E_INFOCONT("\tdelta-sil = %d, delta-speech = %d\n", delta_sil,
+ delta_speech);
+ E_INFOCONT("\tsil-onset = %d, speech-onset = %d\n", sil_onset,
+ speech_onset);
+ E_INFOCONT("\tadapt_rate = %.3f\n", adapt_rate);
+
+ E_INFO("Sampling rate: %d", sps);
+ E_INFOCONT("; Byteswap: %s", swap ? "Yes" : "No");
+ E_INFOCONT("; Max ad-read size: %d\n", max_ad_read_size);
+
+ if (debug)
+ cont_ad_set_logfp(cont, stdout);
+
+ total_speech_samples = 0;
+ total_speech_sec = 0.0;
+
+ uttid = 0;
+ uttlen = 0;
+ starttime = 0;
+ fp = NULL;
+
+ /* Process data */
+ for (;;) {
+ /* Get audio data from continuous listening module */
+ k = cont_ad_read(cont, buf, 4096);
+
+ if (k < 0) { /* End of input audio file; close any open output file and exit */
+ if (fp != NULL) {
+ fclose(fp);
+ fp = NULL;
+
+ printf
+ ("Utt %08d, st= %8.2fs, et= %8.2fs, seg= %7.2fs (#samp= %10d)\n",
+ uttid, (double) starttime / (double) sps,
+ (double) (starttime + uttlen) / (double) sps,
+ (double) uttlen / (double) sps, uttlen);
+ fflush(stdout);
+
+ total_speech_samples += uttlen;
+ total_speech_sec += (double) uttlen / (double) sps;
+
+ uttid++;
+ }
+
+ break;
+ }
+
+ if (cont->state == CONT_AD_STATE_SIL) { /* Silence data got */
+ if (fp != NULL) { /* Currently in an utterance */
+ if (cont->seglen > siltime) { /* Long enough silence detected; end the utterance */
+ fclose(fp);
+ fp = NULL;
+
+ printf
+ ("Utt %08d, st= %8.2fs, et= %8.2fs, seg= %7.2fs (#samp= %10d)\n",
+ uttid, (double) starttime / (double) sps,
+ (double) (starttime + uttlen) / (double) sps,
+ (double) uttlen / (double) sps, uttlen);
+ fflush(stdout);
+
+ total_speech_samples += uttlen;
+ total_speech_sec += (double) uttlen / (double) sps;
+
+ uttid++;
+ }
+ else {
+ /*
+ * Short silence within utt; write it to output. (Some extra trailing silence
+ * is included in the utterance, as a result. Not to worry about it.)
+ */
+ if (k > 0) {
+ fwrite(buf, sizeof(int16), k, fp);
+ uttlen += k;
+ }
+ }
+ }
+ }
+ else {
+ assert(cont->state == CONT_AD_STATE_SPEECH);
+
+ if (fp == NULL) { /* Not in an utt; open a new output file */
+ if (writeseg)
+ sprintf(segfile, "%08d.raw", uttid);
+ else
+ strcpy(segfile, NULL_DEVICE);
+ if ((fp = fopen(segfile, "wb")) == NULL)
+ E_FATAL("Failed to open segmentation file '%s' for writing: %s\n", segfile, strerror(errno));
+
+ starttime = cont->read_ts - k;
+ uttlen = 0;
+ }
+
+ /* Write data obtained to output file */
+ if (k > 0) {
+ fwrite(buf, sizeof(int16), k, fp);
+ uttlen += k;
+ }
+ }
+ }
+
+ if (rawfp)
+ fclose(rawfp);
+
+ E_INFO("Total raw input speech = %d frames, %d samples, %.2f sec\n",
+ cont->tot_frm, cont->tot_frm * cont->spf,
+ (cont->tot_frm * cont->spf) / (float32) cont->sps);
+ E_INFO("Total speech detected = %d samples, %.2f sec\n",
+ total_speech_samples, total_speech_sec);
+
+ cont_ad_close(cont);
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2008 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/yin.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/byteorder.h>
+#include <sphinxbase/strfuncs.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/pio.h>
+
+#ifndef WORDS_BIGENDIAN
+#define WORDS_BIGENDIAN 0
+#endif
+
+static arg_t defn[] = {
+ { "-i",
+ ARG_STRING,
+ NULL,
+ "Single audio input file" },
+
+ { "-o",
+ ARG_STRING,
+ NULL,
+ "Single text output file (standard output will be used if not given)" },
+
+ { "-c",
+ ARG_STRING,
+ NULL,
+ "Control file for batch processing" },
+
+ { "-nskip",
+ ARG_INT32,
+ "0",
+ "If a control file was specified, the number of utterances to skip at the head of the file" },
+
+ { "-runlen",
+ ARG_INT32,
+ "-1",
+ "If a control file was specified, the number of utterances to process (see -nskip too)" },
+
+ { "-di",
+ ARG_STRING,
+ NULL,
+ "Input directory, input file names are relative to this, if defined" },
+
+ { "-ei",
+ ARG_STRING,
+ NULL,
+ "Input extension to be applied to all input files" },
+
+ { "-do",
+ ARG_STRING,
+ NULL,
+ "Output directory, output files are relative to this" },
+
+ { "-eo",
+ ARG_STRING,
+ NULL,
+ "Output extension to be applied to all output files" },
+
+ { "-nist",
+ ARG_BOOLEAN,
+ "no",
+ "Defines input format as NIST sphere" },
+
+ { "-raw",
+ ARG_BOOLEAN,
+ "no",
+ "Defines input format as raw binary data" },
+
+ { "-mswav",
+ ARG_BOOLEAN,
+ "no",
+ "Defines input format as Microsoft Wav (RIFF)" },
+
+ { "-samprate",
+ ARG_INT32,
+ "0",
+ "Sampling rate of audio data (will be determined automatically if 0)" },
+
+ { "-input_endian",
+ ARG_STRING,
+ NULL,
+ "Endianness of audio data (will be determined automatically if not given)" },
+
+ { "-fshift",
+ ARG_FLOAT32,
+ "0.01",
+ "Frame shift: number of seconds between each analysis frame." },
+
+ { "-flen",
+ ARG_FLOAT32,
+ "0.025",
+ "Number of seconds in each analysis frame (needs to be greater than twice the longest period you wish to detect - to detect down to 80Hz you need a frame length of 2.0/80 = 0.025)." },
+
+ { "-smooth_window",
+ ARG_INT32,
+ "2",
+ "Number of frames on either side of the current frame to use for smoothing." },
+
+ { "-voice_thresh",
+ ARG_FLOAT32,
+ "0.1",
+ "Threshold of normalized difference under which to search for the fundamental period." },
+
+ { "-search_range",
+ ARG_FLOAT32,
+ "0.2",
+ "Fraction of the best local estimate to use as a search range for smoothing." },
+
+ { NULL, 0, NULL, NULL }
+};
+
+static int extract_pitch(const char *in, const char *out);
+static int run_control_file(const char *ctl);
+
+int
+main(int argc, char *argv[])
+{
+ cmd_ln_parse(defn, argc, argv, TRUE);
+
+ /* Run a control file if requested. */
+ if (cmd_ln_str("-c")) {
+ if (run_control_file(cmd_ln_str("-c")) < 0)
+ return 1;
+ }
+ else {
+ if (extract_pitch(cmd_ln_str("-i"), cmd_ln_str("-o")) < 0)
+ return 1;
+ }
+
+ cmd_ln_free();
+ return 0;
+}
+
+static int
+guess_file_type(char const *file, FILE *infh)
+{
+ char header[4];
+
+ fseek(infh, 0, SEEK_SET);
+ if (fread(header, 1, 4, infh) != 4) {
+ E_ERROR_SYSTEM("Failed to read 4 byte header");
+ return -1;
+ }
+ if (0 == memcmp(header, "RIFF", 4)) {
+ E_INFO("%s appears to be a WAV file\n", file);
+ cmd_ln_set_boolean("-mswav", TRUE);
+ cmd_ln_set_boolean("-nist", FALSE);
+ cmd_ln_set_boolean("-raw", FALSE);
+ }
+ else if (0 == memcmp(header, "NIST", 4)) {
+ E_INFO("%s appears to be a NIST SPHERE file\n", file);
+ cmd_ln_set_boolean("-mswav", FALSE);
+ cmd_ln_set_boolean("-nist", TRUE);
+ cmd_ln_set_boolean("-raw", FALSE);
+ }
+ else {
+ E_INFO("%s appears to be raw data\n", file);
+ cmd_ln_set_boolean("-mswav", FALSE);
+ cmd_ln_set_boolean("-nist", FALSE);
+ cmd_ln_set_boolean("-raw", TRUE);
+ }
+ fseek(infh, 0, SEEK_SET);
+ return 0;
+}
+
+#define TRY_FREAD(ptr, size, nmemb, stream) \
+ if (fread(ptr, size, nmemb, stream) != (nmemb)) { \
+ E_ERROR_SYSTEM("Failed to read %d bytes", size * nmemb); \
+ goto error_out; \
+ }
+
+static int
+read_riff_header(FILE *infh)
+{
+ char id[4];
+ int32 intval, header_len;
+ int16 shortval;
+
+ /* RIFF files are little-endian by definition. */
+ cmd_ln_set_str("-input_endian", "little");
+
+ /* Read in all the header chunks and etcetera. */
+ TRY_FREAD(id, 1, 4, infh);
+ /* Total file length (we don't care) */
+ TRY_FREAD(&intval, 4, 1, infh);
+ /* 'WAVE' */
+ TRY_FREAD(id, 1, 4, infh);
+ if (0 != memcmp(id, "WAVE", 4)) {
+ E_ERROR("This is not a WAVE file\n");
+ goto error_out;
+ }
+ /* 'fmt ' */
+ TRY_FREAD(id, 1, 4, infh);
+ if (0 != memcmp(id, "fmt ", 4)) {
+ E_ERROR("Format chunk missing\n");
+ goto error_out;
+ }
+ /* Length of 'fmt ' chunk */
+ TRY_FREAD(&intval, 4, 1, infh);
+ if (WORDS_BIGENDIAN) SWAP_INT32(&intval);
+ header_len = intval;
+
+ /* Data format. */
+ TRY_FREAD(&shortval, 2, 1, infh);
+ if (WORDS_BIGENDIAN) SWAP_INT16(&shortval);
+ if (shortval != 1) { /* PCM */
+ E_ERROR("WAVE file is not in PCM format\n");
+ goto error_out;
+ }
+
+ /* Number of channels. */
+ TRY_FREAD(&shortval, 2, 1, infh);
+ if (WORDS_BIGENDIAN) SWAP_INT16(&shortval);
+ if (shortval != 1) { /* PCM */
+ E_ERROR("WAVE file is not single channel\n");
+ goto error_out;
+ }
+
+ /* Sampling rate (finally!) */
+ TRY_FREAD(&intval, 4, 1, infh);
+ if (WORDS_BIGENDIAN) SWAP_INT32(&intval);
+ if (cmd_ln_int32("-samprate") == 0)
+ cmd_ln_set_int32("-samprate", intval);
+ else if (cmd_ln_int32("-samprate") != intval) {
+ E_WARN("WAVE file sampling rate %d != -samprate %d\n",
+ intval, cmd_ln_int32("-samprate"));
+ }
+
+ /* Average bytes per second (we don't care) */
+ TRY_FREAD(&intval, 4, 1, infh);
+
+ /* Block alignment (we don't care) */
+ TRY_FREAD(&shortval, 2, 1, infh);
+
+ /* Bits per sample (must be 16) */
+ TRY_FREAD(&shortval, 2, 1, infh);
+ if (WORDS_BIGENDIAN) SWAP_INT16(&shortval);
+ if (shortval != 16) {
+ E_ERROR("WAVE file is not 16-bit\n");
+ goto error_out;
+ }
+
+ /* Any extra parameters. */
+ if (header_len > 16)
+ fseek(infh, header_len - 16, SEEK_CUR);
+
+ /* Now skip to the 'data' chunk. */
+ while (1) {
+ TRY_FREAD(id, 1, 4, infh);
+ if (0 == memcmp(id, "data", 4)) {
+ /* Total number of bytes of data (we don't care). */
+ TRY_FREAD(&intval, 4, 1, infh);
+ break;
+ }
+ else {
+ /* Some other stuff... */
+ /* Number of bytes of ... whatever */
+ TRY_FREAD(&intval, 4, 1, infh);
+ if (WORDS_BIGENDIAN) SWAP_INT32(&intval);
+ fseek(infh, intval, SEEK_CUR);
+ }
+ }
+
+ /* We are ready to rumble. */
+ return 0;
+error_out:
+ return -1;
+}
+
+static int
+read_nist_header(FILE *infh)
+{
+ char hdr[1024];
+ char *line, *c;
+
+ TRY_FREAD(hdr, 1, 1024, infh);
+ hdr[1023] = '\0';
+
+ /* Roughly parse it to find the sampling rate and byte order
+ * (don't bother with other stuff) */
+ if ((line = strstr(hdr, "sample_rate")) == NULL) {
+ E_ERROR("No sampling rate in NIST header!\n");
+ goto error_out;
+ }
+ c = strchr(line, '\n');
+ if (c) *c = '\0';
+ c = strrchr(line, ' ');
+ if (c == NULL) {
+ E_ERROR("Could not find sampling rate!\n");
+ goto error_out;
+ }
+ ++c;
+ if (cmd_ln_int32("-samprate") == 0)
+ cmd_ln_set_int32("-samprate", atoi(c));
+ else if (cmd_ln_int32("-samprate") != atoi(c)) {
+ E_WARN("NIST file sampling rate %d != -samprate %d\n",
+ atoi(c), cmd_ln_int32("-samprate"));
+ }
+
+ if (line + strlen(line) < hdr + 1023)
+ line[strlen(line)] = ' ';
+ if ((line = strstr(hdr, "sample_byte_format")) == NULL) {
+ E_ERROR("No sample byte format in NIST header!\n");
+ goto error_out;
+ }
+ c = strchr(line, '\n');
+ if (c) *c = '\0';
+ c = strrchr(line, ' ');
+ if (c == NULL) {
+ E_ERROR("Could not find sample byte order!\n");
+ goto error_out;
+ }
+ ++c;
+ if (0 == memcmp(c, "01", 2)) {
+ cmd_ln_set_str("-input_endian", "little");
+ }
+ else if (0 == memcmp(c, "10", 2)) {
+ cmd_ln_set_str("-input_endian", "big");
+ }
+ else {
+ E_ERROR("Unknown byte order %s\n", c);
+ goto error_out;
+ }
+
+ /* We are ready to rumble. */
+ return 0;
+error_out:
+ return -1;
+}
+
+static int
+extract_pitch(const char *in, const char *out)
+{
+ FILE *infh = NULL, *outfh = NULL;
+ size_t flen, fshift, nsamps;
+ int16 *buf = NULL;
+ yin_t *yin = NULL;
+ uint16 period, bestdiff;
+ int32 sps;
+
+ if (out) {
+ if ((outfh = fopen(out, "w")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s for writing", out);
+ goto error_out;
+ }
+ }
+ else {
+ outfh = stdout;
+ }
+ if ((infh = fopen(in, "rb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s for reading", in);
+ goto error_out;
+ }
+
+ /* If we weren't told what the file type is, weakly try to
+ * determine it (actually it's pretty obvious) */
+ if (!(cmd_ln_boolean("-raw")
+ || cmd_ln_boolean("-mswav")
+ || cmd_ln_boolean("-nist"))) {
+ if (guess_file_type(in, infh) < 0)
+ goto error_out;
+ }
+
+ /* Grab the sampling rate and byte order from the header and also
+ * make sure this is 16-bit linear PCM. */
+ if (cmd_ln_boolean("-mswav")) {
+ if (read_riff_header(infh) < 0)
+ goto error_out;
+ }
+ else if (cmd_ln_boolean("-nist")) {
+ if (read_nist_header(infh) < 0)
+ goto error_out;
+ }
+ else if (cmd_ln_boolean("-raw")) {
+ /* Just use some defaults for sampling rate and endian. */
+ if (cmd_ln_str("-input_endian") == NULL) {
+ if (WORDS_BIGENDIAN)
+ cmd_ln_set_str("-input_endian", "big");
+ else
+ cmd_ln_set_str("-input_endian", "little");
+ }
+ if (cmd_ln_int32("-samprate") == 0)
+ cmd_ln_set_int32("-samprate", 16000);
+ }
+
+ /* Now read frames and write pitch estimates. */
+ sps = cmd_ln_int32("-samprate");
+ flen = (size_t)(0.5 + sps * cmd_ln_float32("-flen"));
+ fshift = (size_t)(0.5 + sps * cmd_ln_float32("-fshift"));
+ yin = yin_init(flen, cmd_ln_float32("-voice_thresh"),
+ cmd_ln_float32("-search_range"),
+ cmd_ln_int32("-smooth_window"));
+ if (yin == NULL) {
+ E_ERROR("Failed to initialize YIN\n");
+ goto error_out;
+ }
+ buf = ckd_calloc(flen, sizeof(*buf));
+ /* Read the first full frame of data. */
+ if (fread(buf, sizeof(*buf), flen, infh) != flen) {
+ /* Fail silently, which is probably okay. */
+ }
+ yin_start(yin);
+ nsamps = 0;
+ while (!feof(infh)) {
+ /* Process a frame of data. */
+ yin_write(yin, buf);
+ if (yin_read(yin, &period, &bestdiff)) {
+ fprintf(outfh, "%.3f %.2f %.2f\n",
+ /* Time point. */
+ (double)nsamps/sps,
+ /* "Probability" of voicing. */
+ bestdiff > 32768 ? 0.0 : 1.0 - (double)bestdiff / 32768,
+ /* Pitch (possibly bogus) */
+ period == 0 ? sps : (double)sps / period);
+ nsamps += fshift;
+ }
+ /* Shift it back and get the next frame's overlap. */
+ memmove(buf, buf + fshift, (flen - fshift) * sizeof(*buf));
+ if (fread(buf + flen - fshift, sizeof(*buf), fshift, infh) != fshift) {
+ /* Fail silently (FIXME: really?) */
+ }
+ }
+ yin_end(yin);
+ /* Process trailing frames of data. */
+ while (yin_read(yin, &period, &bestdiff)) {
+ fprintf(outfh, "%.3f %.2f %.2f\n",
+ /* Time point. */
+ (double)nsamps/sps,
+ /* "Probability" of voicing. */
+ bestdiff > 32768 ? 0.0 : 1.0 - (double)bestdiff / 32768,
+ /* Pitch (possibly bogus) */
+ period == 0 ? sps : (double)sps / period);
+ }
+
+ if (yin)
+ yin_free(yin);
+ ckd_free(buf);
+ fclose(infh);
+ if (outfh != stdout)
+ fclose(outfh);
+ return 0;
+
+error_out:
+ yin_free(yin);
+ ckd_free(buf);
+ if (infh) fclose(infh);
+ if (outfh && outfh != stdout) fclose(outfh);
+ return -1;
+}
+
+static int
+run_control_file(const char *ctl)
+{
+ FILE *ctlfh;
+ char *line;
+ char *di, *dout, *ei, *eio;
+ size_t len;
+ int rv, guess_type, guess_sps, guess_endian;
+ int32 skip, runlen;
+
+ skip = cmd_ln_int32("-nskip");
+ runlen = cmd_ln_int32("-runlen");
+
+ /* Whether to guess file types */
+ guess_type = !(cmd_ln_boolean("-raw")
+ || cmd_ln_boolean("-mswav")
+ || cmd_ln_boolean("-nist"));
+ /* Whether to guess sampling rate */
+ guess_sps = (cmd_ln_int32("-samprate") == 0);
+ /* Whether to guess endian */
+ guess_endian = (cmd_ln_str("-input_endian") == NULL);
+
+ if ((ctlfh = fopen(ctl, "r")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open control file %s", ctl);
+ return -1;
+ }
+ if (cmd_ln_str("-di"))
+ di = string_join(cmd_ln_str("-di"), "/", NULL);
+ else
+ di = ckd_salloc("");
+ if (cmd_ln_str("-do"))
+ dout = string_join(cmd_ln_str("-do"), "/", NULL);
+ else
+ dout = ckd_salloc("");
+ if (cmd_ln_str("-ei"))
+ ei = string_join(".", cmd_ln_str("-ei"), NULL);
+ else
+ ei = ckd_salloc("");
+ if (cmd_ln_str("-eo"))
+ eio = string_join(".", cmd_ln_str("-eo"), NULL);
+ else
+ eio = ckd_salloc("");
+ rv = 0;
+ while ((line = fread_line(ctlfh, &len)) != NULL) {
+ char *infile, *outfile;
+
+ if (skip-- > 0) {
+ ckd_free(line);
+ continue;
+ }
+ if (runlen == 0) {
+ ckd_free(line);
+ break;
+ }
+ --runlen;
+
+ if (line[len-1] == '\n')
+ line[len-1] = '\0';
+
+ infile = string_join(di, line, ei, NULL);
+ outfile = string_join(dout, line, eio, NULL);
+
+ /* Reset various guessed information */
+ if (guess_type) {
+ cmd_ln_set_boolean("-nist", FALSE);
+ cmd_ln_set_boolean("-mswav", FALSE);
+ cmd_ln_set_boolean("-raw", FALSE);
+ }
+ if (guess_sps)
+ cmd_ln_set_int32("-samprate", 0);
+ if (guess_endian)
+ cmd_ln_set_str("-input_endian", NULL);
+
+ rv = extract_pitch(infile, outfile);
+
+ ckd_free(infile);
+ ckd_free(outfile);
+ ckd_free(line);
+
+ if (rv != 0)
+ break;
+ }
+ ckd_free(di);
+ ckd_free(dout);
+ ckd_free(ei);
+ ckd_free(eio);
+ fclose(ctlfh);
+ return rv;
+}
--- /dev/null
+bin_PROGRAMS = sphinx_cepview
+
+sphinx_cepview_SOURCES = main_cepview.c
+
+sphinx_cepview_LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = sphinx_cepview$(EXEEXT)
+subdir = src/sphinx_cepview
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_sphinx_cepview_OBJECTS = main_cepview.$(OBJEXT)
+sphinx_cepview_OBJECTS = $(am_sphinx_cepview_OBJECTS)
+sphinx_cepview_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(sphinx_cepview_SOURCES)
+DIST_SOURCES = $(sphinx_cepview_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+sphinx_cepview_SOURCES = main_cepview.c
+sphinx_cepview_LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sphinx_cepview/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/sphinx_cepview/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+sphinx_cepview$(EXEEXT): $(sphinx_cepview_OBJECTS) $(sphinx_cepview_DEPENDENCIES)
+ @rm -f sphinx_cepview$(EXEEXT)
+ $(LINK) $(sphinx_cepview_OBJECTS) $(sphinx_cepview_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main_cepview.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1994-2001 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ *
+ * HISTORY
+ *
+ * circa 1994 P J Moreno at Carnegie Mellon
+ * Created.
+ *
+ * For history information, please use 'cvs log'
+ * $Log$
+ * Revision 1.11 2006/02/24 04:06:43 arthchan2003
+ * Merged from branch SPHINX3_5_2_RCI_IRII_BRANCH: Changed commands to macro. Used E_INFO instead of printf in displaying no. of friends
+ *
+ *
+ * Revision 1.10 2005/08/18 21:18:09 egouvea
+ * Added E_INFO displaying information about how many columns are being printed, and how many frames
+ *
+ * Revision 1.9.4.2 2005/09/07 23:51:05 arthchan2003
+ * Fixed keyword expansion problem
+ *
+ * Revision 1.9.4.1 2005/07/18 23:21:23 arthchan2003
+ * Tied command-line arguments with marcos
+ *
+ * Revision 1.10 2005/08/18 21:18:09 egouvea
+ * Added E_INFO displaying information about how many columns are being printed, and how many frames
+ *
+ * Revision 1.9 2005/06/22 05:38:45 arthchan2003
+ * Add
+ *
+ * Revision 1.2 2005/03/30 00:43:41 archan
+ *
+ * Add $Log$
+ * Revision 1.11 2006/02/24 04:06:43 arthchan2003
+ * Merged from branch SPHINX3_5_2_RCI_IRII_BRANCH: Changed commands to macro. Used E_INFO instead of printf in displaying no. of friends
+ *
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef _WIN32
+#pragma warning (disable: 4996)
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sphinxbase/strfuncs.h>
+#include <sphinxbase/prim_type.h>
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/info.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/bio.h>
+#include <sphinxbase/pio.h>
+
+/** \file main_cepview.c
+ \brief Main driver of cepview
+ */
+#define IO_ERR (-1)
+#define IO_SUCCESS (0)
+
+#define SHOW_ALL "-1"
+
+/* Default cepstral vector size */
+#define NUM_COEFF "13"
+
+/* Default display size, i.e., number of coefficients displayed, less
+ * than the vector size so we display one frame per line.
+ */
+#define DISPLAY_SIZE "10"
+#define STR_MAX_INT "2147483647"
+
+static arg_t arg[] = {
+
+ {"-logfn",
+ ARG_STRING,
+ NULL,
+ "Log file (default stdout/stderr)"},
+ {"-i",
+ ARG_INT32,
+ NUM_COEFF,
+ "Number of coefficients in the feature vector."},
+ {"-d",
+ ARG_INT32,
+ DISPLAY_SIZE,
+ "Number of displayed coefficients."},
+ {"-header",
+ ARG_INT32,
+ "0",
+ "Whether header is shown."},
+ {"-describe",
+ ARG_INT32,
+ "0",
+ "Whether description will be shown."},
+ {"-b",
+ ARG_INT32,
+ "0",
+ "The beginning frame 0-based."},
+ {"-e",
+ ARG_INT32,
+ "2147483647",
+ "The ending frame."},
+ {"-f",
+ ARG_STRING,
+ NULL,
+ "Input feature file."},
+ {NULL, ARG_INT32, NULL, NULL}
+};
+
+int read_cep(char const *file, float ***cep, int *nframes, int numcep);
+
+int
+main(int argc, char *argv[])
+{
+ int i, j, offset;
+ int32 noframe, vsize, dsize, column;
+ int32 frm_begin, frm_end;
+ int is_header, is_describe;
+ float *z, **cep;
+ char const *cepfile;
+
+ print_appl_info(argv[0]);
+ cmd_ln_appl_enter(argc, argv, "default.arg", arg);
+
+ vsize = cmd_ln_int32("-i");
+ dsize = cmd_ln_int32("-d");
+ frm_begin = cmd_ln_int32("-b");
+ frm_end = cmd_ln_int32("-e");
+ is_header = cmd_ln_int32("-header");
+ is_describe = cmd_ln_int32("-describe");
+
+ if (vsize < 0)
+ E_FATAL("-i : Input vector size should be larger than 0.\n");
+ if (dsize < 0)
+ E_FATAL("-d : Column size should be larger than 0\n");
+ if (frm_begin < 0)
+ E_FATAL("-b : Beginning frame should be larger than 0\n");
+ /* The following condition is redundant
+ * if (frm_end < 0) E_FATAL("-e : Ending frame should be larger than 0\n");
+ */
+ if (frm_begin >= frm_end)
+ E_FATAL
+ ("Ending frame (-e) should be larger than beginning frame (-b).\n");
+
+ if ((cepfile = cmd_ln_str("-f")) == NULL) {
+ E_FATAL("Input file was not specified with (-f)\n");
+ }
+ if (read_cep(cepfile, &cep, &noframe, vsize) == IO_ERR)
+ E_FATAL("ERROR opening %s for reading\n", cepfile);
+
+ z = cep[0];
+
+ offset = 0;
+ column = (vsize > dsize) ? dsize : vsize;
+ frm_end = (frm_end > noframe) ? noframe : frm_end;
+
+ E_INFO("Displaying %d out of %d columns per frame\n", column, vsize);
+ E_INFO("Total %d frames\n\n", noframe);
+
+ /* This part should be moved to a special library if this file is
+ longer than 300 lines. */
+
+ if (is_header) {
+ if (is_describe) {
+ printf("\n%6s", "frame#:");
+ }
+
+ for (j = 0; j < column; ++j) {
+ printf("%3s%3d%s ", "c[", j, "]");
+ }
+ printf("\n");
+ }
+
+ offset += frm_begin * vsize;
+ for (i = frm_begin; i < frm_end; ++i) {
+ if (is_describe) {
+ printf("%6d:", i);
+ }
+ for (j = 0; j < column; ++j)
+ printf("%7.3f ", z[offset + j]);
+ printf("\n");
+
+ offset += vsize;
+ }
+ fflush(stdout);
+ cmd_ln_appl_exit();
+ ckd_free_2d(cep);
+
+ return (IO_SUCCESS);
+
+}
+
+int
+read_cep(char const *file, float ***cep, int *numframes, int cepsize)
+{
+ FILE *fp;
+ int n_float;
+ struct stat statbuf;
+ int i, n, byterev, sf, ef;
+ float32 **mfcbuf;
+
+ if (stat_retry(file, &statbuf) < 0) {
+ printf("stat(%s) failed\n", file);
+ return IO_ERR;
+ }
+
+ if ((fp = fopen(file, "rb")) == NULL) {
+ printf("Failed to open '%s' for reading: %s\n", file, strerror(errno));
+ return IO_ERR;
+ }
+
+ /* Read #floats in header */
+ if (fread(&n_float, sizeof(int), 1, fp) != 1) {
+ fclose(fp);
+ return IO_ERR;
+ }
+
+ /* Check if n_float matches file size */
+ byterev = FALSE;
+ if ((int) (n_float * sizeof(float) + 4) != statbuf.st_size) {
+ n = n_float;
+ SWAP_INT32(&n);
+
+ if ((int) (n * sizeof(float) + 4) != statbuf.st_size) {
+ printf
+ ("Header size field: %d(%08x); filesize: %d(%08x)\n",
+ n_float, n_float, (int) statbuf.st_size,
+ (int) statbuf.st_size);
+ fclose(fp);
+ return IO_ERR;
+ }
+
+ n_float = n;
+ byterev = TRUE;
+ }
+ if (n_float <= 0) {
+ printf("Header size field: %d\n", n_float);
+ fclose(fp);
+ return IO_ERR;
+ }
+
+ /* n = #frames of input */
+ n = n_float / cepsize;
+ if (n * cepsize != n_float) {
+ printf("Header size field: %d; not multiple of %d\n",
+ n_float, cepsize);
+ fclose(fp);
+ return IO_ERR;
+ }
+ sf = 0;
+ ef = n;
+
+ mfcbuf = (float **) ckd_calloc_2d(n, cepsize, sizeof(float32));
+
+ /* Read mfc data and byteswap if necessary */
+ n_float = n * cepsize;
+ if ((int) fread(mfcbuf[0], sizeof(float), n_float, fp) != n_float) {
+ printf("Error reading mfc data\n");
+ fclose(fp);
+ return IO_ERR;
+ }
+ if (byterev) {
+ for (i = 0; i < n_float; i++)
+ SWAP_FLOAT32(&(mfcbuf[0][i]));
+ }
+ fclose(fp);
+
+ *numframes = n;
+ *cep = mfcbuf;
+ return IO_SUCCESS;
+}
+
+/** Silvio Moioli: Windows CE/Mobile entry point added. */
+#if defined(_WIN32_WCE)
+#pragma comment(linker,"/entry:mainWCRTStartup")
+
+//Windows Mobile has the Unicode main only
+int wmain(int32 argc, wchar_t *wargv[]) {
+ char** argv;
+ size_t wlen;
+ size_t len;
+ int i;
+
+ argv = malloc(argc*sizeof(char*));
+ for (i=0; i<argc; i++){
+ wlen = lstrlenW(wargv[i]);
+ len = wcstombs(NULL, wargv[i], wlen);
+ argv[i] = malloc(len+1);
+ wcstombs(argv[i], wargv[i], wlen);
+ }
+
+ //assuming ASCII parameters
+ return main(argc, argv);
+}
+#endif
--- /dev/null
+bin_PROGRAMS = sphinx_fe
+
+sphinx_fe_SOURCES = sphinx_fe.c
+
+noinst_HEADERS = cmd_ln_defn.h \
+ sphinx_wave2feat.h
+
+sphinx_fe_LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ @SNDFILE_LIBS@
+
+INCLUDES = -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/src/libsphinxbase/fe \
+ @SNDFILE_CFLAGS@
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = sphinx_fe$(EXEEXT)
+subdir = src/sphinx_fe
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_sphinx_fe_OBJECTS = sphinx_fe.$(OBJEXT)
+sphinx_fe_OBJECTS = $(am_sphinx_fe_OBJECTS)
+sphinx_fe_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(sphinx_fe_SOURCES)
+DIST_SOURCES = $(sphinx_fe_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+sphinx_fe_SOURCES = sphinx_fe.c
+noinst_HEADERS = cmd_ln_defn.h \
+ sphinx_wave2feat.h
+
+sphinx_fe_LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ @SNDFILE_LIBS@
+
+INCLUDES = -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/src/libsphinxbase/fe \
+ @SNDFILE_CFLAGS@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sphinx_fe/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/sphinx_fe/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+sphinx_fe$(EXEEXT): $(sphinx_fe_OBJECTS) $(sphinx_fe_DEPENDENCIES)
+ @rm -f sphinx_fe$(EXEEXT)
+ $(LINK) $(sphinx_fe_OBJECTS) $(sphinx_fe_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sphinx_fe.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS
+
+# 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:
--- /dev/null
+/* ====================================================================
+ * Copyright (c) 1998-2000 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/*********************************************************************
+ *
+ * File: cmd_ln_defn.h
+ *
+ * Description:
+ * Command line argument definition
+ *
+ * Author:
+ *
+ *********************************************************************/
+
+#ifndef CMD_LN_DEFN_H
+#define CMD_LN_DEFN_H
+
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/fe.h>
+
+const char helpstr[] =
+ "Description: \n\
+Extract acoustic features form from audio file.\n\
+\n\
+The main parameters that affect the final output, with typical values, are:\n\
+\n\
+samprate, typically 8000, 11025, or 16000\n\
+lowerf, 130, 200, 130, for the respective sampling rates above\n\
+upperf, 3700, 5200, 6800, for the respective sampling rates above\n\
+nfilt, 31, 37, 40, for the respective sampling rates above\n\
+nfft, 256 or 512\n\
+format, raw or nist or mswav\n\
+\"";
+
+const char examplestr[] =
+ "Example: \n\
+This example creates a cepstral file named \"output.mfc\" from an input audio file named \"input.raw\", which is a raw audio file (no header information), which was originally sampled at 16kHz. \n\
+\n\
+sphinx_fe -i input.raw \n\
+ -o output.mfc \n\
+ -input_endian little \n\
+ -samprate 16000 \n\
+ -lowerf 130 \n\
+ -upperf 6800 \n\
+ -nfilt 40 \n\
+ -nfft 512";
+
+static arg_t defn[] = {
+ { "-help",
+ ARG_BOOLEAN,
+ "no",
+ "Shows the usage of the tool"},
+
+ { "-example",
+ ARG_BOOLEAN,
+ "no",
+ "Shows example of how to use the tool"},
+
+ waveform_to_cepstral_command_line_macro(),
+
+ { "-argfile",
+ ARG_STRING,
+ NULL,
+ "Argument file (e.g. feat.params from an acoustic model) to read parameters from. This will override anything set in other command line arguments." },
+
+ { "-i",
+ ARG_STRING,
+ NULL,
+ "Single audio input file" },
+
+ { "-o",
+ ARG_STRING,
+ NULL,
+ "Single cepstral output file" },
+
+ { "-c",
+ ARG_STRING,
+ NULL,
+ "Control file for batch processing" },
+
+ { "-nskip",
+ ARG_INT32,
+ "0",
+ "If a control file was specified, the number of utterances to skip at the head of the file" },
+
+ { "-runlen",
+ ARG_INT32,
+ "-1",
+ "If a control file was specified, the number of utterances to process, or -1 for all" },
+
+ { "-part",
+ ARG_INT32,
+ "0",
+ "Index of the part to run (supersedes -nskip and -runlen if non-zero)" },
+
+ { "-npart",
+ ARG_INT32,
+ "0",
+ "Number of parts to run in (supersedes -nskip and -runlen if non-zero)" },
+
+ { "-di",
+ ARG_STRING,
+ NULL,
+ "Input directory, input file names are relative to this, if defined" },
+
+ { "-ei",
+ ARG_STRING,
+ NULL,
+ "Input extension to be applied to all input files" },
+
+ { "-do",
+ ARG_STRING,
+ NULL,
+ "Output directory, output files are relative to this" },
+
+ { "-eo",
+ ARG_STRING,
+ NULL,
+ "Output extension to be applied to all output files" },
+
+ { "-build_outdirs",
+ ARG_BOOLEAN,
+ "yes",
+ "Create missing subdirectories in output directory" },
+
+ { "-sph2pipe",
+ ARG_BOOLEAN,
+ "no",
+ "Input is NIST sphere (possibly with Shorten), use sph2pipe to convert" },
+
+ { "-nist",
+ ARG_BOOLEAN,
+ "no",
+ "Defines input format as NIST sphere" },
+
+ { "-raw",
+ ARG_BOOLEAN,
+ "no",
+ "Defines input format as raw binary data" },
+
+ { "-mswav",
+ ARG_BOOLEAN,
+ "no",
+ "Defines input format as Microsoft Wav (RIFF)" },
+
+#ifdef HAVE_SNDFILE_H
+ { "-sndfile",
+ ARG_BOOLEAN,
+ "no",
+ "Use libsndfile to read input data" },
+#endif
+
+ { "-nchans",
+ ARG_INT32,
+ "1",
+ "Number of channels of data (interlaced samples assumed)" },
+
+ { "-whichchan",
+ ARG_INT32,
+ "0",
+ "Channel to process (numbered from 1), or 0 to mix all channels" },
+
+ { "-ofmt",
+ ARG_STRING,
+ "sphinx",
+ "Format of output files - one of sphinx, htk, text." },
+
+ { "-mach_endian",
+ ARG_STRING,
+#ifdef WORDS_BIGENDIAN
+ "big",
+#else
+ "little",
+#endif
+ "Endianness of machine, big or little" },
+
+ { "-blocksize",
+ ARG_INT32,
+ "2048",
+ "Number of samples to read at a time." },
+
+ { "-spec2cep",
+ ARG_BOOLEAN,
+ "no",
+ "Input is log spectral files, output is cepstral files" },
+
+ { "-cep2spec",
+ ARG_BOOLEAN,
+ "no",
+ "Input is cepstral files, output is log spectral files" },
+
+ { NULL, 0, NULL, NULL }
+};
+
+
+#define CMD_LN_DEFN_H
+
+#endif /* CMD_LN_DEFN_H */
+\f
+/*
+ * Log record. Maintained by RCS.
+ *
+ * $Log: cmd_ln_defn.h,v $
+ * Revision 1.7 2006/02/25 00:53:48 egouvea
+ * Added the flag "-seed". If dither is being used and the seed is less
+ * than zero, the random number generator is initialized with time(). If
+ * it is at least zero, it's initialized with the provided seed. This way
+ * we have the benefit of having dither, and the benefit of being
+ * repeatable.
+ *
+ * This is consistent with what sphinx3 does. Well, almost. The random
+ * number generator is still what the compiler provides.
+ *
+ * Also, moved fe_init_params to fe_interface.c, so one can initialize a
+ * variable of type param_t with meaningful values.
+ *
+ * Revision 1.6 2006/02/17 00:31:34 egouvea
+ * Removed switch -melwarp. Changed the default for window length to
+ * 0.025625 from 0.256 (so that a window at 16kHz sampling rate has
+ * exactly 410 samples). Cleaned up include's. Replaced some E_FATAL()
+ * with E_WARN() and return.
+ *
+ * Revision 1.5 2006/02/16 00:18:26 egouvea
+ * Implemented flexible warping function. The user can specify at run
+ * time which of several shapes they want to use. Currently implemented
+ * are an affine function (y = ax + b), an inverse linear (y = a/x) and a
+ * piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
+ * Nyquist frequency matches in both scales.
+ *
+ * Added two switches, -warp_type and -warp_params. The first specifies
+ * the type, which valid values:
+ *
+ * -inverse or inverse_linear
+ * -linear or affine
+ * -piecewise or piecewise_linear
+ *
+ * The inverse_linear is the same as implemented by EHT. The -mel_warp
+ * switch was kept for compatibility (maybe remove it in the
+ * future?). The code is compatible with EHT's changes: cepstra created
+ * from code after his changes should be the same as now. Scripts that
+ * worked with his changes should work now without changes. Tested a few
+ * cases, same results.
+ *
+ * Revision 1.4 2006/02/14 20:56:54 eht
+ * Implement an argument -melwarp that changes the standard mel-scale
+ * equation from:
+ * M(f) = 2595 * log10( 1 + f/700 )
+ * to:
+ * M(f,w) = 2595 * log10( 1 + f/(700*w))
+ *
+ * So, 1.0 means no warp, w > 1.0 means linear compression w < 1.0 means
+ * linear expansion.
+ *
+ * Implement argument -nskip and -runlen arguments so that a subset of the
+ * utterances in the control file can be executed. Allows a simple
+ * distribution of wave2feat processing over N processors.
+ *
+ * Revision 1.3 2005/05/19 21:21:55 egouvea
+ * Bug #1176394: example bug
+ *
+ * Revision 1.2 2004/11/23 04:14:06 egouvea
+ * Fixed bug in cmd_ln.c in which a wrong boolean argument led into an
+ * infinite loop, and fixed the help and example strings, getting rid of
+ * spaces, so that the appearance is better.
+ *
+ * Revision 1.1 2004/09/09 17:59:30 egouvea
+ * Adding missing files to wave2feat
+ *
+ *
+ *
+ */
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1996-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SNDFILE_H
+#include <sndfile.h>
+#endif
+
+#include <sphinxbase/fe.h>
+#include <sphinxbase/strfuncs.h>
+#include <sphinxbase/pio.h>
+#include <sphinxbase/filename.h>
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/byteorder.h>
+#include <sphinxbase/hash_table.h>
+
+#include "sphinx_wave2feat.h"
+#include "cmd_ln_defn.h"
+
+typedef struct audio_type_s {
+ char const *name;
+ int (*detect)(sphinx_wave2feat_t *wtf, char const *infile);
+ int (*decode)(sphinx_wave2feat_t *wtf);
+} audio_type_t;
+
+typedef struct output_type_s {
+ char const *name;
+ int (*output_header)(sphinx_wave2feat_t *wtf, int nfloat);
+ int (*output_frames)(sphinx_wave2feat_t *wtf, mfcc_t **frames, int nfr);
+} output_type_t;
+
+struct sphinx_wave2feat_s {
+ int refcount; /**< Reference count. */
+ cmd_ln_t *config; /**< Configuration parameters. */
+ fe_t *fe; /**< Front end object. */
+ char *infile; /**< Path to input file. */
+ char *outfile; /**< Path to output file. */
+ FILE *infh; /**< Input file handle. */
+ FILE *outfh; /**< Output file handle. */
+ short *audio; /**< Audio buffer. */
+ mfcc_t **feat; /**< Feature buffer. */
+ int blocksize; /**< Size of audio buffer. */
+ int featsize; /**< Size of feature buffer. */
+ int veclen; /**< Length of each output vector. */
+ int in_veclen; /**< Length of each input vector (for cep<->spec). */
+ int byteswap; /**< Whether byteswapping is necessary. */
+#ifdef HAVE_SNDFILE_H
+ SNDFILE *insfh; /**< Input sndfile handle. */
+#endif
+ output_type_t const *ot;/**< Output type object. */
+};
+
+/** RIFF 44-byte header structure for MS wav files. */
+typedef struct RIFFHeader{
+ char rifftag[4]; /* "RIFF" string */
+ int32 TotalLength; /* Total length */
+ char wavefmttag[8]; /* "WAVEfmt " string (note space after 't') */
+ int32 RemainingLength; /* Remaining length */
+ int16 data_format; /* data format tag, 1 = PCM */
+ int16 numchannels; /* Number of channels in file */
+ int32 SamplingFreq; /* Sampling frequency */
+ int32 BytesPerSec; /* Average bytes/sec */
+ int16 BlockAlign; /* Block align */
+ int16 BitsPerSample; /* 8 or 16 bit */
+ char datatag[4]; /* "data" string */
+ int32 datalength; /* Raw data length */
+} MSWAV_hdr;
+
+/**
+ * Detect RIFF file and parse its header if detected.
+ *
+ * @return TRUE if it's a RIFF file, FALSE if not, -1 if an error occurred.
+ */
+static int
+detect_riff(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ FILE *fh;
+ MSWAV_hdr hdr;
+
+ if ((fh = fopen(infile, "rb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s", infile);
+ return -1;
+ }
+ if (fread(&hdr, sizeof(hdr), 1, fh) != 1) {
+ E_ERROR_SYSTEM("Failed to read RIFF header");
+ fclose(fh);
+ return -1;
+ }
+ /* Make sure it is actually a RIFF file. */
+ if (0 != memcmp(hdr.rifftag, "RIFF", 4)) {
+ fclose(fh);
+ return FALSE;
+ }
+
+ /* Get relevant information. */
+ cmd_ln_set_int32_r(wtf->config, "-nchans", hdr.numchannels);
+ cmd_ln_set_float32_r(wtf->config, "-samprate", hdr.SamplingFreq);
+ if (wtf->infile)
+ ckd_free(wtf->infile);
+ wtf->infile = ckd_salloc(infile);
+ wtf->infh = fh;
+
+ return TRUE;
+}
+
+static int
+open_nist_file(sphinx_wave2feat_t *wtf, char const *infile, FILE **out_fh)
+{
+ char nist[7];
+ lineiter_t *li;
+ FILE *fh;
+
+ if ((fh = fopen(infile, "rb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s", infile);
+ return -1;
+ }
+ if (fread(&nist, 1, 7, fh) != 7) {
+ E_ERROR_SYSTEM("Failed to read NIST header");
+ fclose(fh);
+ return -1;
+ }
+ /* Is this actually a NIST file? */
+ if (0 != strncmp(nist, "NIST_1A", 7)) {
+ fclose(fh);
+ return FALSE;
+ }
+ /* Rewind, parse lines. */
+ fseek(fh, 0, SEEK_SET);
+ for (li = lineiter_start(fh); li; li = lineiter_next(li)) {
+ char **words;
+ int nword;
+
+ string_trim(li->buf, STRING_BOTH);
+ if (strlen(li->buf) == 0) {
+ lineiter_free(li);
+ break;
+ }
+ nword = str2words(li->buf, NULL, 0);
+ if (nword != 3)
+ continue;
+ words = ckd_calloc(nword, sizeof(*words));
+ str2words(li->buf, words, nword);
+ if (0 == strcmp(words[0], "sample_rate")) {
+ cmd_ln_set_float32_r(wtf->config, "-samprate", atof_c(words[2]));
+ }
+ if (0 == strcmp(words[0], "channel_count")) {
+ cmd_ln_set_int32_r(wtf->config, "-nchans", atoi(words[2]));
+ }
+ if (0 == strcmp(words[0], "sample_byte_format")) {
+ cmd_ln_set_str_r(wtf->config, "-input_endian",
+ (0 == strcmp(words[2], "10")) ? "big" : "little");
+ }
+ ckd_free(words);
+ }
+
+ fseek(fh, 1024, SEEK_SET);
+ if (out_fh)
+ *out_fh = fh;
+ else
+ fclose(fh);
+ return TRUE;
+}
+
+#ifdef HAVE_POPEN
+static int
+detect_sph2pipe(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ FILE *fh;
+ char *cmdline;
+ int rv;
+
+ /* Determine if it's NIST file and get parameters. */
+ if ((rv = open_nist_file(wtf, infile, NULL)) != TRUE)
+ return rv;
+
+ /* Now popen it with sph2pipe. */
+ cmdline = string_join("sph2pipe -f raw '", infile, "'", NULL);
+ if ((fh = popen(cmdline, "r")) == NULL) {
+ E_ERROR_SYSTEM("Failed to popen(\"sph2pipe -f raw '%s'\")", infile);
+ ckd_free(cmdline);
+ return -1;
+ }
+
+ if (wtf->infile)
+ ckd_free(wtf->infile);
+ wtf->infile = ckd_salloc(infile);
+ wtf->infh = fh;
+ return TRUE;
+}
+#else /* !HAVE_POPEN */
+static int
+detect_sph2pipe(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ E_ERROR("popen() not available, cannot run sph2pipe\n");
+ return -1;
+}
+#endif /* !HAVE_POPEN */
+
+/**
+ * Detect NIST file and parse its header if detected.
+ *
+ * @return TRUE if it's a NIST file, FALSE if not, -1 if an error occurred.
+ */
+static int
+detect_nist(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ FILE *fh;
+ int rv;
+
+ if ((rv = open_nist_file(wtf, infile, &fh)) != TRUE)
+ return rv;
+ if (wtf->infile)
+ ckd_free(wtf->infile);
+ wtf->infile = ckd_salloc(infile);
+ wtf->infh = fh;
+ return TRUE;
+}
+
+
+/**
+ * Default "detection" function, just opens the file and keeps the
+ * default configuration parameters.
+ *
+ * @return TRUE, or -1 on error.
+ */
+static int
+detect_raw(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ FILE *fh;
+
+ if ((fh = fopen(infile, "rb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s", infile);
+ return -1;
+ }
+ if (wtf->infile)
+ ckd_free(wtf->infile);
+ wtf->infile = ckd_salloc(infile);
+ wtf->infh = fh;
+ return TRUE;
+}
+
+/**
+ * "Detect" Sphinx MFCC files, meaning verify their lousy headers, and
+ * set up some parameters from the config object.
+ *
+ * @return TRUE, or -1 on error.
+ */
+static int
+detect_sphinx_mfc(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ FILE *fh;
+ int32 len;
+ long flen;
+
+ if ((fh = fopen(infile, "rb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s", infile);
+ return -1;
+ }
+ if (fread(&len, 4, 1, fh) != 1) {
+ E_ERROR_SYSTEM("Failed to read header from %s\n", infile);
+ return -1;
+ }
+ fseek(fh, 0, SEEK_END);
+ flen = ftell(fh);
+
+ /* figure out whether to byteswap */
+ flen = (flen / 4) - 1;
+ if (flen != len) {
+ /* First make sure this is an endianness problem, otherwise fail. */
+ SWAP_INT32(&len);
+ if (flen != len) {
+ SWAP_INT32(&len);
+ E_ERROR("Mismatch in header/file lengths: 0x%08x vs 0x%08x\n",
+ len, flen);
+ return -1;
+ }
+ /* Set the input endianness to the opposite of the machine endianness... */
+ cmd_ln_set_str_r(wtf->config, "-input_endian",
+ (0 == strcmp("big", cmd_ln_str_r(wtf->config, "-mach_endian"))
+ ? "little" : "big"));
+ }
+
+ fseek(fh, 4, SEEK_SET);
+ if (wtf->infile)
+ ckd_free(wtf->infile);
+ wtf->infile = ckd_salloc(infile);
+ wtf->infh = fh;
+ if (cmd_ln_boolean_r(wtf->config, "-spec2cep")) {
+ wtf->in_veclen = cmd_ln_int32_r(wtf->config, "-nfilt");
+ }
+ else if (cmd_ln_boolean_r(wtf->config, "-cep2spec")) {
+ wtf->in_veclen = cmd_ln_int32_r(wtf->config, "-ncep");
+ wtf->veclen = cmd_ln_int32_r(wtf->config, "-nfilt");
+ }
+ else {
+ /* Should not happen. */
+ E_ERROR("Sphinx MFCC file reading requested but -spec2cep/-cep2spec not given\n");
+ assert(FALSE);
+ }
+
+ return TRUE;
+}
+
+int
+mixnpick_channels(int16 *buf, int32 nsamp, int32 nchans, int32 whichchan)
+{
+ int i, j;
+
+ if (whichchan > 0) {
+ for (i = whichchan - 1; i < nsamp; i += nchans)
+ buf[i/nchans] = buf[i];
+ }
+ else {
+ for (i = 0; i < nsamp; i += nchans) {
+ float64 tmp = 0.0;
+ for (j = 0; j < nchans && i + j < nsamp; ++j) {
+ tmp += buf[i + j];
+ }
+ buf[i/nchans] = (int16)(tmp / nchans);
+ }
+ }
+ return i/nchans;
+}
+
+#ifdef HAVE_SNDFILE_H
+/**
+ * Detect a file supported by libsndfile and parse its header if detected.
+ *
+ * @return TRUE if it's a supported file, FALSE if not, -1 if an error occurred.
+ */
+static int
+detect_sndfile(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ SNDFILE *sf;
+ SF_INFO sfinfo;
+
+ memset(&sfinfo, 0, sizeof(sfinfo));
+ /* We let other detectors catch I/O errors, since there is
+ no way to tell them from format errors when opening :( */
+ if ((sf = sf_open(infile, SFM_READ, &sfinfo)) == NULL) {
+ return FALSE;
+ }
+ /* Get relevant information. */
+ cmd_ln_set_int32_r(wtf->config, "-nchans", sfinfo.channels);
+ cmd_ln_set_float32_r(wtf->config, "-samprate", sfinfo.samplerate);
+ if (wtf->infile)
+ ckd_free(wtf->infile);
+ wtf->infile = ckd_salloc(infile);
+ wtf->insfh = sf;
+ wtf->infh = NULL;
+
+ return TRUE;
+}
+
+/**
+ * Process PCM audio from a libsndfile file. FIXME: looks a lot like
+ * decode_pcm! Also needs stereo support (as does decode_pcm).
+ */
+static int
+decode_sndfile(sphinx_wave2feat_t *wtf)
+{
+ size_t nsamp;
+ int32 nfr, nchans, whichchan;
+ int nfloat, n;
+
+ nchans = cmd_ln_int32_r(wtf->config, "-nchans");
+ whichchan = cmd_ln_int32_r(wtf->config, "-whichchan");
+ fe_start_utt(wtf->fe);
+ nfloat = 0;
+ while ((nsamp = sf_read_short(wtf->insfh,
+ wtf->audio,
+ wtf->blocksize)) != 0) {
+ int16 const *inspeech;
+ size_t nvec;
+
+ /* Mix or pick channels. */
+ if (nchans > 1)
+ nsamp = mixnpick_channels(wtf->audio, nsamp, nchans, whichchan);
+
+ inspeech = wtf->audio;
+ nvec = wtf->featsize;
+ /* Consume all samples. */
+ while (nsamp) {
+ nfr = nvec;
+ fe_process_frames(wtf->fe, &inspeech, &nsamp, wtf->feat, &nfr);
+ if (nfr) {
+ if ((n = (*wtf->ot->output_frames)(wtf, wtf->feat, nfr)) < 0)
+ return -1;
+ nfloat += n;
+ }
+ }
+ inspeech = wtf->audio;
+ }
+ /* Now process any leftover audio frames. */
+ fe_end_utt(wtf->fe, wtf->feat[0], &nfr);
+ if (nfr) {
+ if ((n = (*wtf->ot->output_frames)(wtf, wtf->feat, nfr)) < 0)
+ return -1;
+ nfloat += n;
+ }
+
+ sf_close(wtf->insfh);
+ wtf->insfh = NULL;
+ return nfloat;
+}
+#endif /* HAVE_SNDFILE_H */
+
+/**
+ * Process PCM audio from a filehandle. Assume that wtf->infh is
+ * positioned just after the file header.
+ */
+static int
+decode_pcm(sphinx_wave2feat_t *wtf)
+{
+ size_t nsamp;
+ int32 nfr, nchans, whichchan;
+ int nfloat, n;
+
+ nchans = cmd_ln_int32_r(wtf->config, "-nchans");
+ whichchan = cmd_ln_int32_r(wtf->config, "-whichchan");
+ fe_start_utt(wtf->fe);
+ nfloat = 0;
+ while ((nsamp = fread(wtf->audio, 2, wtf->blocksize, wtf->infh)) != 0) {
+ size_t nvec;
+ int16 const *inspeech;
+
+ /* Byteswap stuff here if necessary. */
+ if (wtf->byteswap) {
+ for (n = 0; n < nsamp; ++n)
+ SWAP_INT16(wtf->audio + n);
+ }
+
+ /* Mix or pick channels. */
+ if (nchans > 1)
+ nsamp = mixnpick_channels(wtf->audio, nsamp, nchans, whichchan);
+
+ inspeech = wtf->audio;
+ nvec = wtf->featsize;
+ /* Consume all samples. */
+ while (nsamp) {
+ nfr = nvec;
+ fe_process_frames(wtf->fe, &inspeech, &nsamp, wtf->feat, &nfr);
+ if (nfr) {
+ if ((n = (*wtf->ot->output_frames)(wtf, wtf->feat, nfr)) < 0)
+ return -1;
+ nfloat += n;
+ }
+ }
+ inspeech = wtf->audio;
+ }
+ /* Now process any leftover audio frames. */
+ fe_end_utt(wtf->fe, wtf->feat[0], &nfr);
+ if (nfr) {
+ if ((n = (*wtf->ot->output_frames)(wtf, wtf->feat, nfr)) < 0)
+ return -1;
+ nfloat += n;
+ }
+
+ if (fclose(wtf->infh) == EOF)
+ E_ERROR_SYSTEM("Failed to close input file");
+ wtf->infh = NULL;
+ return nfloat;
+}
+
+/**
+ * Process Sphinx MFCCs/logspectra from a filehandle. Assume that
+ * wtf->infh is positioned just after the file header.
+ */
+static int
+decode_sphinx_mfc(sphinx_wave2feat_t *wtf)
+{
+ int nfloat = 0, n;
+ int featsize = wtf->featsize;
+
+ /* If the input vector length is less than the output length, we
+ * need to do this one frame at a time, because there's empty
+ * space at the end of each vector in wtf->feat. */
+ if (wtf->in_veclen < wtf->veclen)
+ featsize = 1;
+ while ((n = fread(wtf->feat[0], sizeof(**wtf->feat),
+ featsize * wtf->in_veclen, wtf->infh)) != 0) {
+ int i, nfr = n / wtf->in_veclen;
+ if (n % wtf->in_veclen) {
+ E_ERROR("Size of file %d not a multiple of veclen %d\n",
+ n, wtf->in_veclen);
+ return -1;
+ }
+ /* Byteswap stuff here if necessary. */
+ if (wtf->byteswap) {
+ for (i = 0; i < n; ++i)
+ SWAP_FLOAT32(wtf->feat[0] + i);
+ }
+ fe_float_to_mfcc(wtf->fe, (float32 **)wtf->feat, wtf->feat, nfr);
+ for (i = 0; i < nfr; ++i) {
+ if (cmd_ln_boolean_r(wtf->config, "-spec2cep")) {
+ if (0 == strcmp(cmd_ln_str_r(wtf->config, "-transform"), "legacy"))
+ fe_logspec_to_mfcc(wtf->fe, wtf->feat[i], wtf->feat[i]);
+ else
+ fe_logspec_dct2(wtf->fe, wtf->feat[i], wtf->feat[i]);
+ }
+ else if (cmd_ln_boolean_r(wtf->config, "-cep2spec")) {
+ fe_mfcc_dct3(wtf->fe, wtf->feat[i], wtf->feat[i]);
+ }
+ }
+ if ((n = (*wtf->ot->output_frames)(wtf, wtf->feat, nfr)) < 0)
+ return -1;
+ nfloat += n;
+ }
+
+ if (fclose(wtf->infh) == EOF)
+ E_ERROR_SYSTEM("Failed to close input file");
+ wtf->infh = NULL;
+ return nfloat;
+}
+
+static const audio_type_t types[] = {
+#ifdef HAVE_SNDFILE_H
+ { "-sndfile", &detect_sndfile, &decode_sndfile },
+#endif
+ { "-mswav", &detect_riff, &decode_pcm },
+ { "-nist", &detect_nist, &decode_pcm },
+ { "-raw", &detect_raw, &decode_pcm },
+ { "-sph2pipe", &detect_sph2pipe, &decode_pcm }
+};
+static const int ntypes = sizeof(types)/sizeof(types[0]);
+static const audio_type_t mfcc_type = {
+ "sphinx_mfc", &detect_sphinx_mfc, &decode_sphinx_mfc
+};
+
+/**
+ * Output sphinx format "header"
+ *
+ * @return 0 for success, <0 for error.
+ */
+static int
+output_header_sphinx(sphinx_wave2feat_t *wtf, int32 nfloat)
+{
+ if (fwrite(&nfloat, 4, 1, wtf->outfh) != 1) {
+ E_ERROR_SYSTEM("Failed to write to %s", wtf->outfile);
+ return -1;
+ }
+ return 0;
+}
+
+/**
+ * Output frames in sphinx format.
+ *
+ * @return 0 for success, <0 for error.
+ */
+static int
+output_frames_sphinx(sphinx_wave2feat_t *wtf, mfcc_t **frames, int nfr)
+{
+ int i, nfloat = 0;
+
+ fe_mfcc_to_float(wtf->fe, frames, (float32 **)frames, nfr);
+ for (i = 0; i < nfr; ++i) {
+ if (fwrite(frames[i], sizeof(float32), wtf->veclen, wtf->outfh) != wtf->veclen) {
+ E_ERROR_SYSTEM("Writing %d values to %s failed",
+ wtf->veclen, wtf->outfile);
+ return -1;
+ }
+ nfloat += wtf->veclen;
+ }
+ return nfloat;
+}
+
+typedef enum htk_feature_kind_e {
+ WAVEFORM = 0, /* PCM audio (rarely used) */
+ LPC = 1, /* LPC filter coefficients */
+ LPCREFC = 2, /* LPC reflection coefficients */
+ LPCEPSTRA = 3, /* LPC-based cepstral coefficients */
+ LPCDELCEP = 4, /* LPCC plus deltas */
+ IREFC = 5, /* 16-bit integer LPC reflection coefficients */
+ MFCC = 6, /* MFCCs */
+ FBANK = 7, /* Log mel spectrum */
+ MELSPEC = 8, /* Linear mel spectrum */
+ USER = 9, /* User defined */
+ DISCRETE = 10, /* Vector quantized data */
+ PLP = 11 /* PLP coefficients */
+} htk_feature_kind_t;
+
+typedef enum htk_feature_flag_e {
+ _E = 0000100, /* has energy */
+ _N = 0000200, /* absolute energy supressed */
+ _D = 0000400, /* has delta coefficients */
+ _A = 0001000, /* has acceleration (delta-delta) coefficients */
+ _C = 0002000, /* is compressed */
+ _Z = 0004000, /* has zero mean static coefficients (i.e. CMN) */
+ _K = 0010000, /* has CRC checksum */
+ _O = 0020000, /* has 0th cepstral coefficient */
+ _V = 0040000, /* has VQ data */
+ _T = 0100000 /* has third differential coefficients */
+} htk_feature_flag_t;
+
+/**
+ * Output HTK format header.
+ */
+static int
+output_header_htk(sphinx_wave2feat_t *wtf, int32 nfloat)
+{
+ int32 samp_period;
+ int16 samp_size;
+ int16 param_kind;
+ int swap = FALSE;
+
+ /* HTK files are big-endian. */
+ if (0 == strcmp("little", cmd_ln_str_r(wtf->config, "-mach_endian")))
+ swap = TRUE;
+ /* Same file size thing as in Sphinx files (I think) */
+ if (swap) SWAP_INT32(&nfloat);
+ if (fwrite(&nfloat, 4, 1, wtf->outfh) != 1)
+ return -1;
+ /* Sample period in 100ns units. */
+ samp_period = (int32)(1e+7 / cmd_ln_float32_r(wtf->config, "-frate"));
+ if (swap) SWAP_INT32(&samp_period);
+ if (fwrite(&samp_period, 4, 1, wtf->outfh) != 1)
+ return -1;
+ /* Sample size - veclen * sizeof each sample. */
+ samp_size = wtf->veclen * 4;
+ if (swap) SWAP_INT16(&samp_size);
+ if (fwrite(&samp_size, 2, 1, wtf->outfh) != 1)
+ return -1;
+ /* Format and flags. */
+ if (cmd_ln_boolean_r(wtf->config, "-logspec")
+ || cmd_ln_boolean_r(wtf->config, "-cep2spec"))
+ param_kind = FBANK; /* log mel-filter bank outputs */
+ else
+ param_kind = MFCC | _O; /* MFCC + CEP0 (note reordering...) */
+ if (swap) SWAP_INT16(¶m_kind);
+ if (fwrite(¶m_kind, 2, 1, wtf->outfh) != 1)
+ return -1;
+
+ return 0;
+}
+
+/**
+ * Output frames in HTK format.
+ */
+static int
+output_frames_htk(sphinx_wave2feat_t *wtf, mfcc_t **frames, int nfr)
+{
+ int i, j, swap, htk_reorder, nfloat = 0;
+
+ fe_mfcc_to_float(wtf->fe, frames, (float32 **)frames, nfr);
+ /* This is possibly inefficient, but probably not a big deal. */
+ swap = (0 == strcmp("little", cmd_ln_str_r(wtf->config, "-mach_endian")));
+ htk_reorder = (0 == strcmp("htk", wtf->ot->name)
+ && !(cmd_ln_boolean_r(wtf->config, "-logspec")
+ || cmd_ln_boolean_r(wtf->config, "-cep2spec")));
+ for (i = 0; i < nfr; ++i) {
+ if (htk_reorder) {
+ mfcc_t c0 = frames[i][0];
+ memmove(frames[i] + 1, frames[i], (wtf->veclen - 1) * 4);
+ frames[i][wtf->veclen - 1] = c0;
+ }
+ if (swap)
+ for (j = 0; j < wtf->veclen; ++j)
+ SWAP_FLOAT32(frames[i] + j);
+ if (fwrite(frames[i], sizeof(float32), wtf->veclen, wtf->outfh) != wtf->veclen) {
+ E_ERROR_SYSTEM("Writing %d values to %s failed",
+ wtf->veclen, wtf->outfile);
+ return -1;
+ }
+ nfloat += wtf->veclen;
+ }
+ return nfloat;
+}
+
+/**
+ * Output frames in text format.
+ */
+static int
+output_frames_text(sphinx_wave2feat_t *wtf, mfcc_t **frames, int nfr)
+{
+ int i, j, nfloat = 0;
+
+ fe_mfcc_to_float(wtf->fe, frames, (float32 **)frames, nfr);
+ for (i = 0; i < nfr; ++i) {
+ for (j = 0; j < wtf->veclen; ++j) {
+ fprintf(wtf->outfh, "%.5g", frames[i][j]);
+ if (j == wtf->veclen - 1)
+ fprintf(wtf->outfh, "\n");
+ else
+ fprintf(wtf->outfh, " ");
+ }
+ nfloat += wtf->veclen;
+ }
+ return nfloat;
+}
+
+static const output_type_t outtypes[] = {
+ { "sphinx", &output_header_sphinx, &output_frames_sphinx },
+ { "htk", &output_header_htk, &output_frames_htk },
+ { "text", NULL, &output_frames_text }
+};
+static const int nouttypes = sizeof(outtypes)/sizeof(outtypes[0]);
+
+sphinx_wave2feat_t *
+sphinx_wave2feat_init(cmd_ln_t *config)
+{
+ sphinx_wave2feat_t *wtf;
+ int i;
+
+ wtf = ckd_calloc(1, sizeof(*wtf));
+ wtf->refcount = 1;
+ wtf->config = cmd_ln_retain(config);
+ wtf->fe = fe_init_auto_r(wtf->config);
+ wtf->ot = outtypes; /* Default (sphinx) type. */
+ for (i = 0; i < nouttypes; ++i) {
+ output_type_t const *otype = &outtypes[i];
+ if (0 == strcmp(cmd_ln_str_r(config, "-ofmt"), otype->name)) {
+ wtf->ot = otype;
+ break;
+ }
+ }
+ if (i == nouttypes) {
+ E_ERROR("Unknown output type: '%s'\n",
+ cmd_ln_str_r(config, "-ofmt"));
+ sphinx_wave2feat_free(wtf);
+ return NULL;
+ }
+
+ return wtf;
+}
+
+int
+sphinx_wave2feat_free(sphinx_wave2feat_t *wtf)
+{
+ if (wtf == NULL)
+ return 0;
+ if (--wtf->refcount > 0)
+ return wtf->refcount;
+
+ ckd_free(wtf->audio);
+ ckd_free_2d(wtf->feat);
+ ckd_free(wtf->infile);
+ ckd_free(wtf->outfile);
+ if (wtf->infh) {
+ if (fclose(wtf->infh) == EOF)
+ E_ERROR_SYSTEM("Failed to close input file");
+ }
+ if (wtf->outfh) {
+ if (fclose(wtf->outfh) == EOF)
+ E_ERROR_SYSTEM("Failed to close output file");
+ }
+ cmd_ln_free_r(wtf->config);
+ fe_free(wtf->fe);
+ ckd_free(wtf);
+
+ return 0;
+}
+
+sphinx_wave2feat_t *
+sphinx_wave2feat_retain(sphinx_wave2feat_t *wtf)
+{
+ ++wtf->refcount;
+ return wtf;
+}
+
+static audio_type_t const *
+detect_audio_type(sphinx_wave2feat_t *wtf, char const *infile)
+{
+ audio_type_t const *atype;
+ int i;
+
+ /* Special case audio type for Sphinx MFCC inputs. */
+ if (cmd_ln_boolean_r(wtf->config, "-spec2cep")
+ || cmd_ln_boolean_r(wtf->config, "-cep2spec")) {
+ int rv = mfcc_type.detect(wtf, infile);
+ if (rv == -1)
+ goto error_out;
+ return &mfcc_type;
+ }
+
+ /* Try to use the type of infile given on the command line. */
+ for (i = 0; i < ntypes; ++i) {
+ int rv;
+ atype = &types[i];
+ if (cmd_ln_boolean_r(wtf->config, atype->name)) {
+ rv = (*atype->detect)(wtf, infile);
+ if (rv == -1)
+ goto error_out;
+ else if (rv == TRUE)
+ break;
+ }
+ }
+ if (i == ntypes) {
+ /* Detect file type of infile and get parameters. */
+ for (i = 0; i < ntypes; ++i) {
+ int rv;
+ atype = &types[i];
+ rv = (*atype->detect)(wtf, infile);
+ if (rv == -1)
+ goto error_out;
+ else if (rv == TRUE)
+ break;
+ }
+ if (i == ntypes)
+ goto error_out;
+ }
+ return atype;
+ error_out:
+ if (wtf->infh)
+ fclose(wtf->infh);
+ wtf->infh = NULL;
+ return NULL;
+}
+
+int
+sphinx_wave2feat_convert_file(sphinx_wave2feat_t *wtf,
+ char const *infile, char const *outfile)
+{
+ int nchans, minfft, nfft, nfloat, veclen;
+ audio_type_t const *atype;
+ int fshift, fsize;
+
+ if (cmd_ln_boolean_r(wtf->config, "-verbose"))
+ E_INFO("Converting %s to %s\n", infile, outfile);
+
+ /* Detect input file type. */
+ if ((atype = detect_audio_type(wtf, infile)) == NULL)
+ return -1;
+
+ /* Determine whether to byteswap input. */
+ wtf->byteswap = strcmp(cmd_ln_str_r(wtf->config, "-mach_endian"),
+ cmd_ln_str_r(wtf->config, "-input_endian"));
+
+ /* Make sure the FFT size is sufficiently large. */
+ minfft = (int)(cmd_ln_float32_r(wtf->config, "-samprate")
+ * cmd_ln_float32_r(wtf->config, "-wlen") + 0.5);
+ for (nfft = 1; nfft < minfft; nfft <<= 1)
+ ;
+ if (nfft > cmd_ln_int32_r(wtf->config, "-nfft")) {
+ E_WARN("Value of -nfft = %d is too small, increasing to %d\n",
+ cmd_ln_int32_r(wtf->config, "-nfft"), nfft);
+ cmd_ln_set_int32_r(wtf->config, "-nfft", nfft);
+ fe_free(wtf->fe);
+ wtf->fe = fe_init_auto_r(wtf->config);
+ }
+
+ /* Get the output frame size (if not already set). */
+ if (wtf->veclen == 0)
+ wtf->veclen = fe_get_output_size(wtf->fe);
+
+ /* Set up the input and output buffers. */
+ fe_get_input_size(wtf->fe, &fshift, &fsize);
+ /* Want to get at least a whole frame plus shift in here. Also we
+ will either pick or mix multiple channels so we need to read
+ them all at once. */
+ nchans = cmd_ln_int32_r(wtf->config, "-nchans");
+ wtf->blocksize = cmd_ln_int32_r(wtf->config, "-blocksize") * nchans;
+ if (wtf->blocksize < (fsize + fshift) * nchans) {
+ E_INFO("Block size of %d too small, increasing to %d\n",
+ wtf->blocksize,
+ (fsize + fshift) * nchans);
+ wtf->blocksize = (fsize + fshift) * nchans;
+ }
+ wtf->audio = ckd_calloc(wtf->blocksize, sizeof(*wtf->audio));
+ wtf->featsize = (wtf->blocksize / nchans - fsize) / fshift;
+
+ /* Use the maximum of the input and output frame sizes to allocate this. */
+ veclen = wtf->veclen;
+ if (wtf->in_veclen > veclen) veclen = wtf->in_veclen;
+ wtf->feat = ckd_calloc_2d(wtf->featsize, veclen, sizeof(**wtf->feat));
+
+ /* Let's go! */
+ if ((wtf->outfh = fopen(outfile, "wb")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open %s for writing", outfile);
+ return -1;
+ }
+ /* Write an empty header, which we'll fill in later. */
+ if (wtf->ot->output_header &&
+ (*wtf->ot->output_header)(wtf, 0) < 0) {
+ E_ERROR_SYSTEM("Failed to write empty header to %s\n", outfile);
+ goto error_out;
+ }
+ wtf->outfile = ckd_salloc(outfile);
+
+ if ((nfloat = (*atype->decode)(wtf)) < 0)
+ return -1;
+
+ if (wtf->ot->output_header) {
+ if (fseek(wtf->outfh, 0, SEEK_SET) < 0) {
+ E_ERROR_SYSTEM("Failed to seek to beginning of %s\n", outfile);
+ goto error_out;
+ }
+ if ((*wtf->ot->output_header)(wtf, nfloat) < 0) {
+ E_ERROR_SYSTEM("Failed to write header to %s\n", outfile);
+ goto error_out;
+ }
+ }
+ if (fclose(wtf->outfh) == EOF)
+ E_ERROR_SYSTEM("Failed to close output file");
+ wtf->outfh = NULL;
+
+ return 0;
+error_out:
+ if (wtf->outfh) {
+ fclose(wtf->outfh);
+ wtf->outfh = NULL;
+ }
+ return -1;
+}
+
+void
+build_filenames(cmd_ln_t *config, char const *basename,
+ char **out_infile, char **out_outfile)
+{
+ char const *di, *do_, *ei, *eo;
+
+ di = cmd_ln_str_r(config, "-di");
+ do_ = cmd_ln_str_r(config, "-do");
+ ei = cmd_ln_str_r(config, "-ei");
+ eo = cmd_ln_str_r(config, "-eo");
+
+ *out_infile = string_join(di ? di : "",
+ di ? "/" : "",
+ basename,
+ ei ? "." : "",
+ ei ? ei : "",
+ NULL);
+ *out_outfile = string_join(do_ ? do_ : "",
+ do_ ? "/" : "",
+ basename,
+ eo ? "." : "",
+ eo ? eo : "",
+ NULL);
+ /* Build output directory structure if possible/requested (it is
+ * by default). */
+ if (cmd_ln_boolean_r(config, "-build_outdirs")) {
+ char *dirname = ckd_salloc(*out_outfile);
+ path2dirname(*out_outfile, dirname);
+ build_directory(dirname);
+ ckd_free(dirname);
+ }
+}
+
+static int
+run_control_file(sphinx_wave2feat_t *wtf, char const *ctlfile)
+{
+ hash_table_t *files;
+ hash_iter_t *itor;
+ lineiter_t *li;
+ FILE *ctlfh;
+ int nskip, runlen, npart, rv = 0;
+
+ if ((ctlfh = fopen(ctlfile, "r")) == NULL) {
+ E_ERROR_SYSTEM("Failed to open control file %s", ctlfile);
+ return -1;
+ }
+ nskip = cmd_ln_int32_r(wtf->config, "-nskip");
+ runlen = cmd_ln_int32_r(wtf->config, "-runlen");
+ if ((npart = cmd_ln_int32_r(wtf->config, "-npart"))) {
+ /* Count lines in the file. */
+ int partlen, part, nlines = 0;
+ part = cmd_ln_int32_r(wtf->config, "-part");
+ for (li = lineiter_start(ctlfh); li; li = lineiter_next(li))
+ ++nlines;
+ fseek(ctlfh, 0, SEEK_SET);
+ partlen = nlines / npart;
+ nskip = partlen * (part - 1);
+ if (part == npart)
+ runlen = -1;
+ else
+ runlen = partlen;
+ }
+ if (runlen != -1){
+ E_INFO("Processing %d utterances at position %d\n", runlen, nskip);
+ files = hash_table_new(runlen, HASH_CASE_YES);
+ }
+ else {
+ E_INFO("Processing all remaining utterances at position %d\n", nskip);
+ files = hash_table_new(1000, HASH_CASE_YES);
+ }
+ for (li = lineiter_start(ctlfh); li; li = lineiter_next(li)) {
+ char *c, *infile, *outfile;
+
+ if (nskip-- > 0)
+ continue;
+ if (runlen == 0) {
+ lineiter_free(li);
+ break;
+ }
+ --runlen;
+
+ string_trim(li->buf, STRING_BOTH);
+ /* Extract the file ID from the control line. */
+ if ((c = strchr(li->buf, ' ')) != NULL)
+ *c = '\0';
+ build_filenames(wtf->config, li->buf, &infile, &outfile);
+ if (hash_table_lookup(files, infile, NULL) == 0)
+ continue;
+ rv = sphinx_wave2feat_convert_file(wtf, infile, outfile);
+ hash_table_enter(files, infile, outfile);
+ if (rv != 0) {
+ lineiter_free(li);
+ if (fclose(ctlfh) == EOF)
+ E_ERROR_SYSTEM("Failed to close control file");
+ break;
+ }
+ }
+ for (itor = hash_table_iter(files); itor;
+ itor = hash_table_iter_next(itor)) {
+ ckd_free((void *)hash_entry_key(itor->ent));
+ ckd_free(hash_entry_val(itor->ent));
+ }
+ hash_table_free(files);
+ return rv;
+}
+
+int
+main(int argc, char *argv[])
+{
+ sphinx_wave2feat_t *wtf;
+ cmd_ln_t *config;
+ int rv;
+
+ /* Initialize config. */
+ if ((config = cmd_ln_parse_r(NULL, defn, argc, argv, TRUE)) == NULL)
+ return 2;
+
+ /* Parse an argument file if there's one in there. */
+ if (cmd_ln_str_r(config, "-argfile"))
+ config = cmd_ln_parse_file_r(config, defn,
+ cmd_ln_str_r(config, "-argfile"), FALSE);
+ if (config == NULL) {
+ E_ERROR("Command line parsing failed\n");
+ return 1;
+ }
+ if ((wtf = sphinx_wave2feat_init(config)) == NULL) {
+ E_ERROR("Failed to initialize wave2feat object\n");
+ return 1;
+ }
+
+ /* If there's a control file run through it, otherwise we will do
+ * a single file (which is what run_control_file will do
+ * internally too) */
+ if (cmd_ln_str_r(config, "-c"))
+ rv = run_control_file(wtf, cmd_ln_str_r(config, "-c"));
+ else
+ rv = sphinx_wave2feat_convert_file(wtf, cmd_ln_str_r(config, "-i"),
+ cmd_ln_str_r(config, "-o"));
+
+ sphinx_wave2feat_free(wtf);
+ return rv;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 1996-2004 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+#ifndef __SPHINX_FE_H__
+#define __SPHINX_FE_H__
+
+/**
+ * Waveform to feature converter object.
+ */
+typedef struct sphinx_wave2feat_s sphinx_wave2feat_t;
+
+/**
+ * Initialize waveform to feature converter.
+ */
+sphinx_wave2feat_t *sphinx_wave2feat_init(cmd_ln_t *config);
+
+/**
+ * Release a waveform to feature converter.
+ */
+int sphinx_wave2feat_free(sphinx_wave2feat_t *w2f);
+
+/**
+ * Retain a waveform to feature converter.
+ */
+sphinx_wave2feat_t *sphinx_wave2feat_retain(sphinx_wave2feat_t *w2f);
+
+/**
+ * Convert one file.
+ */
+int sphinx_wave2feat_convert_file(sphinx_wave2feat_t *w2f,
+ char const *infile, char const *outfile);
+
+#endif /* __SPHINX_FE_H__ */
--- /dev/null
+bin_PROGRAMS = sphinx_jsgf2fsg
+
+sphinx_jsgf2fsg_SOURCES = main.c
+
+sphinx_jsgf2fsg_LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
+
+EXTRA_DIST = fsg2dot.pl
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = sphinx_jsgf2fsg$(EXEEXT)
+subdir = src/sphinx_jsgf2fsg
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_sphinx_jsgf2fsg_OBJECTS = main.$(OBJEXT)
+sphinx_jsgf2fsg_OBJECTS = $(am_sphinx_jsgf2fsg_OBJECTS)
+sphinx_jsgf2fsg_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(sphinx_jsgf2fsg_SOURCES)
+DIST_SOURCES = $(sphinx_jsgf2fsg_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+sphinx_jsgf2fsg_SOURCES = main.c
+sphinx_jsgf2fsg_LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
+EXTRA_DIST = fsg2dot.pl
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sphinx_jsgf2fsg/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/sphinx_jsgf2fsg/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+sphinx_jsgf2fsg$(EXEEXT): $(sphinx_jsgf2fsg_OBJECTS) $(sphinx_jsgf2fsg_DEPENDENCIES)
+ @rm -f sphinx_jsgf2fsg$(EXEEXT)
+ $(LINK) $(sphinx_jsgf2fsg_OBJECTS) $(sphinx_jsgf2fsg_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS
+
+# 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:
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+
+my $nstates;
+while (<>) {
+ chomp;
+ s/#.*$//;
+ next if /^$/;
+
+ if (/FSG_BEGIN (\S+)/) {
+ print "digraph $1 {\n\trankdir=LR;\n\t";
+ }
+ elsif (/NUM_STATES (\d+)/) {
+ $nstates = $1;
+ }
+ elsif (/START_STATE (\d+)/) {
+ }
+ elsif (/FINAL_STATE (\d+)/) {
+ my $end = $1;
+
+ print "\tnode [shape=circle];";
+ for (my $i = 0; $i < $nstates; ++$i) {
+ print " $i" unless $i == $end;
+ }
+ print ";\n\tnode [shape=doublecircle]; $end;\n\n";
+ }
+ elsif (/TRANSITION/) {
+ my (undef, $from, $to, $weight, $word) = split;
+
+ my $label;
+ if ($weight != 1.0 and defined($word)) {
+ $label = sprintf "%s/%.2f", $word, $weight;
+ }
+ elsif ($weight != 1.0) {
+ $label = sprintf "%.2f", $weight;
+ }
+ elsif ($word) {
+ $label = $word;
+ }
+ print "\t$from -> $to [label=\"$label\"];\n";
+ }
+}
+print "}\n";
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2007 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+#include <string.h>
+
+#include <sphinxbase/hash_table.h>
+#include <sphinxbase/fsg_model.h>
+#include <sphinxbase/jsgf.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/strfuncs.h>
+
+static fsg_model_t *
+get_fsg(jsgf_t *grammar, const char *name)
+{
+ jsgf_rule_iter_t *itor;
+ logmath_t *lmath = logmath_init(1.0001, 0, 0);
+ fsg_model_t *fsg = NULL;
+
+ for (itor = jsgf_rule_iter(grammar); itor;
+ itor = jsgf_rule_iter_next(itor)) {
+ jsgf_rule_t *rule = jsgf_rule_iter_rule(itor);
+ char const *rule_name = jsgf_rule_name(rule);
+
+ if ((name == NULL && jsgf_rule_public(rule))
+ || (name && strlen(rule_name)-2 == strlen(name) &&
+ 0 == strncmp(rule_name + 1, name, strlen(rule_name) - 2))) {
+ fsg = jsgf_build_fsg_raw(grammar, rule, logmath_retain(lmath), 1.0);
+ jsgf_rule_iter_free(itor);
+ break;
+ }
+ }
+
+ logmath_free(lmath);
+ return fsg;
+}
+
+int
+main(int argc, char *argv[])
+{
+ jsgf_t *jsgf;
+ fsg_model_t *fsg;
+ int fsm = 0;
+ char *outfile = NULL;
+ char *symfile = NULL;
+
+ if (argc > 1 && 0 == strcmp(argv[1], "-fsm")) {
+ fsm = 1;
+ ++argv;
+ }
+
+ jsgf = jsgf_parse_file(argc > 1 ? argv[1] : NULL, NULL);
+ if (jsgf == NULL) {
+ return 1;
+ }
+ fsg = get_fsg(jsgf, argc > 2 ? argv[2] : NULL);
+
+ if (argc > 3)
+ outfile = argv[3];
+ if (argc > 4)
+ symfile = argv[4];
+
+ if (fsm) {
+ if (outfile)
+ fsg_model_writefile_fsm(fsg, outfile);
+ else
+ fsg_model_write_fsm(fsg, stdout);
+ if (symfile)
+ fsg_model_writefile_symtab(fsg, symfile);
+ }
+ else {
+ if (outfile)
+ fsg_model_writefile(fsg, outfile);
+ else
+ fsg_model_write(fsg, stdout);
+ }
+ fsg_model_free(fsg);
+ jsgf_grammar_free(jsgf);
+
+ return 0;
+}
+
+
+/** Silvio Moioli: Windows CE/Mobile entry point added. */
+#if defined(_WIN32_WCE)
+#pragma comment(linker,"/entry:mainWCRTStartup")
+#include <windows.h>
+
+//Windows Mobile has the Unicode main only
+int wmain(int32 argc, wchar_t *wargv[]) {
+ char** argv;
+ size_t wlen;
+ size_t len;
+ int i;
+
+ argv = malloc(argc*sizeof(char*));
+ for (i=0; i<argc; i++){
+ wlen = lstrlenW(wargv[i]);
+ len = wcstombs(NULL, wargv[i], wlen);
+ argv[i] = malloc(len+1);
+ wcstombs(argv[i], wargv[i], wlen);
+ }
+
+ //assuming ASCII parameters
+ return main(argc, argv);
+}
+#endif
--- /dev/null
+bin_PROGRAMS = sphinx_lm_eval sphinx_lm_convert
+
+bin_SCRIPTS = sphinx_lm_sort
+EXTRA_DIST = sphinx_lm_sort
+
+LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxbase/lm/libsphinxlm.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
+ -I$(top_srcdir)/src/libsphinxlm
+
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = sphinx_lm_eval$(EXEEXT) sphinx_lm_convert$(EXEEXT)
+subdir = src/sphinx_lmtools
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+sphinx_lm_convert_SOURCES = sphinx_lm_convert.c
+sphinx_lm_convert_OBJECTS = sphinx_lm_convert.$(OBJEXT)
+sphinx_lm_convert_LDADD = $(LDADD)
+sphinx_lm_convert_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxbase/lm/libsphinxlm.la
+sphinx_lm_eval_SOURCES = sphinx_lm_eval.c
+sphinx_lm_eval_OBJECTS = sphinx_lm_eval.$(OBJEXT)
+sphinx_lm_eval_LDADD = $(LDADD)
+sphinx_lm_eval_DEPENDENCIES = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxbase/lm/libsphinxlm.la
+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(bin_SCRIPTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = sphinx_lm_convert.c sphinx_lm_eval.c
+DIST_SOURCES = sphinx_lm_convert.c sphinx_lm_eval.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+bin_SCRIPTS = sphinx_lm_sort
+EXTRA_DIST = sphinx_lm_sort
+LDADD = \
+ $(top_builddir)/src/libsphinxbase/libsphinxbase.la \
+ $(top_builddir)/src/libsphinxbase/lm/libsphinxlm.la
+
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
+ -I$(top_srcdir)/src/libsphinxlm
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sphinx_lmtools/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/sphinx_lmtools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+sphinx_lm_convert$(EXEEXT): $(sphinx_lm_convert_OBJECTS) $(sphinx_lm_convert_DEPENDENCIES)
+ @rm -f sphinx_lm_convert$(EXEEXT)
+ $(LINK) $(sphinx_lm_convert_OBJECTS) $(sphinx_lm_convert_LDADD) $(LIBS)
+sphinx_lm_eval$(EXEEXT): $(sphinx_lm_eval_OBJECTS) $(sphinx_lm_eval_DEPENDENCIES)
+ @rm -f sphinx_lm_eval$(EXEEXT)
+ $(LINK) $(sphinx_lm_eval_OBJECTS) $(sphinx_lm_eval_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sphinx_lm_convert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sphinx_lm_eval.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(SCRIPTS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-binSCRIPTS install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-binSCRIPTS
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2009 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * \file sphinx_lm_convert.c
+ * Language model conversion tool.
+ */
+#include <sphinxbase/logmath.h>
+#include <sphinxbase/ngram_model.h>
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/pio.h>
+#include <sphinxbase/strfuncs.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+static const arg_t defn[] = {
+ { "-help",
+ ARG_BOOLEAN,
+ "no",
+ "Shows the usage of the tool"},
+
+ { "-logbase",
+ ARG_FLOAT64,
+ "1.0001",
+ "Base in which all log-likelihoods calculated" },
+
+ { "-i",
+ REQARG_STRING,
+ NULL,
+ "Input language model file (required)"},
+
+ { "-o",
+ REQARG_STRING,
+ NULL,
+ "Output language model file (required)"},
+
+ { "-ifmt",
+ ARG_STRING,
+ NULL,
+ "Input language model format (will guess if not specified)"},
+
+ { "-ofmt",
+ ARG_STRING,
+ NULL,
+ "Output language model file (will guess if not specified)"},
+
+ { "-ienc",
+ ARG_STRING,
+ NULL,
+ "Input language model text encoding (no conversion done if not specified)"},
+
+ { "-oenc",
+ ARG_STRING,
+ "utf8",
+ "Output language model text encoding"},
+
+ { "-case",
+ ARG_STRING,
+ NULL,
+ "Ether 'lower' or 'upper' - case fold to lower/upper case (NOT UNICODE AWARE)" },
+
+ { "-mmap",
+ ARG_BOOLEAN,
+ "no",
+ "Use memory-mapped I/O for reading binary LM files"},
+
+ { "-debug",
+ ARG_INT32,
+ NULL,
+ "Verbosity level for debugging messages"
+ },
+
+ { NULL, 0, NULL, NULL }
+};
+
+static void
+usagemsg(char *pgm)
+{
+ E_INFO("Usage: %s -i <input.lm> \\\n", pgm);
+ E_INFOCONT("\t[-ifmt txt] [-ofmt dmp]\n");
+ E_INFOCONT("\t-o <output.lm.DMP>\n");
+
+ exit(0);
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ cmd_ln_t *config;
+ ngram_model_t *lm = NULL;
+ logmath_t *lmath;
+ int itype, otype;
+ char const *kase;
+
+ if ((config = cmd_ln_parse_r(NULL, defn, argc, argv, TRUE)) == NULL)
+ return 1;
+
+ if (cmd_ln_boolean_r(config, "-help")) {
+ usagemsg(argv[0]);
+ }
+
+ err_set_debug_level(cmd_ln_int32_r(config, "-debug"));
+
+ /* Create log math object. */
+ if ((lmath = logmath_init
+ (cmd_ln_float64_r(config, "-logbase"), 0, 0)) == NULL) {
+ E_FATAL("Failed to initialize log math\n");
+ }
+
+ if (cmd_ln_str_r(config, "-i") == NULL || cmd_ln_str_r(config, "-i") == NULL) {
+ E_ERROR("Please specify both input and output models\n");
+ goto error_out;
+ }
+
+
+ /* Load the input language model. */
+ if (cmd_ln_str_r(config, "-ifmt")) {
+ if ((itype = ngram_str_to_type(cmd_ln_str_r(config, "-ifmt")))
+ == NGRAM_INVALID) {
+ E_ERROR("Invalid input type %s\n", cmd_ln_str_r(config, "-ifmt"));
+ goto error_out;
+ }
+ lm = ngram_model_read(config, cmd_ln_str_r(config, "-i"),
+ itype, lmath);
+ }
+ else {
+ lm = ngram_model_read(config, cmd_ln_str_r(config, "-i"),
+ NGRAM_AUTO, lmath);
+ }
+
+ /* Guess or set the output language model type. */
+ if (cmd_ln_str_r(config, "-ofmt")) {
+ if ((otype = ngram_str_to_type(cmd_ln_str_r(config, "-ofmt")))
+ == NGRAM_INVALID) {
+ E_ERROR("Invalid output type %s\n", cmd_ln_str_r(config, "-ofmt"));
+ goto error_out;
+ }
+ }
+ else {
+ otype = ngram_file_name_to_type(cmd_ln_str_r(config, "-o"));
+ }
+
+ /* Recode the language model if desired. */
+ if (cmd_ln_str_r(config, "-ienc")) {
+ if (ngram_model_recode(lm, cmd_ln_str_r(config, "-ienc"),
+ cmd_ln_str_r(config, "-oenc")) != 0) {
+ E_ERROR("Failed to recode language model from %s to %s\n",
+ cmd_ln_str_r(config, "-ienc"),
+ cmd_ln_str_r(config, "-oenc"));
+ goto error_out;
+ }
+ }
+
+ /* Case fold if requested. */
+ if ((kase = cmd_ln_str_r(config, "-case"))) {
+ if (0 == strcmp(kase, "lower")) {
+ ngram_model_casefold(lm, NGRAM_LOWER);
+ }
+ else if (0 == strcmp(kase, "upper")) {
+ ngram_model_casefold(lm, NGRAM_UPPER);
+ }
+ else {
+ E_ERROR("Unknown value for -case: %s\n", kase);
+ goto error_out;
+ }
+ }
+
+ /* Write the output language model. */
+ if (ngram_model_write(lm, cmd_ln_str_r(config, "-o"), otype) != 0) {
+ E_ERROR("Failed to write language model in format %s to %s\n",
+ ngram_type_to_str(otype), cmd_ln_str_r(config, "-o"));
+ goto error_out;
+ }
+
+ /* That's all folks! */
+ ngram_model_free(lm);
+ return 0;
+
+error_out:
+ ngram_model_free(lm);
+ return 1;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* ====================================================================
+ * Copyright (c) 2008 Carnegie Mellon University. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * This work was supported in part by funding from the Defense Advanced
+ * Research Projects Agency and the National Science Foundation of the
+ * United States of America, and the CMU Sphinx Speech Consortium.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+ * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+/**
+ * \file sphinx_lm_eval.c
+ * Language model evaluation tool.
+ */
+#include <sphinxbase/logmath.h>
+#include <sphinxbase/ngram_model.h>
+#include <sphinxbase/cmd_ln.h>
+#include <sphinxbase/ckd_alloc.h>
+#include <sphinxbase/err.h>
+#include <sphinxbase/pio.h>
+#include <sphinxbase/strfuncs.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+static const arg_t defn[] = {
+ { "-help",
+ ARG_BOOLEAN,
+ "no",
+ "Shows the usage of the tool"},
+
+ { "-logbase",
+ ARG_FLOAT64,
+ "1.0001",
+ "Base in which all log-likelihoods calculated" },
+
+ { "-lm",
+ ARG_STRING,
+ NULL,
+ "Language model file"},
+
+ { "-probdef",
+ ARG_STRING,
+ NULL,
+ "Probability definition file for classes in LM"},
+
+ { "-lmctlfn",
+ ARG_STRING,
+ NULL,
+ "Control file listing a set of language models"},
+
+ { "-lmname",
+ ARG_STRING,
+ NULL,
+ "Name of language model in -lmctlfn to use for all utterances" },
+
+ { "-lsn",
+ ARG_STRING,
+ NULL,
+ "Transcription file to evaluate"},
+
+ { "-text",
+ ARG_STRING,
+ "Text string to evaluate"},
+
+ { "-mmap",
+ ARG_BOOLEAN,
+ "no",
+ "Use memory-mapped I/O for reading binary LM files"},
+
+ { "-lw",
+ ARG_FLOAT32,
+ "1.0",
+ "Language model weight" },
+
+ { "-wip",
+ ARG_FLOAT32,
+ "1.0",
+ "Word insertion probability" },
+
+ { "-uw",
+ ARG_FLOAT32,
+ "1.0",
+ "Unigram probability weight (interpolated with uniform distribution)"},
+
+ { "-verbose",
+ ARG_BOOLEAN,
+ "no",
+ "Print details of perplexity calculation" },
+
+ /* FIXME: Support -lmstartsym, -lmendsym, -lmctlfn, -ctl_lm */
+ { NULL, 0, NULL, NULL }
+};
+
+static int verbose;
+
+static int
+calc_entropy(ngram_model_t *lm, char **words, int32 n,
+ int32 *out_n_ccs, int32 *out_n_oovs, int32 *out_lm_score)
+{
+ int32 *wids;
+ int32 startwid;
+ int32 i, ch, nccs, noovs, unk;
+
+ if (n == 0)
+ return 0;
+
+ unk = ngram_unknown_wid(lm);
+
+ /* Reverse this array into an array of word IDs. */
+ wids = ckd_calloc(n, sizeof(*wids));
+ for (i = 0; i < n; ++i)
+ wids[n-i-1] = ngram_wid(lm, words[i]);
+ /* Skip <s> as it's a context cue (HACK, this should be configurable). */
+ startwid = ngram_wid(lm, "<s>");
+
+ /* Now evaluate the list of words in reverse using the
+ * remainder of the array as the history. */
+ ch = noovs = nccs = 0;
+ for (i = 0; i < n; ++i) {
+ int32 n_used;
+ int32 prob;
+
+ /* Skip <s> as it's a context cue (HACK, this should be configurable). */
+ if (wids[i] == startwid) {
+ ++nccs;
+ continue;
+ }
+ /* Skip and count OOVs. */
+ if (wids[i] == NGRAM_INVALID_WID || wids[i] == unk) {
+ ++noovs;
+ continue;
+ }
+ /* Sum up information for each N-gram */
+ prob = ngram_ng_score(lm,
+ wids[i], wids + i + 1,
+ n - i - 1, &n_used);
+ if (verbose) {
+ int m;
+ printf("log P(%s|", ngram_word(lm, wids[i]));
+ m = i + ngram_model_get_size(lm) - 1;
+ if (m >= n)
+ m = n - 1;
+ while (m > i) {
+ printf("%s ", ngram_word(lm, wids[m--]));
+ }
+ printf(") = %d\n", prob);
+ }
+ ch -= prob;
+ }
+
+ if (out_n_ccs) *out_n_ccs = nccs;
+ if (out_n_oovs) *out_n_oovs = noovs;
+
+ /* Calculate cross-entropy CH = - 1/N sum log P(W|H) */
+ n -= (nccs + noovs);
+ if (n <= 0)
+ return 0;
+ if (out_lm_score)
+ *out_lm_score = -ch;
+ return ch / n;
+}
+
+static void
+evaluate_file(ngram_model_t *lm, logmath_t *lmath, const char *lsnfn)
+{
+ FILE *fh;
+ lineiter_t *litor;
+ int32 nccs, noovs, nwords, lscr;
+ float64 ch, log_to_log2;;
+
+ if ((fh = fopen(lsnfn, "r")) == NULL)
+ E_FATAL_SYSTEM("failed to open transcript file %s", lsnfn);
+
+ /* We have to keep ch in floating-point to avoid overflows, so
+ * we might as well use log2. */
+ log_to_log2 = log(logmath_get_base(lmath)) / log(2);
+ nccs = noovs = nwords = 0;
+ ch = 0.0;
+ for (litor = lineiter_start(fh); litor; litor = lineiter_next(litor)) {
+ char **words;
+ int32 n, tmp_ch, tmp_noovs, tmp_nccs, tmp_lscr;
+
+ n = str2words(litor->buf, NULL, 0);
+ if (n < 0)
+ E_FATAL("str2words(line, NULL, 0) = %d, should not happen\n", n);
+ if (n == 0) /* Do nothing! */
+ continue;
+ words = ckd_calloc(n, sizeof(*words));
+ str2words(litor->buf, words, n);
+
+ /* Remove any utterance ID (FIXME: has to be a single "word") */
+ if (words[n-1][0] == '('
+ && words[n-1][strlen(words[n-1])-1] == ')')
+ n = n - 1;
+
+ tmp_ch = calc_entropy(lm, words, n, &tmp_nccs,
+ &tmp_noovs, &tmp_lscr);
+
+ ch += (float64) tmp_ch * (n - tmp_nccs - tmp_noovs) * log_to_log2;
+ nccs += tmp_nccs;
+ noovs += tmp_noovs;
+ lscr += tmp_lscr;
+ nwords += n;
+
+ ckd_free(words);
+ }
+
+ ch /= (nwords - nccs - noovs);
+ printf("cross-entropy: %f bits\n", ch);
+
+ /* Calculate perplexity pplx = exp CH */
+ printf("perplexity: %f\n", pow(2.0, ch));
+ printf("lm score: %d\n", lscr);
+
+ /* Report OOVs and CCs */
+ printf("%d words evaluated\n", nwords);
+ printf("%d OOVs (%.2f%%), %d context cues removed\n",
+ noovs, (double)noovs / nwords * 100, nccs);
+}
+
+static void
+evaluate_string(ngram_model_t *lm, logmath_t *lmath, const char *text)
+{
+ char *textfoo;
+ char **words;
+ int32 n, ch, noovs, nccs, lscr;
+
+ /* Split it into an array of strings. */
+ textfoo = ckd_salloc(text);
+ n = str2words(textfoo, NULL, 0);
+ if (n < 0)
+ E_FATAL("str2words(textfoo, NULL, 0) = %d, should not happen\n", n);
+ if (n == 0) /* Do nothing! */
+ return;
+ words = ckd_calloc(n, sizeof(*words));
+ str2words(textfoo, words, n);
+
+ ch = calc_entropy(lm, words, n, &nccs, &noovs, &lscr);
+
+ printf("input: %s\n", text);
+ printf("cross-entropy: %f bits\n",
+ ch * log(logmath_get_base(lmath)) / log(2));
+
+ /* Calculate perplexity pplx = exp CH */
+ printf("perplexity: %f\n", logmath_exp(lmath, ch));
+ printf("lm score: %d\n", lscr);
+
+ /* Report OOVs and CCs */
+ printf("%d words evaluated\n", n);
+ printf("%d OOVs, %d context cues removed\n",
+ noovs, nccs);
+
+ ckd_free(textfoo);
+ ckd_free(words);
+}
+
+int
+main(int argc, char *argv[])
+{
+ cmd_ln_t *config;
+ ngram_model_t *lm = NULL;
+ logmath_t *lmath;
+ const char *lmfn, *probdefn, *lsnfn, *text;
+
+ if ((config = cmd_ln_parse_r(NULL, defn, argc, argv, TRUE)) == NULL)
+ return 1;
+
+ verbose = cmd_ln_boolean_r(config, "-verbose");
+
+ /* Create log math object. */
+ if ((lmath = logmath_init
+ (cmd_ln_float64_r(config, "-logbase"), 0, 0)) == NULL) {
+ E_FATAL("Failed to initialize log math\n");
+ }
+
+ /* Load the language model. */
+ lmfn = cmd_ln_str_r(config, "-lm");
+ if (lmfn == NULL
+ || (lm = ngram_model_read(config, lmfn,
+ NGRAM_AUTO, lmath)) == NULL) {
+ E_FATAL("Failed to load language model from %s\n",
+ cmd_ln_str_r(config, "-lm"));
+ }
+ if ((probdefn = cmd_ln_str_r(config, "-probdef")) != NULL)
+ ngram_model_read_classdef(lm, probdefn);
+ ngram_model_apply_weights(lm,
+ cmd_ln_float32_r(config, "-lw"),
+ cmd_ln_float32_r(config, "-wip"),
+ cmd_ln_float32_r(config, "-uw"));
+
+ /* Now evaluate some text. */
+ lsnfn = cmd_ln_str_r(config, "-lsn");
+ text = cmd_ln_str_r(config, "-text");
+ if (lsnfn) {
+ evaluate_file(lm, lmath, lsnfn);
+ }
+ else if (text) {
+ evaluate_string(lm, lmath, text);
+ }
+
+ return 0;
+}
--- /dev/null
+#!/usr/bin/env perl
+use strict;
+
+if ($ARGV[0] eq '-h' or $ARGV[0] eq '-?' or $ARGV[0] eq '--help') {
+ print "Usage: $0 < INPUT_LM > OUTPUT_LM\n";
+ print "\n\tThis program reads an ARPA-format language model and";
+ print "\n\tsorts the N-Grams into the order required by Sphinx.";
+ print "\n\tIt also replaces 'missing' (actually nonexistent)";
+ print "\n\tbackoff weights with dummy values in order to satisfy";
+ print "\n\tall versions of Sphinx.\n";
+ exit 0;
+}
+
+sub print_sorted_ngrams {
+ my ($print_bo, $grams) = @_;
+ @$grams = sort {$a->[0] cmp $b->[0]} @$grams;
+ foreach my $g (@$grams) {
+ my ($gram, $prob, $bo) = @$g;
+ if ($print_bo) {
+ printf("%.4f %s %.4f\n", $prob, $gram, $bo);
+ }
+ else {
+ printf("%.4f %s\n", $prob, $gram);
+ }
+ }
+ print "\n";
+}
+
+my $in_data;
+my ($n, @ngrams);
+while (<>) {
+ if (/^\\data\\/) {
+ print;
+ $in_data = 1;
+ next;
+ }
+ unless ($in_data) {
+ print;
+ next;
+ }
+ if (/ngram (\d+)=(\d+)/) {
+ print;
+ next;
+ }
+ if (/\\(\d+)-grams:/) {
+ print_sorted_ngrams(1,\@ngrams);
+ $n = $1;
+ @ngrams = ();
+ print;
+ next;
+ }
+ unless (defined($n)) {
+ print;
+ next;
+ }
+ if (/^\\end\\/) {
+ print_sorted_ngrams(0,\@ngrams);
+ undef $n;
+ print;
+ next;
+ }
+ my (@parts) = split;
+ unless (@parts) {
+ next;
+ }
+ my $prob = shift @parts;
+ my $bo = 0;
+ if (@parts == $n + 1) {
+ $bo = pop @parts;
+ }
+ push @ngrams, ["@parts", $prob, $bo];
+}
--- /dev/null
+SUBDIRS=unit regression
+EXTRA_DIST=compare_table.pl
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = test
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = unit regression
+EXTRA_DIST = compare_table.pl
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+# 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:
--- /dev/null
+#!/usr/bin/perl
+# ====================================================================
+# Copyright (c) 2000 Carnegie Mellon University. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+#
+# This work was supported in part by funding from the Defense Advanced
+# Research Projects Agency and the National Science Foundation of the
+# United States of America, and the CMU Sphinx Speech Consortium.
+#
+# THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
+# ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
+# NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+use strict;
+
+die "$0 <file1> <file2> (tolerance) (fields)\n" unless @ARGV >= 2;
+
+my ($fn1, $fn2, $tolerance, $fields) = @ARGV;
+$tolerance = 0.002 unless defined($tolerance);
+my @fields;
+@fields = split /,/, $fields if defined($fields);
+
+my $comparison = 0;
+
+my $line1 = "";
+my $line2 = "";
+if ((open (FN1, "<$fn1")) and (open (FN2, "<$fn2"))) {
+ $comparison = 1;
+ while (($line1 = <FN1>) . ($line2 = <FN2>)) {
+ chomp($line1);
+ chomp($line2);
+ next if ($line1 eq $line2);
+ my @field1 = split /[,:\s]+/, $line1;
+ my @field2 = split /[,:\s]+/, $line2;
+ # If the number of tokens in each line is different, the lines,
+ # and therefore the files, don't match.
+ if ($#field1 != $#field2) {
+ $comparison = 0;
+ last;
+ }
+ @fields = (0..$#field1) unless @fields;
+ foreach my $i (@fields) {
+ if (($field1[$i] !~ m/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?\)?$/) or
+ ($field2[$i] !~ m/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?\)?$/)) {
+ # Check if any of the tokens in the line is a string rather
+ # than a number, and compare the strings
+ if ($field1[$i] ne $field2[$i]) {
+ $comparison = 0;
+ last;
+ }
+ } else {
+ # If the tokens are both numbers, check if they match within
+ # a tolerance
+ if (abs($field1[$i] - $field2[$i]) > $tolerance) {
+ $comparison = 0;
+ last;
+ }
+ }
+ }
+ # If there was a mismatch, we can skip to the end of the loop
+ last if ($comparison == 0);
+ }
+ # If the files don't have the same number of lines, one of the
+ # lines will be EOF, and the other won't.
+ $comparison = 0 if ($line1 != $line2);
+}
+
+close(FN1);
+close(FN2);
+
+if ($comparison) {
+ print "Comparison: SUCCESS\n";
+} else {
+ print "Comparison: FAIL\n";
+}
--- /dev/null
+EXTRA_DIST = \
+ testfuncs_cygwin.sh \
+ chan3.cepview \
+ chan3-dither.cepview \
+ chan3.logspec \
+ chan3-logspec.cepview \
+ chan3-smoothspec.cepview \
+ chan3.ctl \
+ chan3.mfc \
+ chan3.raw \
+ chan3.2chan.wav \
+ chan3.wav \
+ chan3.sph \
+ chan3.f0 \
+ tutorial-check.sh \
+ crontab \
+ polite.gram \
+ test.gram \
+ test.command.fsg \
+ test.kleene.fsg \
+ test.nestedRightRecursion.fsg \
+ test.nulltest.fsg \
+ test.rightRecursion.fsg
+
+CLEANFILES = test*.err test*.out \
+ test-sphinx_fe.mfc \
+ test-sphinx_fe.cepview \
+ test-sphinx_pitch.f0 \
+ chan3.sph.mfc \
+ chan3.2chan.wav.mfc \
+ chan3.wav.mfc \
+ chan3.raw.mfc
+
+# Disable sphinx_fe tests for now if fixed-point due to imprecision
+if FIXED_POINT
+TESTS = $(srcdir)/test-cepview.sh $(srcdir)/test-sphinx_pitch.sh
+else
+TESTS = $(srcdir)/test-*.sh
+endif
+
+EXTRA_DIST += $(TESTS)
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = test/regression
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/testfuncs.sh.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES = testfuncs.sh
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = testfuncs_cygwin.sh chan3.cepview chan3-dither.cepview \
+ chan3.logspec chan3-logspec.cepview chan3-smoothspec.cepview \
+ chan3.ctl chan3.mfc chan3.raw chan3.2chan.wav chan3.wav \
+ chan3.sph chan3.f0 tutorial-check.sh crontab polite.gram \
+ test.gram test.command.fsg test.kleene.fsg \
+ test.nestedRightRecursion.fsg test.nulltest.fsg \
+ test.rightRecursion.fsg $(TESTS)
+CLEANFILES = test*.err test*.out \
+ test-sphinx_fe.mfc \
+ test-sphinx_fe.cepview \
+ test-sphinx_pitch.f0 \
+ chan3.sph.mfc \
+ chan3.2chan.wav.mfc \
+ chan3.wav.mfc \
+ chan3.raw.mfc
+
+@FIXED_POINT_FALSE@TESTS = $(srcdir)/test-*.sh
+
+# Disable sphinx_fe tests for now if fixed-point due to imprecision
+@FIXED_POINT_TRUE@TESTS = $(srcdir)/test-cepview.sh $(srcdir)/test-sphinx_pitch.sh
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regression/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/regression/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+testfuncs.sh: $(top_builddir)/config.status $(srcdir)/testfuncs.sh.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+# 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:
--- /dev/null
+ 6.513 -1.581 0.213 0.167 -0.125 0.161 0.064 0.054 -0.173 -0.099 -0.090 -0.040 0.030
+ 6.586 -1.617 0.269 0.104 -0.230 0.093 -0.188 -0.056 -0.242 -0.200 -0.063 -0.004 -0.118
+ 6.789 -1.365 0.281 0.034 -0.347 -0.016 -0.210 0.056 -0.194 -0.110 -0.100 -0.034 -0.194
+ 6.848 -1.391 0.085 0.094 -0.397 0.165 -0.165 -0.187 -0.147 -0.010 -0.143 -0.060 0.013
+ 6.613 -1.366 0.043 0.170 -0.322 -0.037 -0.121 -0.113 -0.092 0.102 -0.210 -0.068 0.057
+ 6.754 -1.442 0.065 0.261 -0.230 -0.186 -0.080 -0.108 -0.203 0.070 -0.250 -0.205 -0.025
+ 6.551 -1.398 0.038 0.176 -0.230 -0.130 0.071 0.000 -0.292 0.025 -0.271 -0.012 -0.029
+ 6.280 -1.329 0.094 0.296 0.020 -0.066 -0.125 -0.166 -0.177 -0.010 -0.185 -0.158 -0.102
+ 6.376 -1.176 0.011 0.228 -0.130 -0.064 -0.320 -0.118 -0.124 0.096 -0.094 -0.170 -0.078
+ 6.329 -1.272 -0.194 0.096 0.076 -0.066 -0.251 -0.125 -0.069 0.140 -0.072 -0.044 0.013
+ 6.127 -1.232 -0.071 -0.043 -0.090 -0.023 -0.119 -0.215 -0.277 -0.104 -0.136 -0.125 -0.043
+ 5.945 -0.986 0.102 0.032 -0.097 -0.143 -0.162 0.011 -0.004 0.097 0.019 -0.085 -0.039
+ 6.259 -0.572 0.503 0.354 -0.003 0.101 0.090 -0.153 -0.101 -0.080 -0.052 -0.007 -0.158
+ 5.613 -0.328 0.280 0.201 -0.026 0.020 0.020 0.023 0.022 0.028 0.002 -0.114 -0.229
+ 5.518 -0.451 0.211 0.031 -0.068 0.023 -0.044 -0.027 0.059 0.115 -0.085 -0.027 -0.196
+ 5.194 -0.555 0.104 0.064 -0.031 -0.038 -0.019 -0.146 -0.161 -0.040 -0.162 0.020 0.056
+ 4.913 -0.148 0.053 0.111 0.114 -0.035 -0.023 -0.084 -0.163 0.204 -0.031 -0.172 -0.111
+ 4.429 -0.040 0.057 0.158 0.025 -0.167 -0.330 -0.079 -0.150 0.102 -0.044 -0.174 -0.076
+ 3.963 0.078 -0.231 -0.003 0.011 -0.036 -0.226 -0.115 -0.101 0.127 0.113 -0.043 0.005
+ 3.843 0.108 -0.282 0.049 -0.085 -0.007 -0.266 -0.246 -0.227 -0.099 0.079 0.033 0.051
+ 4.186 0.230 -0.086 -0.038 -0.204 -0.009 -0.152 -0.190 -0.131 -0.042 -0.068 -0.159 -0.078
+ 4.257 0.255 0.045 -0.018 0.040 -0.072 0.010 -0.124 -0.071 -0.154 -0.149 -0.200 -0.233
+ 4.027 0.394 0.067 0.222 0.016 -0.070 -0.266 -0.303 -0.164 -0.033 -0.105 -0.215 0.016
+ 4.171 0.352 0.159 0.095 0.098 -0.130 -0.164 -0.415 -0.207 -0.025 0.031 0.018 0.061
+ 7.069 -0.517 0.568 0.065 -0.481 0.104 -0.074 -0.274 -0.029 -0.070 -0.132 0.026 -0.175
+ 9.456 -0.227 0.591 0.302 -0.426 -0.153 -0.259 -0.208 -0.062 -0.300 -0.196 0.076 -0.287
+ 10.595 0.196 0.329 0.570 -0.236 -0.480 -0.531 -0.002 -0.256 -0.320 -0.224 -0.047 -0.306
+ 12.190 -0.192 0.303 0.566 -0.309 -0.556 -0.613 -0.056 -0.362 -0.316 -0.271 0.043 -0.256
+ 13.377 -0.265 0.159 0.461 -0.378 -0.571 -0.597 0.003 -0.469 -0.268 -0.343 0.133 -0.288
+ 13.760 0.015 -0.072 0.453 -0.386 -0.609 -0.711 0.037 -0.530 -0.191 -0.385 0.157 -0.249
+ 14.184 0.091 -0.206 0.450 -0.436 -0.700 -0.730 0.009 -0.565 -0.070 -0.395 0.210 -0.213
+ 14.378 0.113 -0.290 0.420 -0.432 -0.819 -0.712 0.045 -0.584 0.018 -0.387 0.235 -0.179
+ 14.016 0.469 -0.549 0.433 -0.415 -0.789 -0.774 0.163 -0.604 0.025 -0.276 0.066 -0.039
+ 14.133 0.576 -0.705 0.340 -0.336 -0.785 -0.780 0.063 -0.441 0.006 -0.198 -0.055 0.032
+ 14.320 0.636 -0.725 0.196 -0.351 -0.569 -0.961 0.036 -0.491 0.173 -0.233 -0.132 0.008
+ 14.130 0.726 -0.589 -0.049 -0.334 -0.392 -0.814 -0.154 -0.672 0.294 -0.139 -0.296 -0.057
+ 13.575 0.980 -0.518 -0.146 -0.464 -0.244 -0.520 -0.263 -0.968 0.211 -0.036 -0.226 -0.128
+ 13.009 1.092 -0.339 -0.249 -0.467 -0.304 -0.327 -0.239 -1.013 0.053 -0.044 -0.151 -0.061
+ 12.815 1.203 -0.442 -0.216 -0.482 -0.216 -0.384 -0.133 -1.118 0.073 -0.137 -0.053 -0.183
+ 12.959 1.094 -0.399 -0.173 -0.407 -0.230 -0.421 -0.185 -1.106 0.143 -0.152 -0.092 -0.283
+ 13.231 0.901 -0.400 -0.142 -0.222 -0.253 -0.484 -0.273 -0.983 0.208 -0.132 -0.223 -0.291
+ 13.508 0.776 -0.563 0.027 -0.061 -0.373 -0.664 -0.239 -0.787 0.213 -0.228 -0.339 -0.197
+ 13.813 0.426 -0.513 0.194 0.094 -0.614 -0.737 -0.084 -0.640 0.116 -0.383 -0.233 -0.100
+ 13.999 0.195 -0.499 0.446 -0.012 -0.827 -0.669 0.099 -0.700 -0.013 -0.330 -0.113 -0.087
+ 14.293 -0.074 -0.376 0.566 -0.210 -0.917 -0.531 0.125 -0.771 -0.008 -0.288 -0.059 -0.109
+ 14.128 -0.095 -0.313 0.610 -0.374 -0.869 -0.490 0.066 -0.729 -0.006 -0.291 0.021 -0.119
+ 14.074 -0.146 -0.189 0.514 -0.457 -0.826 -0.436 -0.063 -0.559 -0.064 -0.263 0.085 -0.159
+ 14.085 0.032 -0.328 0.440 -0.499 -0.804 -0.465 -0.041 -0.460 -0.121 -0.215 0.134 -0.152
+ 13.946 0.157 -0.383 0.321 -0.547 -0.699 -0.607 0.081 -0.419 -0.121 -0.193 0.198 -0.241
+ 13.903 0.221 -0.456 0.218 -0.548 -0.653 -0.653 0.142 -0.381 -0.057 -0.268 0.253 -0.264
+ 13.927 0.312 -0.595 0.181 -0.554 -0.547 -0.717 0.092 -0.251 -0.114 -0.233 0.165 -0.181
+ 13.848 0.440 -0.698 0.088 -0.473 -0.528 -0.766 0.022 -0.203 -0.061 -0.289 0.142 -0.122
+ 13.670 0.429 -0.568 -0.131 -0.274 -0.573 -0.757 -0.110 -0.176 0.027 -0.369 0.108 -0.050
+ 13.321 0.282 -0.355 -0.267 -0.203 -0.553 -0.555 -0.489 -0.047 0.124 -0.464 0.029 0.028
+ 13.222 0.088 -0.128 -0.297 -0.402 -0.135 -0.604 -0.629 -0.048 0.139 -0.307 -0.062 -0.114
+ 13.318 0.361 -0.024 -0.384 -0.632 0.261 -0.864 -0.493 -0.175 0.136 -0.269 0.128 -0.393
+ 13.510 0.505 0.012 -0.534 -0.810 0.289 -0.813 -0.361 -0.419 0.291 -0.285 0.285 -0.434
+ 13.474 0.481 0.188 -0.728 -0.879 0.223 -0.753 -0.204 -0.557 0.239 -0.276 0.466 -0.456
+ 13.061 0.688 0.281 -0.865 -0.917 0.140 -0.650 -0.041 -0.660 0.044 -0.249 0.498 -0.407
+ 12.805 0.671 0.472 -0.901 -0.967 0.105 -0.598 0.054 -0.700 0.017 -0.359 0.399 -0.262
+ 12.434 0.810 0.451 -0.699 -1.164 0.066 -0.429 -0.085 -0.523 -0.033 -0.482 0.410 -0.308
+ 11.784 0.871 0.645 -0.625 -1.194 0.001 -0.429 -0.080 -0.377 -0.071 -0.657 0.328 -0.277
+ 11.268 0.871 0.796 -0.585 -1.177 -0.012 -0.446 -0.016 -0.357 -0.086 -0.759 0.249 -0.302
+ 11.070 0.823 0.922 -0.594 -1.103 -0.082 -0.430 0.002 -0.359 -0.156 -0.756 0.169 -0.364
+ 10.990 0.794 1.014 -0.583 -1.093 -0.126 -0.451 -0.003 -0.354 -0.129 -0.706 0.126 -0.461
+ 11.032 0.714 1.037 -0.599 -1.115 -0.133 -0.500 -0.068 -0.271 -0.062 -0.624 0.002 -0.476
+ 11.418 0.620 0.933 -0.583 -1.119 -0.178 -0.523 -0.059 -0.202 -0.063 -0.639 0.007 -0.342
+ 12.429 0.378 0.816 -0.769 -1.204 -0.132 -0.444 -0.020 -0.353 0.019 -0.493 0.014 -0.141
+ 13.176 0.323 0.413 -0.931 -1.227 -0.046 -0.403 0.066 -0.340 -0.106 -0.356 0.201 -0.073
+ 13.232 0.294 0.339 -0.990 -1.243 0.102 -0.468 0.050 -0.309 -0.025 -0.295 0.256 -0.094
+ 13.323 0.252 0.255 -1.041 -1.248 0.199 -0.500 0.147 -0.300 0.020 -0.225 0.222 -0.174
+ 13.447 0.272 0.133 -1.091 -1.193 0.273 -0.551 0.232 -0.347 0.077 -0.184 0.211 -0.269
+ 13.566 0.337 -0.012 -1.098 -1.119 0.281 -0.477 0.190 -0.344 0.104 -0.152 0.165 -0.316
+ 13.716 0.251 -0.063 -1.068 -1.043 0.278 -0.430 0.134 -0.304 0.097 -0.067 0.047 -0.370
+ 13.444 0.470 -0.236 -0.990 -0.952 0.251 -0.411 0.038 -0.254 0.057 0.048 -0.010 -0.372
+ 13.269 0.537 -0.384 -0.848 -0.834 0.209 -0.394 -0.012 -0.228 0.027 0.125 -0.066 -0.381
+ 12.757 0.534 -0.347 -0.719 -0.776 0.156 -0.404 -0.024 -0.244 0.046 0.148 0.003 -0.445
+ 12.691 0.456 -0.357 -0.611 -0.704 0.085 -0.305 -0.253 -0.111 0.073 0.040 0.107 -0.552
+ 12.649 0.409 -0.478 -0.284 -0.693 0.024 -0.385 -0.336 -0.072 0.228 -0.096 0.085 -0.575
+ 12.396 0.421 -0.636 0.075 -0.516 -0.284 -0.509 -0.191 0.030 0.175 -0.255 0.122 -0.461
+ 11.789 0.451 -0.606 0.363 -0.431 -0.416 -0.624 -0.004 0.056 0.024 -0.357 0.284 -0.520
+ 11.193 0.315 -0.267 0.538 -0.456 -0.497 -0.550 0.101 0.147 -0.267 -0.282 0.350 -0.570
+ 10.704 0.175 0.115 0.198 -0.131 -0.506 -0.415 0.131 0.039 -0.343 -0.106 -0.078 -0.405
+ 9.874 0.421 0.326 0.085 0.021 -0.445 -0.419 0.261 -0.356 -0.262 0.101 -0.355 -0.294
+ 8.932 0.719 0.234 0.172 0.104 -0.369 -0.464 0.323 -0.446 -0.099 -0.137 -0.344 -0.256
+ 7.720 0.826 0.623 0.209 -0.015 -0.383 -0.323 0.084 -0.205 -0.146 -0.368 -0.160 -0.171
+ 7.406 0.623 0.747 -0.122 0.164 -0.473 0.068 -0.169 -0.008 -0.118 -0.430 -0.194 -0.090
+ 8.610 -0.125 0.534 -0.142 0.169 -0.265 0.129 -0.086 -0.024 -0.271 -0.223 -0.066 -0.183
+ 9.818 -0.292 0.133 0.080 -0.077 -0.182 -0.054 -0.035 -0.072 -0.160 -0.265 0.063 -0.187
+ 9.896 -0.311 0.267 0.211 0.078 -0.419 -0.238 -0.207 0.077 -0.168 -0.365 0.009 -0.105
+ 10.842 -0.050 0.223 0.126 -0.033 -0.447 -0.443 -0.329 -0.055 -0.053 -0.448 0.015 -0.114
+ 11.381 -0.048 0.068 0.072 0.097 -0.445 -0.636 -0.468 -0.105 -0.080 -0.497 -0.024 -0.020
+ 11.138 0.120 0.125 -0.069 -0.031 -0.302 -0.566 -0.495 -0.108 -0.049 -0.449 -0.090 -0.054
+ 10.764 -0.162 0.387 -0.013 -0.000 -0.294 -0.556 -0.511 -0.034 -0.173 -0.298 -0.214 0.000
+ 10.827 -0.994 0.580 -0.041 0.172 -0.133 -0.162 -0.060 0.031 -0.139 -0.305 -0.179 -0.040
+ 10.620 -1.211 0.665 -0.024 0.125 -0.254 -0.036 -0.040 -0.021 -0.083 -0.338 -0.228 -0.174
+ 10.766 -1.314 0.644 -0.032 0.365 -0.076 0.040 -0.018 -0.060 -0.091 -0.291 -0.052 -0.265
+ 10.855 -1.277 0.577 -0.097 0.494 -0.249 -0.262 -0.102 -0.079 -0.255 -0.200 -0.045 -0.164
+ 11.206 -1.251 0.537 -0.160 0.397 -0.324 -0.129 0.003 -0.104 -0.221 -0.203 -0.111 -0.142
+ 11.529 -1.056 0.596 -0.082 0.384 -0.330 -0.026 -0.062 -0.019 -0.283 -0.220 0.061 -0.106
+ 11.263 -1.528 0.452 -0.137 0.325 -0.268 -0.004 -0.054 -0.120 -0.394 -0.233 -0.040 -0.127
+ 11.469 -1.644 0.386 0.003 0.358 -0.190 -0.078 -0.090 -0.156 -0.108 -0.169 -0.029 -0.046
+ 10.859 -1.522 0.104 0.203 0.295 -0.591 0.033 0.027 -0.182 -0.279 0.051 -0.024 -0.071
+ 7.401 -1.040 -0.014 0.330 0.623 -0.540 -0.016 0.134 -0.108 -0.348 0.100 0.060 -0.235
+ 4.884 -0.541 0.092 -0.171 0.374 -0.229 0.130 -0.011 -0.120 -0.011 0.003 -0.054 -0.193
+ 4.784 -0.450 0.154 -0.281 0.195 -0.494 -0.024 -0.139 -0.216 -0.178 -0.057 0.055 0.010
+ 9.005 -0.451 -0.045 0.372 -0.653 -0.571 -0.146 -0.138 -0.101 -0.004 -0.163 -0.100 -0.079
+ 12.108 -0.745 -0.282 -0.041 -0.724 -0.550 -0.057 -0.245 -0.220 -0.025 -0.189 0.008 -0.036
+ 12.612 -0.523 -0.082 0.401 -0.351 -0.707 -0.301 -0.237 -0.254 -0.218 -0.095 -0.005 -0.160
+ 13.774 -0.172 -0.485 0.317 -0.451 -0.712 -0.651 -0.094 -0.198 -0.093 -0.236 0.244 -0.321
+ 14.097 -0.142 -0.631 0.094 -0.515 -0.672 -0.732 0.010 -0.165 0.104 -0.321 0.276 -0.315
+ 14.145 -0.083 -0.704 -0.105 -0.601 -0.639 -0.699 0.072 -0.047 0.196 -0.273 0.043 -0.223
+ 14.273 -0.159 -0.688 -0.189 -0.566 -0.508 -0.761 0.126 -0.053 0.246 -0.315 -0.038 -0.240
+ 14.437 -0.040 -0.761 -0.223 -0.603 -0.398 -0.765 0.205 -0.130 0.265 -0.346 -0.165 -0.223
+ 14.378 -0.092 -0.719 -0.181 -0.670 -0.290 -0.869 0.188 -0.187 0.328 -0.405 -0.042 -0.302
+ 14.160 0.013 -0.725 -0.177 -0.680 -0.315 -0.913 0.184 -0.126 0.295 -0.424 0.018 -0.291
+ 13.666 0.079 -0.683 -0.203 -0.648 -0.444 -0.951 0.142 -0.018 0.262 -0.385 0.094 -0.236
+ 12.462 0.396 -0.529 -0.100 -0.493 -0.569 -0.812 -0.034 0.164 -0.068 -0.176 0.221 -0.128
+ 11.096 -0.243 -0.057 0.182 -0.541 -0.396 -0.367 0.047 0.141 -0.147 -0.353 0.002 0.063
+ 11.625 -1.083 0.450 0.685 -0.330 -0.111 -0.313 -0.200 0.133 -0.119 -0.238 -0.015 -0.075
+ 12.125 -1.375 0.615 0.762 -0.320 -0.038 0.035 -0.178 0.005 -0.094 -0.394 -0.066 -0.156
+ 12.332 -1.614 0.649 0.659 -0.412 -0.027 0.023 -0.144 -0.093 -0.032 -0.275 -0.108 -0.179
+ 12.348 -2.053 0.287 0.509 -0.533 -0.159 0.051 -0.061 0.079 0.043 -0.315 -0.140 -0.183
+ 12.364 -2.283 0.302 0.798 -0.438 -0.208 -0.168 -0.019 0.061 -0.086 -0.196 -0.049 -0.101
+ 12.124 -2.227 0.166 0.564 -0.558 -0.210 -0.098 0.069 0.141 0.035 -0.054 -0.166 -0.026
+ 12.496 -1.767 0.330 0.878 -0.144 -0.097 -0.048 -0.132 -0.024 -0.048 -0.231 -0.183 0.054
+ 11.892 -1.214 0.346 0.812 -0.147 -0.355 -0.004 0.009 0.019 -0.013 -0.310 -0.114 0.056
+ 11.102 -1.048 0.308 0.695 0.018 -0.158 -0.083 0.003 0.045 -0.135 -0.209 -0.040 -0.012
+ 11.999 0.326 -0.408 0.208 -0.422 -0.334 -0.274 -0.069 0.039 0.095 -0.179 -0.069 -0.030
+ 12.208 0.708 -0.540 0.018 -0.360 -0.333 -0.431 -0.111 0.021 0.091 -0.443 0.182 -0.278
+ 12.093 0.490 -0.499 0.098 -0.446 -0.303 -0.464 -0.220 0.088 0.190 -0.399 0.136 -0.224
+ 11.442 0.457 -0.432 0.205 -0.383 -0.307 -0.309 -0.422 0.086 0.254 -0.396 0.036 -0.264
+ 11.005 0.014 0.112 0.295 -0.333 -0.340 -0.139 -0.310 -0.084 0.215 -0.474 -0.009 -0.195
+ 11.170 -0.158 0.157 0.241 -0.169 -0.404 -0.140 -0.217 -0.174 0.324 -0.536 0.029 -0.326
+ 11.280 0.089 -0.387 0.061 0.049 -0.145 -0.564 -0.270 -0.150 0.375 -0.256 0.032 -0.222
+ 12.183 0.236 -0.538 -0.086 -0.100 -0.334 -0.645 -0.121 -0.122 0.300 -0.206 -0.048 -0.252
+ 12.222 0.260 -0.570 -0.091 -0.272 -0.345 -0.735 -0.086 -0.074 0.418 -0.283 0.015 -0.344
+ 12.564 0.263 -0.712 -0.056 -0.457 -0.328 -0.708 -0.126 0.025 0.384 -0.216 -0.005 -0.286
+ 12.558 0.443 -0.703 -0.121 -0.344 -0.459 -0.471 -0.318 -0.120 0.343 -0.268 0.008 -0.232
+ 11.133 0.722 -0.475 -0.305 -0.183 -0.410 -0.361 -0.509 -0.286 0.234 -0.117 -0.207 -0.269
+ 9.970 0.905 -0.463 -0.159 -0.164 -0.351 -0.317 -0.529 -0.449 0.210 0.006 -0.219 -0.284
+ 6.519 0.758 -0.017 -0.011 -0.013 -0.061 -0.216 -0.155 -0.103 0.220 -0.043 -0.288 -0.245
+ 6.006 0.766 -0.032 0.055 -0.173 0.023 -0.172 -0.228 0.065 0.187 -0.006 -0.278 -0.257
+ 5.669 0.875 0.266 0.158 -0.211 -0.301 -0.354 -0.342 -0.001 0.094 -0.075 -0.198 -0.078
+ 5.588 0.564 0.382 0.181 -0.203 -0.343 -0.306 -0.198 -0.063 0.215 -0.191 -0.155 -0.133
+ 8.199 -0.001 0.323 -0.179 -0.131 -0.366 -0.358 -0.105 -0.187 -0.043 -0.354 -0.146 -0.188
+ 8.768 0.109 -0.147 -0.094 -0.028 -0.262 -0.166 -0.088 0.080 0.164 -0.070 -0.203 -0.038
+ 12.075 0.000 -0.660 -0.013 -0.393 -0.401 -0.436 -0.172 -0.042 0.119 -0.165 -0.143 -0.007
+ 13.145 -0.034 -0.662 -0.099 -0.571 -0.558 -0.579 -0.128 -0.003 0.310 -0.222 -0.100 0.001
+ 13.351 -0.007 -0.782 -0.020 -0.602 -0.581 -0.502 -0.104 0.073 0.217 -0.311 -0.081 -0.008
+ 13.622 -0.133 -0.854 -0.005 -0.648 -0.526 -0.533 -0.046 0.073 0.204 -0.347 -0.046 -0.098
+ 13.417 -0.098 -0.892 -0.048 -0.711 -0.421 -0.639 0.111 -0.064 0.336 -0.493 0.046 -0.131
+ 13.653 -0.206 -0.872 -0.129 -0.708 -0.401 -0.680 0.207 -0.105 0.435 -0.636 0.003 -0.190
+ 13.786 -0.050 -0.940 -0.169 -0.612 -0.421 -0.582 0.182 -0.142 0.424 -0.602 -0.117 -0.147
+ 13.769 0.004 -0.991 -0.288 -0.576 -0.350 -0.522 0.192 -0.247 0.419 -0.570 -0.189 -0.122
+ 13.393 0.037 -1.071 -0.435 -0.580 -0.333 -0.466 0.212 -0.222 0.462 -0.651 -0.233 -0.122
+ 13.445 -0.002 -0.976 -0.430 -0.662 -0.277 -0.529 0.238 -0.253 0.557 -0.629 -0.251 -0.143
+ 13.744 0.038 -0.976 -0.422 -0.681 -0.183 -0.553 0.220 -0.294 0.537 -0.580 -0.305 -0.135
+ 13.751 -0.083 -0.888 -0.530 -0.651 -0.197 -0.483 0.218 -0.333 0.484 -0.505 -0.347 -0.123
+ 13.300 -0.004 -0.819 -0.603 -0.755 -0.120 -0.534 0.231 -0.350 0.615 -0.507 -0.424 -0.136
+ 13.696 -0.039 -0.734 -0.595 -0.741 -0.083 -0.541 0.167 -0.408 0.611 -0.449 -0.379 -0.143
+ 13.688 0.045 -0.610 -0.685 -0.681 -0.078 -0.590 0.083 -0.466 0.563 -0.327 -0.312 -0.205
+ 13.030 0.163 -0.422 -0.807 -0.678 -0.117 -0.593 -0.020 -0.362 0.516 -0.242 -0.320 -0.208
+ 12.805 0.193 -0.398 -0.867 -0.696 -0.164 -0.565 -0.085 -0.360 0.550 -0.215 -0.221 -0.223
+ 12.574 0.526 -0.421 -0.803 -0.736 -0.223 -0.481 -0.360 -0.351 0.544 -0.276 0.014 -0.192
+ 12.488 0.278 -0.194 -0.749 -0.608 -0.209 -0.482 -0.507 -0.429 0.501 -0.394 0.170 -0.218
+ 11.090 0.251 0.011 -0.808 -0.512 -0.249 -0.442 -0.698 -0.409 0.663 -0.304 0.251 -0.126
+ 11.251 0.371 0.060 -0.655 -0.326 -0.214 -0.343 -0.758 -0.491 0.280 -0.391 0.128 -0.209
+ 7.815 0.616 0.263 -0.567 -0.388 -0.227 -0.383 -0.707 -0.372 0.487 -0.543 0.139 -0.254
+ 6.427 0.800 0.153 -0.175 -0.387 -0.223 -0.261 -0.061 0.100 0.339 -0.133 -0.126 -0.147
+ 6.250 0.881 0.199 -0.079 -0.398 -0.193 -0.333 -0.037 0.003 0.388 -0.117 -0.122 -0.014
+ 5.645 0.680 -0.112 -0.341 -0.568 -0.268 -0.322 -0.088 -0.009 0.441 -0.037 -0.123 -0.085
+ 5.246 0.605 -0.119 -0.274 -0.437 -0.196 -0.367 0.039 -0.007 0.206 -0.050 -0.284 -0.142
+ 4.945 0.489 0.006 -0.210 -0.538 -0.190 -0.068 0.029 0.072 0.383 0.062 -0.083 -0.068
+ 6.617 0.050 -0.291 0.120 -0.569 -0.466 0.011 -0.014 -0.097 -0.090 -0.207 0.078 -0.031
+ 6.002 0.135 -0.287 -0.062 -0.637 -0.357 0.049 -0.170 -0.137 -0.098 -0.218 0.063 -0.048
+ 4.493 0.332 -0.055 -0.072 -0.504 -0.241 -0.108 -0.126 -0.082 0.183 0.090 0.132 -0.091
+ 4.316 0.299 -0.340 0.016 -0.290 -0.169 -0.108 -0.120 0.066 0.284 0.033 0.005 0.044
+ 4.381 0.329 -0.192 -0.143 -0.322 -0.178 -0.110 -0.266 -0.005 0.096 0.156 0.193 -0.074
+ 4.041 0.085 -0.266 -0.209 -0.276 -0.134 -0.001 -0.177 -0.171 0.149 0.127 0.039 0.056
+ 4.020 0.282 -0.328 -0.135 -0.182 -0.056 -0.119 -0.010 -0.073 0.101 0.064 0.095 -0.025
+ 3.944 0.221 -0.205 0.178 -0.126 -0.094 -0.247 -0.192 -0.109 0.236 0.162 0.093 -0.041
+ 3.772 0.170 -0.227 -0.040 -0.200 -0.100 -0.220 -0.263 -0.171 0.188 0.100 0.006 -0.003
+ 3.800 0.233 -0.288 0.028 -0.293 -0.110 -0.087 -0.163 -0.189 -0.084 -0.121 0.158 0.034
+ 3.810 0.291 -0.183 0.018 -0.077 0.096 -0.223 -0.275 -0.088 0.056 -0.045 0.076 -0.182
+ 3.853 0.382 -0.132 0.040 -0.159 -0.067 -0.190 -0.126 -0.153 0.112 0.033 0.060 -0.107
+ 3.730 0.310 -0.106 0.186 -0.102 -0.109 -0.223 -0.239 -0.086 0.111 0.031 -0.129 -0.031
+ 3.960 0.464 0.116 0.143 -0.114 -0.031 -0.033 -0.129 -0.111 0.009 -0.030 0.114 0.040
+ 3.903 0.571 0.056 -0.090 -0.133 0.152 -0.087 -0.238 -0.162 -0.106 0.133 0.028 -0.128
+ 4.522 0.371 0.125 -0.155 -0.067 -0.183 0.024 -0.263 -0.117 -0.065 -0.229 -0.179 0.023
+ 6.277 0.501 0.424 -0.126 -0.014 -0.315 0.139 -0.308 0.018 -0.091 -0.497 -0.346 0.022
+ 5.459 0.156 0.264 0.235 -0.033 -0.205 0.078 0.101 -0.148 -0.066 -0.239 -0.157 -0.279
+ 5.420 0.058 0.179 0.143 -0.105 -0.223 0.034 -0.056 -0.132 -0.128 -0.202 -0.048 -0.325
+ 4.937 -0.040 -0.144 -0.313 -0.371 -0.265 0.125 -0.169 -0.132 0.130 -0.212 -0.104 -0.115
+ 5.178 0.309 -0.261 -0.128 -0.334 -0.235 0.146 -0.024 -0.179 0.000 -0.393 -0.069 -0.007
+ 5.305 0.207 -0.351 -0.159 -0.383 -0.248 0.128 0.018 -0.153 -0.165 -0.342 -0.212 0.014
+ 5.605 0.156 -0.492 -0.100 -0.234 -0.253 -0.056 -0.105 -0.156 -0.157 -0.531 -0.130 0.105
+ 5.574 -0.281 -0.521 0.056 -0.201 -0.166 -0.084 -0.191 -0.106 -0.098 -0.283 0.023 0.075
+ 5.842 -0.803 -0.145 0.375 -0.075 -0.065 -0.072 -0.330 -0.210 -0.052 -0.167 0.049 0.134
+ 5.796 -0.501 -0.466 0.234 -0.234 -0.265 -0.073 -0.201 -0.213 -0.209 -0.487 -0.055 0.102
+ 5.176 0.429 -0.224 0.019 -0.424 -0.373 -0.037 0.113 0.065 -0.013 -0.449 -0.285 -0.034
+ 4.859 0.300 -0.083 -0.212 -0.541 -0.284 0.143 0.006 0.096 0.060 -0.454 -0.155 -0.174
+ 4.342 0.018 -0.027 -0.161 -0.339 -0.193 0.241 0.102 0.001 0.019 -0.301 -0.090 -0.277
+ 4.327 -0.123 0.061 0.044 0.062 -0.209 -0.014 -0.114 -0.089 0.021 -0.129 -0.053 -0.287
+ 4.519 -0.184 0.209 0.091 -0.186 -0.224 0.068 -0.225 -0.179 -0.012 -0.062 0.116 -0.088
+ 4.590 -0.186 0.267 0.033 -0.090 -0.202 0.024 -0.276 -0.142 -0.095 -0.127 0.014 -0.097
+ 4.437 -0.095 0.138 0.071 -0.020 -0.216 0.135 -0.120 -0.139 0.013 -0.108 0.012 -0.120
+ 4.349 -0.098 0.045 -0.043 -0.184 -0.354 -0.016 -0.165 -0.085 0.085 -0.036 0.043 -0.122
+ 4.262 0.072 0.147 -0.014 -0.092 -0.183 0.036 -0.195 -0.106 0.083 -0.059 0.054 -0.071
+ 4.321 0.027 0.168 0.009 -0.136 -0.278 -0.070 -0.088 -0.088 0.222 -0.011 -0.075 -0.182
+ 4.166 0.182 -0.079 -0.091 -0.242 -0.395 -0.023 -0.102 -0.069 0.168 0.013 0.011 0.003
+ 4.529 0.436 0.040 0.072 -0.393 -0.273 0.139 0.010 0.015 0.023 -0.048 -0.016 -0.118
+ 4.369 0.654 0.017 -0.085 -0.485 -0.089 0.198 0.114 -0.043 -0.062 -0.239 -0.141 -0.153
+ 4.514 0.528 -0.223 -0.140 -0.505 -0.250 0.111 0.139 0.149 0.128 -0.199 -0.240 0.006
+ 4.211 0.341 -0.333 -0.052 -0.430 -0.237 0.040 0.201 0.222 0.256 -0.298 -0.207 0.012
+ 3.631 0.395 -0.146 0.070 -0.296 -0.002 0.046 0.028 -0.097 -0.084 -0.196 -0.094 0.046
+ 4.310 0.454 -0.290 0.171 0.056 -0.249 -0.072 -0.254 -0.133 0.147 -0.107 0.033 -0.009
+ 4.044 0.136 -0.327 0.212 -0.258 -0.269 -0.062 -0.098 -0.031 0.240 -0.069 0.080 -0.011
+ 3.609 0.267 -0.170 0.195 -0.073 -0.181 -0.060 0.012 -0.339 0.085 0.017 0.062 -0.027
+ 5.175 0.768 -0.812 -0.184 -0.006 -0.309 -0.238 -0.050 -0.191 -0.062 -0.010 -0.092 -0.101
+ 4.432 0.440 -0.529 -0.004 -0.037 -0.183 -0.173 -0.088 -0.152 0.060 -0.043 0.005 -0.048
+ 3.651 0.291 -0.076 0.193 0.138 0.014 -0.149 -0.146 -0.124 -0.051 -0.069 0.006 -0.206
+ 3.939 0.508 -0.127 -0.005 -0.075 -0.104 -0.074 -0.064 -0.309 -0.052 -0.120 0.015 -0.067
+ 5.376 0.838 -0.390 -0.237 -0.356 -0.210 -0.052 0.048 -0.636 -0.127 0.003 0.033 -0.045
+ 4.135 0.289 -0.178 -0.021 -0.222 -0.033 0.047 -0.106 -0.207 0.004 0.140 0.082 0.039
+ 3.715 0.408 0.119 0.180 -0.111 -0.058 -0.287 -0.138 -0.031 0.076 0.055 -0.001 -0.109
+ 3.609 0.175 -0.170 -0.018 -0.220 0.010 -0.125 -0.131 -0.133 0.128 -0.025 -0.021 -0.016
+ 3.573 0.350 -0.104 -0.050 -0.080 -0.009 -0.011 -0.098 -0.212 0.169 0.088 -0.018 0.102
+ 3.534 0.176 -0.090 0.263 -0.137 -0.078 -0.002 -0.074 -0.176 0.142 0.126 0.071 -0.027
+ 3.330 0.207 0.112 0.313 -0.122 -0.095 -0.237 -0.204 -0.098 0.099 0.028 -0.099 -0.106
+ 3.709 0.310 0.048 0.240 -0.063 -0.072 -0.118 -0.266 -0.185 0.045 0.104 -0.051 -0.115
+ 3.589 0.296 -0.095 0.053 -0.031 -0.205 -0.216 -0.347 -0.118 0.143 0.229 -0.001 -0.149
+ 3.267 0.197 -0.045 0.121 -0.066 0.028 -0.106 -0.305 -0.054 0.085 0.049 -0.006 -0.052
+ 3.348 0.309 -0.064 0.035 0.012 -0.012 -0.063 -0.142 -0.180 0.148 -0.091 -0.154 -0.028
+ 3.452 0.291 -0.246 -0.046 -0.074 -0.150 -0.123 -0.103 -0.240 0.028 -0.039 -0.001 0.019
+ 3.326 0.126 -0.123 0.152 -0.198 -0.192 -0.149 -0.039 0.004 0.088 0.024 -0.014 0.004
+ 3.291 0.262 -0.103 0.179 0.049 -0.012 -0.005 -0.084 -0.046 0.000 0.049 0.032 0.094
+ 3.885 0.532 0.028 0.239 0.016 -0.146 -0.132 -0.305 -0.262 -0.041 0.067 0.194 0.147
+ 6.236 1.190 0.325 -0.011 -0.127 -0.234 -0.293 -0.183 -0.249 -0.059 -0.115 -0.097 -0.162
+ 7.489 1.237 0.364 0.100 -0.115 -0.281 -0.351 -0.209 -0.324 -0.053 -0.099 -0.102 -0.228
+ 6.787 1.414 -0.071 0.500 -0.186 -0.633 -0.153 -0.194 -0.438 0.132 -0.108 -0.175 -0.170
+ 5.817 1.110 0.321 0.423 -0.179 -0.428 -0.195 -0.235 -0.341 0.058 0.043 -0.148 -0.127
+ 4.906 0.462 0.574 0.371 -0.266 -0.043 -0.315 -0.309 -0.340 -0.011 0.043 -0.035 -0.148
+ 3.741 0.380 0.277 0.000 -0.312 -0.118 -0.224 -0.338 -0.157 -0.011 -0.020 -0.021 0.040
+ 5.408 0.267 -0.089 0.066 -0.417 -0.320 -0.068 -0.158 -0.160 -0.058 -0.146 -0.106 -0.063
+ 8.242 0.143 -0.283 0.069 -0.525 -0.284 0.084 0.036 -0.029 0.073 -0.249 -0.226 -0.212
+ 5.655 0.072 0.069 0.020 -0.341 -0.231 0.293 0.034 0.147 0.028 -0.265 -0.265 -0.200
+ 4.881 -0.748 0.078 0.067 -0.149 -0.275 0.145 -0.132 -0.036 -0.144 -0.190 -0.046 -0.148
+ 5.562 -0.729 0.007 0.006 -0.088 -0.306 -0.176 -0.054 0.099 0.004 -0.143 -0.024 -0.042
+ 5.818 -0.805 -0.289 -0.155 -0.210 -0.470 -0.230 0.059 0.357 0.025 -0.191 0.070 -0.044
+ 6.105 -0.559 -0.242 -0.141 -0.196 -0.472 -0.116 0.204 0.316 -0.057 -0.351 -0.092 -0.117
+ 5.274 -0.339 -0.275 -0.086 -0.213 -0.428 -0.038 -0.044 0.145 0.064 -0.256 -0.082 -0.252
+ 4.727 -0.040 -0.054 -0.185 -0.344 -0.160 0.132 0.171 -0.058 -0.057 -0.035 0.038 -0.051
+ 4.518 0.315 0.154 0.124 -0.124 -0.052 -0.089 -0.049 -0.183 -0.030 -0.110 -0.185 -0.108
+ 4.152 0.345 -0.029 0.088 -0.011 -0.060 -0.097 -0.016 -0.141 -0.107 0.004 -0.119 -0.138
+ 3.729 0.274 -0.036 -0.113 -0.069 -0.054 -0.079 0.118 -0.194 -0.056 -0.013 -0.052 -0.114
+ 3.920 0.268 -0.103 0.124 -0.058 -0.084 -0.039 -0.212 -0.229 -0.003 -0.072 -0.154 -0.092
+ 3.913 0.336 -0.110 0.123 -0.253 -0.059 0.015 -0.037 -0.234 -0.165 -0.065 -0.076 -0.016
+ 4.080 -0.039 0.171 0.122 -0.244 -0.079 0.002 0.062 -0.012 -0.041 -0.051 0.020 -0.060
+ 6.231 -0.423 0.126 0.146 -0.261 -0.225 0.097 -0.273 0.217 -0.214 -0.043 -0.101 -0.179
+ 5.081 -0.319 0.255 0.024 -0.273 -0.110 0.094 -0.300 0.060 -0.269 -0.015 0.036 -0.149
+ 5.516 0.411 0.096 0.128 -0.364 -0.141 -0.055 -0.057 0.088 -0.189 -0.179 -0.162 -0.119
+ 4.676 0.191 0.058 0.114 -0.101 -0.074 0.042 -0.061 0.091 -0.255 -0.081 -0.188 -0.020
+ 4.625 0.161 -0.014 0.114 -0.228 -0.119 0.001 -0.185 -0.027 -0.310 -0.148 -0.207 -0.075
+ 5.446 0.593 0.038 -0.015 -0.309 -0.089 -0.090 0.096 0.109 -0.232 -0.248 -0.222 -0.073
+ 5.172 0.251 0.130 0.114 -0.115 -0.016 -0.049 0.036 0.020 -0.186 -0.303 -0.245 -0.188
+ 5.469 0.021 0.018 -0.064 -0.263 -0.179 -0.028 0.180 -0.092 0.163 -0.046 -0.020 -0.188
+ 5.606 -0.256 0.082 -0.161 -0.213 -0.159 0.073 0.018 -0.160 -0.067 -0.230 -0.102 -0.085
+ 5.953 -0.227 0.012 -0.111 -0.095 -0.035 0.023 -0.051 -0.016 -0.043 -0.282 -0.025 0.038
+ 6.047 -0.281 -0.114 -0.217 -0.182 -0.094 0.172 -0.042 -0.086 -0.033 -0.147 -0.148 -0.096
+ 5.708 -0.567 -0.338 -0.419 -0.343 -0.334 0.065 0.026 0.105 0.198 -0.037 -0.067 0.060
+ 5.094 -0.639 -0.206 -0.139 -0.199 -0.188 0.046 -0.116 -0.028 0.110 -0.090 -0.089 0.028
+ 4.948 -0.379 -0.139 -0.149 -0.213 -0.203 -0.030 -0.238 -0.085 -0.037 -0.241 -0.086 0.143
+ 4.533 -0.066 -0.111 -0.244 -0.235 -0.182 0.015 0.056 -0.056 -0.106 -0.163 0.039 0.118
+ 4.281 0.332 -0.047 -0.281 -0.167 -0.082 -0.153 -0.122 -0.101 0.013 -0.152 -0.214 -0.138
+ 3.424 0.027 -0.250 0.167 0.049 0.038 -0.115 -0.079 -0.072 0.114 -0.014 -0.005 0.014
+ 3.416 0.018 -0.016 0.141 -0.072 -0.146 -0.181 -0.002 -0.131 -0.026 0.029 -0.021 -0.073
+ 3.644 0.110 -0.060 0.028 -0.015 -0.052 0.083 -0.134 -0.101 0.006 -0.090 -0.040 -0.158
+ 4.380 -0.477 0.193 -0.133 0.112 0.079 -0.106 -0.112 -0.136 -0.144 -0.047 -0.057 -0.118
+ 4.398 -0.396 0.082 -0.100 -0.012 -0.205 -0.164 -0.005 -0.022 0.049 0.091 0.017 0.045
+ 3.474 -0.014 -0.501 -0.010 0.028 0.005 -0.165 -0.022 -0.212 -0.004 0.038 -0.089 -0.067
+ 3.575 0.063 -0.355 -0.039 0.028 0.142 -0.098 -0.094 -0.152 -0.042 0.041 -0.127 -0.026
+ 3.497 0.165 -0.229 0.217 0.075 0.168 -0.077 -0.216 -0.167 0.001 0.082 0.118 -0.033
+ 3.661 0.161 -0.166 0.046 -0.189 -0.082 -0.160 -0.108 0.002 -0.084 -0.067 -0.044 0.026
+ 3.740 0.211 0.027 0.113 -0.069 0.109 -0.145 -0.197 -0.082 0.041 0.122 0.018 0.040
+ 3.734 0.286 -0.080 0.157 0.031 0.055 -0.169 -0.093 -0.145 0.034 0.049 0.045 -0.022
+ 3.835 0.239 -0.130 0.037 0.035 0.033 -0.137 -0.155 -0.275 -0.003 0.084 0.101 -0.041
+ 3.805 0.303 -0.196 -0.118 -0.224 -0.124 -0.100 -0.090 -0.112 0.057 0.156 0.136 -0.025
+ 3.389 0.054 -0.226 -0.167 0.042 -0.072 -0.211 -0.218 0.086 0.180 -0.004 0.113 -0.040
+ 3.666 0.274 -0.022 0.061 -0.124 -0.040 -0.276 -0.168 -0.094 -0.047 0.097 0.030 -0.107
+ 3.651 0.191 -0.115 0.117 0.002 -0.183 -0.278 -0.272 -0.276 0.018 0.108 -0.030 -0.091
+ 3.634 0.199 -0.308 0.030 -0.078 -0.083 -0.209 -0.349 -0.028 0.003 -0.062 0.012 -0.164
+ 3.457 0.082 -0.197 0.184 0.044 0.142 -0.128 -0.140 0.092 0.082 -0.040 -0.069 -0.228
+ 3.953 0.283 0.033 0.210 0.048 -0.088 -0.192 -0.110 -0.067 -0.041 0.131 0.013 -0.078
+ 3.856 0.399 0.037 0.090 0.109 -0.081 -0.342 -0.327 -0.101 0.002 0.076 -0.019 -0.150
+ 5.463 -0.264 -0.198 0.046 0.111 -0.030 -0.401 0.136 -0.046 -0.189 -0.051 -0.054 -0.053
+ 7.238 -0.514 -0.291 0.042 -0.030 -0.211 -0.542 0.285 0.059 -0.332 -0.112 -0.022 0.006
+ 4.713 -0.396 -0.464 0.190 0.092 0.035 -0.510 0.135 -0.049 -0.338 0.093 0.033 0.010
+ 3.409 -0.342 -0.387 0.056 0.102 -0.080 -0.189 -0.009 -0.220 -0.203 0.102 0.174 -0.139
+ 3.915 -0.235 -0.281 -0.054 0.064 0.097 -0.018 0.014 -0.221 0.009 0.011 -0.047 -0.068
+ 6.008 -0.548 -0.478 -0.066 -0.203 -0.083 -0.036 0.112 -0.171 -0.100 0.189 0.160 -0.170
+ 7.276 -0.705 -1.123 -0.046 -0.275 -0.272 -0.220 0.293 -0.049 -0.221 0.015 0.175 -0.294
+ 8.924 -0.732 -1.064 -0.145 -0.057 -0.244 -0.146 0.052 -0.159 -0.100 0.068 0.182 -0.312
+ 10.360 -0.536 -1.073 -0.240 0.042 -0.313 0.118 0.085 -0.091 -0.145 -0.169 0.012 -0.231
+ 12.029 0.356 -0.981 -0.446 -0.103 -0.497 0.013 -0.106 -0.251 -0.027 -0.386 0.071 -0.240
+ 13.178 0.834 -1.360 -0.356 -0.237 -0.376 -0.255 0.111 -0.162 0.006 -0.366 -0.075 -0.166
+ 14.185 0.460 -1.718 -0.170 -0.351 -0.286 -0.186 0.265 -0.087 0.028 -0.376 -0.255 -0.064
+ 14.021 0.480 -1.810 -0.254 -0.343 -0.275 -0.171 0.239 -0.040 -0.028 -0.322 -0.308 0.005
+ 14.368 0.380 -1.740 -0.179 -0.457 -0.149 -0.255 0.284 -0.093 0.035 -0.344 -0.329 0.023
+ 14.574 0.389 -1.616 -0.257 -0.570 -0.027 -0.329 0.246 -0.191 0.161 -0.360 -0.344 -0.062
+ 14.539 0.658 -1.503 -0.355 -0.682 0.079 -0.306 0.177 -0.351 0.318 -0.308 -0.315 -0.244
+ 13.865 1.163 -1.241 -0.394 -0.727 -0.102 -0.209 0.023 -0.487 0.278 -0.143 -0.232 -0.255
+ 12.653 1.027 -0.917 -0.067 -0.637 -0.305 0.097 -0.063 -0.436 0.227 -0.282 0.113 -0.074
+ 11.561 0.590 -0.685 0.237 -0.157 -0.137 0.431 -0.048 -0.548 0.101 -0.781 0.085 -0.116
+ 11.483 0.600 -0.650 0.227 -0.197 -0.192 0.433 -0.074 -0.446 0.064 -0.725 0.044 -0.037
+ 11.486 0.423 -0.560 0.220 -0.148 -0.072 0.371 0.004 -0.546 -0.009 -0.781 -0.017 0.057
+ 11.154 0.492 -0.541 0.293 -0.114 -0.079 0.404 0.054 -0.693 -0.018 -0.816 0.004 0.087
+ 10.859 0.732 -0.574 0.327 -0.250 -0.094 0.289 0.225 -0.694 0.019 -0.699 -0.137 0.054
+ 12.014 0.999 -0.491 -0.180 -0.440 -0.259 -0.163 -0.008 -0.663 0.059 -0.097 0.002 0.127
+ 13.444 0.993 -1.041 -0.416 -0.622 -0.137 -0.361 -0.102 -0.577 0.355 -0.002 -0.101 -0.110
+ 13.934 0.853 -1.316 -0.322 -0.685 -0.152 -0.533 -0.124 -0.389 0.473 -0.098 -0.318 -0.255
+ 14.013 0.714 -1.278 -0.248 -0.462 -0.370 -0.500 -0.264 -0.080 0.466 -0.161 -0.369 -0.124
+ 13.561 0.695 -0.999 -0.307 -0.141 -0.690 -0.403 -0.365 0.040 0.480 -0.408 -0.042 -0.033
+ 12.310 0.282 -0.436 0.310 -0.259 -0.719 -0.481 -0.118 0.099 -0.036 -0.350 -0.026 -0.048
+ 9.902 0.009 -0.148 0.204 -0.340 -0.181 -0.514 -0.079 0.160 0.181 -0.163 0.034 -0.081
+ 8.475 0.424 -0.584 -0.054 -0.364 -0.408 -0.076 -0.231 0.204 0.215 -0.246 -0.329 -0.134
+ 8.832 -0.277 -0.559 -0.155 -0.449 -0.305 -0.019 -0.084 0.377 0.299 -0.216 -0.347 -0.254
+ 7.766 0.044 -0.366 -0.268 -0.398 -0.355 -0.033 -0.131 0.295 0.317 -0.242 -0.192 -0.068
+ 11.029 -1.260 -0.351 0.088 -0.833 0.086 -0.238 -0.148 0.056 -0.214 -0.122 -0.153 -0.162
+ 11.286 -1.691 -0.145 0.108 -0.878 -0.082 -0.129 -0.224 -0.086 -0.202 -0.096 -0.147 -0.126
+ 11.208 -2.469 -0.016 0.466 -0.308 -0.278 -0.052 -0.091 -0.044 0.024 -0.180 -0.185 -0.010
+ 12.503 -1.752 -0.431 0.012 -0.258 -0.420 -0.304 -0.148 -0.167 -0.143 -0.161 -0.014 0.044
+ 12.091 -1.207 -0.266 0.584 0.183 -0.174 -0.405 -0.100 -0.222 -0.209 -0.199 -0.187 -0.025
+ 11.913 -0.280 -0.135 0.334 0.647 0.097 -0.245 -0.297 -0.185 -0.375 -0.376 -0.286 -0.278
+ 11.921 0.288 -0.181 0.053 0.328 -0.191 -0.386 -0.285 -0.150 -0.042 -0.050 -0.181 -0.382
+ 11.788 0.831 -0.058 0.248 0.257 -0.090 -0.206 -0.245 -0.203 -0.022 -0.107 -0.306 -0.275
+ 11.453 0.959 -0.046 0.381 0.122 0.045 -0.262 -0.310 -0.192 -0.048 -0.223 -0.102 -0.278
+ 11.435 1.127 0.005 0.283 -0.074 0.020 -0.308 -0.178 -0.072 -0.118 -0.273 -0.133 -0.142
+ 10.548 1.152 0.099 0.247 -0.052 0.092 -0.220 -0.184 -0.340 -0.205 -0.245 -0.160 -0.321
+ 9.962 0.659 -0.180 0.179 0.090 0.213 0.031 -0.069 -0.376 -0.451 -0.142 -0.007 -0.160
+ 10.065 0.590 -0.460 0.101 0.147 0.240 0.120 -0.109 -0.461 -0.399 -0.014 0.049 -0.116
+ 9.165 0.347 -0.681 -0.103 0.091 0.486 0.074 -0.403 -0.593 -0.271 0.035 -0.066 -0.006
+ 8.346 0.692 -0.265 0.150 -0.034 0.098 -0.196 -0.542 -0.409 -0.177 -0.050 0.030 -0.124
+ 6.418 0.389 -0.173 -0.032 0.124 0.038 -0.274 -0.512 -0.357 0.022 0.103 -0.104 -0.145
+ 5.705 0.134 -0.243 0.057 0.221 -0.085 -0.067 -0.252 -0.341 0.006 0.045 -0.279 -0.068
+ 5.649 -0.259 -0.601 0.414 -0.020 0.007 -0.230 -0.267 -0.127 -0.108 -0.101 -0.174 0.053
+ 6.381 -0.325 -0.686 0.476 -0.095 -0.215 -0.374 -0.172 0.057 -0.130 0.153 -0.100 0.202
+ 7.238 -0.608 -0.722 0.315 -0.373 -0.207 -0.230 -0.105 0.118 -0.066 0.262 -0.067 0.139
+ 8.271 -0.554 -1.007 0.079 -0.201 -0.188 -0.147 0.134 0.215 -0.251 0.068 -0.066 0.101
+ 9.813 -0.115 -0.780 0.010 -0.112 -0.279 -0.464 0.175 0.020 -0.066 -0.136 -0.008 -0.054
+ 10.414 -0.671 -1.048 -0.248 -0.153 -0.124 -0.177 0.295 -0.071 -0.238 -0.233 0.040 -0.113
+ 11.263 -0.644 -1.312 -0.392 -0.055 -0.315 0.023 0.359 0.076 -0.379 -0.187 0.176 -0.148
+ 11.826 -0.640 -1.307 -0.274 -0.023 -0.475 0.011 0.073 -0.068 -0.315 -0.059 0.280 -0.138
+ 12.104 -0.669 -1.319 -0.213 0.015 -0.304 0.055 0.096 -0.182 -0.238 -0.292 -0.040 -0.214
+ 12.256 -0.617 -1.185 -0.324 0.060 -0.096 -0.013 0.057 -0.162 -0.267 -0.418 0.090 -0.168
+ 13.066 0.108 -1.003 -0.386 -0.112 -0.298 -0.271 0.117 -0.183 -0.086 -0.474 0.023 -0.144
+ 14.045 0.485 -1.377 -0.575 -0.164 -0.388 -0.241 0.211 -0.169 -0.082 -0.371 -0.003 -0.229
+ 14.692 0.318 -1.641 -0.428 -0.251 -0.288 -0.366 0.359 -0.162 -0.003 -0.358 -0.161 -0.242
+ 14.664 0.382 -1.599 -0.445 -0.329 -0.336 -0.354 0.322 -0.129 -0.007 -0.381 -0.286 -0.083
+ 14.916 0.300 -1.398 -0.406 -0.356 -0.333 -0.475 0.394 -0.252 0.155 -0.431 -0.294 -0.157
+ 14.957 0.425 -1.296 -0.585 -0.284 -0.355 -0.477 0.250 -0.285 0.314 -0.350 -0.341 -0.302
+ 14.663 0.785 -1.246 -0.603 -0.296 -0.420 -0.452 0.045 -0.381 0.529 -0.322 -0.292 -0.468
+ 14.671 0.893 -0.861 -0.818 -0.441 -0.410 -0.301 -0.001 -0.610 0.501 -0.309 -0.185 -0.357
+ 14.328 0.991 -0.464 -0.841 -0.542 -0.355 -0.199 -0.264 -0.764 0.285 -0.237 0.122 -0.239
+ 13.830 0.921 -0.034 -0.748 -0.614 -0.242 -0.330 -0.289 -0.785 0.113 -0.445 0.338 -0.233
+ 13.318 0.903 0.312 -0.795 -0.549 -0.244 -0.184 -0.344 -0.833 -0.075 -0.603 0.266 -0.167
+ 12.811 1.012 0.378 -0.817 -0.461 -0.315 -0.128 -0.328 -0.758 0.004 -0.681 0.152 -0.204
+ 12.162 1.176 0.334 -0.790 -0.307 -0.302 -0.028 -0.334 -0.751 0.026 -0.661 0.020 -0.268
+ 11.359 1.468 0.030 -0.762 0.089 -0.362 0.165 -0.464 -0.867 0.037 -0.538 -0.094 -0.376
+ 11.299 1.238 -0.292 -0.317 0.424 -0.507 0.001 -0.595 -0.688 0.072 -0.409 -0.432 -0.270
+ 11.534 0.856 -0.437 0.278 0.364 -0.727 -0.309 -0.326 -0.486 0.126 -0.526 -0.481 -0.187
+ 11.609 0.313 -0.283 0.608 0.134 -0.846 -0.040 -0.167 -0.616 -0.044 -0.328 -0.325 -0.222
+ 11.526 -0.381 0.265 0.800 -0.158 -0.392 0.055 -0.350 -0.514 -0.041 -0.473 -0.307 -0.374
+ 11.096 -0.425 0.660 0.554 -0.207 -0.344 -0.093 -0.176 -0.495 -0.018 -0.395 -0.355 -0.302
+ 11.135 -0.547 0.842 0.500 -0.029 -0.281 -0.142 -0.113 -0.526 -0.031 -0.321 -0.422 -0.368
+ 11.877 -0.778 0.960 0.514 -0.252 -0.144 -0.271 0.051 -0.577 0.035 -0.364 -0.325 -0.308
+ 12.479 -1.113 0.942 0.633 -0.142 -0.214 -0.427 0.046 -0.531 0.141 -0.316 -0.248 -0.278
+ 12.528 -1.186 1.072 0.609 -0.235 -0.167 -0.296 0.113 -0.705 0.115 -0.286 -0.299 -0.270
+ 12.590 -1.104 1.014 0.635 -0.267 -0.078 -0.299 0.144 -0.767 0.112 -0.314 -0.292 -0.219
+ 12.554 -0.968 0.947 0.633 -0.335 -0.087 -0.367 0.179 -0.666 0.088 -0.356 -0.280 -0.185
+ 12.386 -0.783 0.816 0.743 -0.363 -0.134 -0.419 0.100 -0.639 0.110 -0.291 -0.335 -0.184
+ 12.480 -0.757 0.754 0.763 -0.368 -0.083 -0.444 0.010 -0.774 0.148 -0.302 -0.269 -0.183
+ 12.317 -0.669 0.668 0.807 -0.301 -0.156 -0.381 -0.099 -0.785 0.066 -0.357 -0.146 -0.256
+ 12.350 -0.764 0.661 0.916 -0.232 -0.296 -0.271 -0.304 -0.668 -0.063 -0.344 -0.141 -0.245
+ 12.608 -0.836 0.636 0.695 -0.293 -0.125 -0.124 -0.280 -0.771 -0.290 -0.261 -0.036 -0.401
+ 12.735 -0.788 0.537 0.519 -0.068 -0.411 -0.163 -0.290 -0.551 -0.216 -0.254 -0.179 -0.443
+ 12.546 -0.792 0.332 0.527 -0.070 -0.591 -0.163 -0.318 -0.236 -0.401 -0.272 0.033 -0.463
+ 12.520 -0.746 0.412 0.296 0.064 -0.616 -0.170 -0.275 -0.339 -0.435 -0.230 -0.075 -0.459
+ 12.665 -0.924 0.554 0.161 0.068 -0.502 -0.219 -0.204 -0.449 -0.492 -0.317 -0.077 -0.303
+ 12.901 -0.761 0.506 0.164 0.056 -0.630 -0.133 -0.216 -0.291 -0.513 -0.225 -0.112 -0.384
+ 13.037 -0.693 0.407 0.223 0.062 -0.480 -0.296 -0.165 -0.478 -0.411 -0.256 -0.120 -0.436
+ 13.197 -0.830 0.439 0.490 -0.052 -0.450 -0.168 -0.174 -0.479 -0.361 -0.200 -0.161 -0.435
+ 13.201 -0.601 0.346 0.510 -0.113 -0.380 -0.299 -0.070 -0.546 -0.370 -0.186 -0.320 -0.368
+ 13.156 -0.677 0.515 0.709 -0.271 -0.447 -0.213 -0.018 -0.621 -0.169 -0.247 -0.391 -0.311
+ 13.049 -0.669 0.382 0.952 -0.430 -0.233 -0.284 0.070 -0.707 -0.038 -0.414 -0.249 -0.325
+ 12.951 -0.771 0.407 0.917 -0.259 -0.264 -0.275 0.026 -0.708 0.027 -0.421 -0.239 -0.285
+ 12.753 -0.662 0.348 0.793 -0.106 -0.399 -0.223 0.067 -0.691 0.094 -0.404 -0.217 -0.243
+ 12.530 -0.519 0.227 0.720 0.057 -0.470 -0.266 0.160 -0.662 0.094 -0.406 -0.159 -0.241
+ 12.255 -0.404 0.170 0.554 0.275 -0.468 -0.381 0.191 -0.631 0.113 -0.400 -0.176 -0.149
+ 11.709 -0.184 0.144 0.374 0.423 -0.355 -0.420 0.116 -0.672 0.175 -0.455 -0.183 -0.011
+ 11.290 -0.038 0.129 0.262 0.421 -0.224 -0.329 -0.045 -0.696 0.276 -0.545 -0.212 0.091
+ 11.048 0.063 0.124 0.177 0.420 -0.113 -0.358 -0.124 -0.666 0.363 -0.543 -0.287 0.025
+ 11.025 0.062 0.208 0.073 0.444 -0.090 -0.417 -0.128 -0.655 0.369 -0.476 -0.298 -0.065
+ 11.275 0.049 0.119 0.128 0.441 -0.125 -0.458 -0.046 -0.736 0.417 -0.568 -0.267 -0.090
+ 11.412 0.104 0.087 0.195 0.415 -0.224 -0.491 -0.016 -0.665 0.383 -0.653 -0.196 -0.107
+ 11.607 0.168 -0.079 0.401 0.302 -0.311 -0.489 0.018 -0.596 0.300 -0.676 -0.170 -0.085
+ 11.492 0.297 -0.213 0.517 0.316 -0.452 -0.404 0.020 -0.479 0.082 -0.620 -0.128 -0.151
+ 11.511 0.125 -0.142 0.555 0.380 -0.570 -0.354 0.081 -0.521 0.104 -0.575 -0.141 -0.134
+ 11.405 0.095 -0.077 0.527 0.283 -0.550 -0.318 0.238 -0.693 0.143 -0.501 -0.184 -0.088
+ 10.979 0.165 -0.043 0.498 0.306 -0.614 -0.243 0.262 -0.772 0.261 -0.551 -0.070 -0.282
+ 10.723 0.096 -0.075 0.511 0.294 -0.543 -0.198 0.237 -0.656 0.035 -0.450 -0.181 -0.175
+ 10.817 -0.010 0.070 0.417 0.275 -0.432 -0.260 0.137 -0.472 -0.018 -0.501 -0.387 0.012
+ 10.937 0.336 0.067 0.247 0.372 -0.257 -0.381 0.002 -0.388 0.134 -0.525 -0.582 -0.082
+ 10.749 0.514 0.059 0.007 0.478 -0.289 -0.256 -0.114 -0.440 0.313 -0.334 -0.579 -0.013
+ 10.715 0.652 0.326 -0.342 0.309 -0.184 -0.247 -0.138 -0.534 0.316 -0.069 -0.337 -0.007
+ 10.794 0.996 0.347 -0.581 0.245 -0.240 -0.223 -0.232 -0.714 0.032 -0.071 -0.473 -0.008
+ 10.900 1.273 -0.005 -0.532 0.016 -0.223 0.003 -0.306 -0.563 -0.022 0.043 -0.283 0.041
+ 11.220 1.250 0.063 -0.537 -0.148 -0.487 0.170 -0.469 -0.271 -0.200 0.055 -0.268 0.110
+ 11.583 1.233 0.050 -0.601 -0.471 -0.357 0.054 -0.378 -0.213 -0.209 0.011 -0.211 0.207
+ 11.842 1.114 0.009 -0.421 -0.861 -0.237 0.032 -0.266 -0.089 -0.250 -0.102 -0.078 0.143
+ 11.846 0.912 0.086 -0.466 -0.911 -0.346 0.092 -0.255 0.153 -0.331 -0.021 -0.121 0.073
+ 11.399 1.177 -0.082 -0.425 -0.953 -0.319 0.042 -0.251 0.305 -0.408 0.059 -0.134 -0.117
+ 11.768 1.185 -0.199 -0.587 -1.056 -0.034 -0.054 -0.116 0.058 -0.269 -0.012 -0.035 -0.150
+ 12.176 1.080 -0.378 -0.678 -0.994 0.112 0.006 -0.198 -0.056 -0.122 0.024 0.030 -0.258
+ 12.152 1.202 -0.519 -0.763 -0.806 0.097 -0.056 -0.175 -0.059 -0.027 -0.039 0.065 -0.414
+ 12.494 0.952 -0.637 -0.594 -0.727 0.053 0.022 -0.398 0.019 0.137 -0.104 0.097 -0.575
+ 12.236 1.091 -0.871 -0.391 -0.664 0.082 -0.110 -0.436 0.054 0.197 -0.138 0.070 -0.614
+ 12.078 1.063 -0.807 -0.415 -0.552 0.093 -0.361 -0.368 0.070 0.235 -0.151 0.113 -0.585
+ 10.638 0.779 -0.355 -0.057 -0.347 0.186 -0.329 -0.384 0.064 0.093 -0.346 0.125 -0.329
+ 10.524 0.823 -0.118 0.206 -0.401 -0.041 -0.287 -0.370 -0.034 0.107 -0.439 0.097 -0.275
+ 10.798 0.690 -0.248 0.312 -0.346 -0.169 -0.210 -0.367 -0.100 0.107 -0.398 0.041 -0.192
+ 13.090 0.407 -0.932 -0.000 -0.119 -0.397 -0.581 0.059 -0.282 0.503 -0.322 0.089 -0.358
+ 13.011 0.654 -0.937 -0.110 -0.353 -0.261 -0.628 0.024 -0.206 0.459 -0.350 0.026 -0.355
+ 12.772 0.729 -0.834 -0.084 -0.605 -0.182 -0.616 0.021 -0.008 0.344 -0.362 0.007 -0.285
+ 12.693 0.804 -0.906 0.004 -0.629 -0.196 -0.677 0.038 0.097 0.205 -0.341 0.071 -0.233
+ 12.281 0.889 -0.717 0.089 -0.635 -0.193 -0.703 -0.141 0.095 0.198 -0.228 0.028 -0.150
+ 11.849 1.018 -0.601 0.102 -0.429 -0.258 -0.656 -0.210 -0.148 0.260 -0.257 -0.091 -0.169
+ 9.767 0.976 0.003 0.134 0.069 -0.178 -0.408 -0.153 -0.234 0.140 -0.176 -0.386 -0.341
+ 9.686 0.846 -0.049 0.254 0.106 -0.123 -0.397 -0.026 -0.255 0.006 -0.262 -0.577 -0.070
+ 9.760 0.722 0.040 0.216 0.184 -0.365 -0.369 0.088 -0.395 0.168 -0.252 -0.589 0.034
+ 9.761 0.633 0.053 0.237 0.170 -0.365 -0.336 0.071 -0.391 0.216 -0.299 -0.536 0.018
+ 9.705 0.542 0.165 0.203 0.197 -0.409 -0.229 -0.029 -0.355 0.257 -0.335 -0.607 0.158
+ 9.862 0.504 0.089 0.171 0.239 -0.313 -0.179 -0.064 -0.454 0.300 -0.352 -0.465 0.082
+ 12.095 0.315 -0.347 0.149 -0.028 -0.357 -0.574 0.041 -0.176 0.151 -0.264 -0.124 0.063
+ 12.757 0.091 -0.211 0.214 -0.459 -0.589 -0.577 0.081 -0.339 0.155 -0.038 -0.021 0.019
+ 13.027 -0.015 -0.130 0.316 -0.785 -0.515 -0.470 0.049 -0.403 0.344 -0.163 0.027 -0.099
+ 13.285 -0.104 -0.122 0.318 -0.793 -0.581 -0.488 0.081 -0.457 0.369 -0.153 0.022 -0.193
+ 13.479 -0.230 0.009 0.241 -0.831 -0.422 -0.654 0.145 -0.526 0.446 -0.303 0.140 -0.266
+ 13.294 -0.243 0.191 0.185 -0.869 -0.386 -0.579 0.023 -0.551 0.396 -0.243 0.087 -0.202
+ 13.237 -0.363 0.321 0.253 -0.857 -0.368 -0.603 -0.011 -0.544 0.338 -0.228 0.083 -0.196
+ 13.109 -0.436 0.495 0.290 -0.868 -0.348 -0.516 -0.130 -0.514 0.275 -0.274 0.030 -0.158
+ 12.559 -0.370 0.581 0.353 -0.752 -0.260 -0.495 -0.215 -0.547 0.213 -0.345 0.008 -0.121
+ 11.826 -0.393 0.684 0.474 -0.769 -0.314 -0.348 -0.216 -0.617 0.192 -0.405 -0.122 -0.169
+ 9.919 -0.600 0.708 0.525 -0.594 -0.260 -0.278 -0.110 -0.377 0.166 -0.320 -0.091 0.021
+ 7.760 -0.254 0.698 0.265 -0.248 -0.199 0.090 -0.176 0.076 -0.021 -0.215 -0.253 -0.267
+ 6.626 -0.143 0.948 0.258 -0.031 -0.168 -0.148 -0.500 -0.027 -0.161 -0.001 -0.009 -0.292
+ 5.585 0.404 0.494 0.096 -0.275 -0.239 -0.524 -0.246 -0.319 0.241 -0.169 -0.101 -0.099
+ 5.454 0.368 0.389 0.144 -0.256 -0.236 -0.497 -0.164 -0.397 0.135 -0.040 0.085 -0.221
+ 6.475 -0.094 0.070 0.185 -0.511 -0.098 -0.323 -0.238 -0.146 -0.100 -0.105 0.108 -0.145
+ 10.795 -1.213 -0.458 0.038 -0.484 0.026 -0.147 -0.173 0.136 0.036 -0.073 -0.107 -0.285
+ 12.237 -1.468 -0.485 -0.037 -0.680 -0.081 -0.282 -0.267 -0.058 -0.159 -0.221 -0.216 -0.164
+ 11.932 -0.789 0.718 0.011 -0.520 0.011 -0.392 -0.247 -0.460 -0.085 -0.190 -0.202 -0.106
+ 11.852 -0.128 0.794 0.177 -0.448 -0.415 -0.628 -0.014 -0.567 -0.170 -0.196 -0.068 -0.090
+ 12.057 0.233 0.320 0.306 -0.489 -0.557 -0.680 0.067 -0.560 -0.238 -0.085 0.146 -0.291
+ 12.160 0.217 0.006 0.255 -0.446 -0.506 -0.712 -0.006 -0.414 -0.206 -0.180 0.256 -0.397
+ 12.161 0.101 -0.098 0.325 -0.521 -0.410 -0.846 -0.053 -0.406 -0.221 -0.233 0.303 -0.323
+ 11.889 0.016 -0.280 0.448 -0.358 -0.244 -0.754 -0.032 -0.328 -0.184 -0.360 0.255 -0.319
+ 8.346 -0.194 0.160 0.473 -0.166 -0.201 -0.803 -0.059 -0.082 -0.198 -0.133 0.301 -0.072
+ 7.623 -0.067 0.172 0.593 -0.164 0.012 -0.626 0.126 -0.024 -0.031 -0.015 0.096 -0.011
+ 6.753 0.330 -0.439 0.216 -0.031 -0.096 -0.356 -0.062 -0.114 0.045 -0.041 0.128 -0.118
+ 8.967 0.214 -1.324 -0.274 -0.166 -0.150 -0.373 -0.230 -0.247 -0.231 -0.171 -0.138 -0.042
+ 8.960 -0.682 -0.484 -0.221 -0.082 -0.103 -0.381 -0.103 -0.141 -0.209 -0.075 -0.298 -0.022
+ 8.718 -0.550 -0.054 -0.260 -0.303 -0.164 -0.269 0.025 -0.178 -0.005 -0.145 -0.099 -0.015
+ 9.853 -0.831 -0.372 -0.017 -0.221 -0.115 -0.170 0.062 -0.047 -0.107 -0.170 0.044 -0.098
+ 11.528 -0.776 -0.600 -0.008 -0.193 -0.126 -0.180 0.096 -0.007 -0.125 -0.309 -0.162 -0.126
+ 11.804 -0.438 -0.424 0.015 -0.055 -0.026 -0.189 -0.034 -0.036 -0.008 -0.229 -0.260 -0.122
+ 12.331 0.080 -0.136 0.163 0.104 -0.173 -0.363 -0.247 -0.040 -0.159 -0.332 -0.309 -0.106
+ 13.202 0.238 0.081 0.428 0.023 -0.121 -0.511 -0.404 -0.113 -0.168 -0.310 -0.440 -0.384
+ 12.612 -0.042 -0.082 0.367 0.089 0.118 -0.449 -0.213 -0.139 -0.125 -0.331 -0.366 -0.246
+ 11.889 0.265 -0.273 0.341 0.226 0.023 -0.552 -0.303 -0.266 -0.264 -0.127 -0.474 -0.132
+ 12.193 1.021 -0.768 -0.405 -0.103 -0.063 -0.726 -0.331 -0.234 -0.177 -0.072 -0.180 -0.159
+ 11.508 1.690 -0.758 -0.282 -0.078 0.118 -0.667 -0.502 -0.159 -0.112 -0.154 -0.045 -0.114
+ 10.321 1.907 -0.353 -0.339 0.084 0.229 -0.501 -0.365 -0.111 -0.239 -0.089 -0.190 -0.156
+ 7.913 1.710 0.143 -0.183 0.011 0.021 -0.280 -0.084 -0.048 -0.048 -0.059 -0.025 -0.187
+ 5.789 1.019 0.070 0.048 0.136 0.254 -0.216 -0.261 -0.149 0.034 0.015 0.024 -0.098
+ 5.316 0.814 -0.063 -0.025 -0.026 0.110 -0.158 -0.248 -0.075 -0.007 0.051 0.043 -0.116
+ 5.111 0.523 -0.143 -0.064 -0.110 -0.118 -0.371 -0.287 -0.105 0.172 0.114 0.033 0.085
+ 4.814 0.376 -0.035 -0.109 0.076 -0.050 -0.354 -0.235 -0.077 -0.009 0.047 -0.069 -0.019
+ 4.987 0.454 -0.059 -0.066 0.030 -0.023 -0.185 -0.297 -0.238 0.151 -0.150 -0.019 -0.082
+ 7.530 -0.797 0.057 0.220 0.044 -0.105 -0.380 -0.044 -0.152 -0.181 0.050 -0.148 0.107
+ 12.366 0.466 0.284 0.087 -0.414 -0.260 -0.169 -0.107 -0.336 -0.364 -0.144 -0.286 -0.046
+ 13.529 1.183 0.077 0.443 -0.464 -0.391 0.159 -0.259 -0.389 -0.315 -0.225 -0.184 -0.120
+ 11.662 0.850 0.385 0.524 -0.552 -0.466 0.047 -0.214 -0.226 -0.116 -0.283 -0.162 -0.086
+ 10.371 -0.200 0.555 0.623 -0.198 -0.428 0.169 -0.333 -0.501 -0.190 -0.300 -0.148 -0.162
+ 11.224 -0.094 0.316 0.440 -0.498 -0.292 -0.193 -0.340 -0.375 -0.263 -0.263 -0.210 -0.150
+ 11.925 -0.146 0.255 0.730 -0.265 -0.454 -0.287 -0.071 -0.643 -0.133 -0.237 -0.236 -0.110
+ 12.178 -0.337 0.338 0.720 -0.300 -0.287 -0.211 -0.162 -0.762 -0.012 -0.387 -0.166 -0.168
+ 11.918 -0.383 0.362 0.780 -0.227 -0.470 -0.016 -0.092 -0.881 -0.005 -0.326 -0.276 -0.124
+ 11.271 -0.191 0.001 0.691 0.176 -0.552 -0.207 0.163 -0.980 -0.110 -0.395 -0.232 -0.101
+ 9.960 0.374 0.086 0.541 0.469 -0.479 -0.338 0.414 -0.792 0.058 -0.231 -0.234 -0.149
+ 7.602 0.411 0.389 0.076 0.222 -0.058 -0.083 0.095 -0.333 0.113 -0.069 -0.193 -0.069
+ 9.279 -0.976 0.382 0.285 0.436 -0.408 -0.020 0.037 0.093 -0.203 -0.497 0.023 -0.062
+ 9.441 -1.265 0.132 0.390 0.235 -0.277 0.076 -0.072 0.099 -0.325 -0.450 0.103 -0.083
+ 8.478 -0.980 -0.099 0.242 0.093 -0.083 0.071 -0.059 0.057 -0.325 -0.353 0.010 0.000
+ 11.797 -0.537 0.068 0.160 -0.081 -0.028 -0.105 -0.127 -0.190 -0.155 -0.149 -0.027 -0.068
+ 12.674 1.023 0.173 -0.237 -0.396 -0.219 -0.186 -0.051 -0.189 -0.273 -0.188 -0.014 0.086
+ 12.600 1.014 0.359 -0.035 -0.403 -0.080 -0.310 -0.199 -0.252 -0.322 -0.226 -0.169 0.005
+ 12.120 1.093 0.523 -0.126 -0.532 0.118 -0.155 -0.151 -0.088 -0.377 -0.167 -0.208 -0.039
+ 11.901 0.941 0.710 -0.355 -0.899 0.009 -0.016 -0.318 -0.140 -0.517 -0.091 -0.226 0.040
+ 11.242 1.003 0.838 -0.724 -0.711 0.000 -0.078 -0.328 -0.088 -0.421 -0.078 -0.061 0.117
+ 10.906 0.448 0.860 -0.711 -0.568 -0.034 -0.147 -0.171 -0.270 -0.325 -0.238 0.130 -0.210
+ 8.473 0.405 0.782 -0.207 -0.413 0.052 0.005 0.062 -0.237 -0.132 -0.356 0.059 -0.100
+ 6.599 0.317 0.716 0.232 -0.201 -0.147 -0.091 -0.187 -0.043 0.011 -0.225 -0.034 -0.109
+ 6.069 0.277 0.495 0.144 -0.060 -0.045 -0.004 -0.295 -0.029 -0.185 -0.085 0.135 -0.090
+ 9.419 -0.965 0.036 0.220 -0.368 0.040 -0.377 0.027 0.125 0.059 -0.098 -0.206 -0.139
+ 11.342 -1.155 0.053 0.004 -0.386 0.019 -0.389 0.001 0.101 0.103 -0.111 -0.222 -0.207
+ 10.524 -0.572 0.732 -0.097 -0.400 -0.035 -0.465 -0.298 -0.408 -0.136 -0.192 -0.061 -0.303
+ 11.266 0.213 0.412 -0.025 -0.294 0.283 -0.122 -0.459 -0.564 -0.186 -0.025 0.105 -0.278
+ 9.157 0.726 0.627 -0.295 -0.121 0.447 -0.233 -0.524 -0.392 -0.191 0.156 0.105 -0.231
+ 6.434 0.720 0.336 0.106 -0.006 0.238 0.135 -0.260 -0.386 -0.152 -0.017 -0.309 -0.144
+ 6.051 0.785 0.664 -0.136 0.037 0.237 0.254 -0.086 -0.301 -0.266 -0.192 -0.056 -0.064
+ 6.050 0.887 0.462 -0.062 0.040 0.175 0.093 -0.152 -0.243 -0.123 -0.114 -0.188 -0.022
+ 6.164 0.823 0.379 0.182 -0.145 0.078 0.187 -0.068 -0.285 -0.208 -0.038 0.029 -0.043
+ 5.469 0.534 0.401 0.226 0.051 -0.046 0.162 -0.006 -0.075 -0.052 -0.028 -0.033 -0.238
+ 5.074 0.556 0.376 0.046 0.158 0.047 -0.004 -0.027 0.017 0.032 -0.190 -0.022 -0.100
+ 4.539 0.494 0.180 0.202 0.401 0.214 0.162 0.032 -0.202 0.071 -0.093 -0.197 -0.121
+ 10.276 0.467 0.554 0.124 0.064 -0.047 -0.368 -0.210 -0.319 -0.292 -0.068 -0.199 -0.120
+ 12.053 1.118 0.729 -0.031 -0.135 -0.132 -0.425 -0.125 -0.280 -0.445 -0.165 -0.324 -0.133
+ 10.755 0.964 0.814 0.002 -0.114 0.038 -0.452 -0.183 -0.157 -0.180 -0.036 -0.247 -0.166
+ 9.269 0.534 0.794 0.051 -0.157 -0.070 -0.297 -0.075 -0.193 0.035 -0.075 -0.267 -0.163
+ 9.027 0.718 1.088 -0.635 -0.600 -0.327 -0.417 -0.149 -0.290 -0.044 -0.455 -0.119 -0.294
+ 9.908 0.498 1.127 -0.482 -0.764 -0.179 -0.511 -0.154 -0.162 -0.009 -0.539 -0.081 -0.290
+ 10.238 0.366 1.118 -0.596 -0.993 -0.166 -0.173 -0.090 -0.190 -0.336 -0.318 -0.226 -0.255
+ 11.283 0.273 0.361 -0.246 -0.890 0.013 -0.252 -0.312 -0.016 -0.527 -0.438 -0.235 -0.210
+ 11.694 0.505 -0.099 -0.062 -0.513 0.253 -0.164 -0.805 -0.065 -0.300 -0.373 -0.108 -0.152
+ 12.162 0.508 -0.559 0.618 -0.262 -0.063 -0.458 -0.621 -0.122 -0.209 -0.283 -0.175 -0.131
+ 12.322 0.110 -0.323 0.986 -0.300 -0.401 -0.506 -0.253 -0.359 -0.183 -0.378 -0.150 -0.093
+ 11.821 -0.130 0.066 0.948 -0.215 -0.585 -0.191 -0.215 -0.641 0.089 -0.545 -0.045 -0.343
+ 11.531 -0.433 0.411 0.730 -0.096 -0.308 -0.314 -0.184 -0.572 0.110 -0.434 -0.153 -0.307
+ 11.045 -0.317 0.268 1.031 -0.379 -0.165 -0.225 -0.181 -0.524 -0.013 -0.268 -0.205 -0.285
+ 10.828 -0.354 0.408 0.862 -0.192 -0.231 -0.093 -0.199 -0.678 0.039 -0.292 -0.150 -0.137
+ 11.216 -0.641 0.436 0.851 -0.187 -0.331 -0.204 0.011 -0.647 0.124 -0.370 -0.149 -0.149
+ 10.826 -0.469 -0.028 1.059 -0.052 -0.453 -0.203 0.095 -0.812 0.265 -0.286 -0.164 -0.239
+ 8.784 0.009 -0.034 0.785 0.058 -0.380 -0.058 0.471 -0.757 0.076 -0.422 -0.244 -0.286
+ 5.963 0.733 0.300 0.372 -0.092 0.007 0.270 0.178 -0.362 -0.028 -0.261 -0.158 -0.061
+ 5.738 0.665 0.154 0.548 -0.165 -0.282 0.264 0.051 -0.351 0.150 -0.075 -0.241 -0.115
+ 5.155 0.515 0.149 0.513 0.119 -0.169 0.127 0.015 -0.427 0.147 -0.155 -0.032 -0.036
+ 4.762 0.333 -0.044 0.370 0.032 -0.134 -0.022 -0.104 -0.431 0.006 -0.156 -0.016 -0.075
+ 4.047 0.280 -0.224 0.198 0.079 -0.080 0.045 -0.129 -0.389 0.111 0.018 0.139 -0.100
+ 7.081 -0.576 0.020 0.162 0.043 0.016 -0.075 -0.043 -0.125 -0.155 -0.077 -0.020 -0.109
+ 12.746 0.859 0.178 -0.052 -0.231 -0.334 -0.342 -0.081 0.029 -0.159 -0.244 -0.188 -0.359
+ 13.084 1.135 0.200 0.131 -0.217 -0.278 -0.353 -0.145 0.036 -0.219 -0.278 -0.134 -0.308
+ 11.496 0.753 0.743 0.216 -0.239 -0.196 -0.200 -0.010 -0.037 -0.221 -0.308 -0.064 -0.323
+ 10.008 0.035 0.665 0.417 0.013 -0.056 0.005 -0.009 -0.016 -0.181 -0.120 0.008 -0.247
+ 8.808 -0.439 0.498 0.176 -0.089 0.082 -0.025 0.078 -0.085 -0.172 -0.152 -0.061 -0.176
+ 8.428 -0.821 0.418 0.260 0.136 -0.243 -0.241 -0.082 0.072 -0.106 -0.243 -0.081 -0.039
+ 9.209 -0.506 0.249 0.198 0.016 -0.129 -0.124 0.018 -0.017 -0.205 -0.270 -0.063 -0.027
+ 10.400 -0.288 0.190 0.116 -0.021 -0.178 -0.101 0.026 0.105 -0.391 -0.311 -0.017 -0.093
+ 9.484 -0.437 0.323 0.080 -0.048 -0.216 -0.275 -0.126 0.042 -0.040 -0.339 0.066 -0.216
+ 10.448 -0.062 -0.144 0.318 -0.426 -0.468 -0.456 -0.206 -0.103 0.135 -0.323 0.044 -0.161
+ 12.103 0.316 -0.467 0.010 -0.456 -0.376 -0.722 0.168 -0.055 0.183 -0.457 0.244 -0.227
+ 12.302 0.345 -0.354 -0.060 -0.546 -0.333 -0.993 0.365 0.052 0.110 -0.248 0.305 -0.346
+ 12.171 0.213 -0.224 0.245 -0.843 -0.152 -0.769 0.293 -0.012 0.029 -0.123 0.239 -0.443
+ 12.463 0.153 -0.114 0.031 -0.638 -0.180 -0.826 0.486 -0.263 0.093 -0.098 0.175 -0.507
+ 12.624 -0.091 -0.024 0.251 -0.690 -0.265 -0.590 0.355 -0.360 0.178 -0.012 -0.043 -0.395
+ 12.333 -0.227 0.226 0.267 -0.818 -0.187 -0.408 0.130 -0.272 0.179 0.001 -0.148 -0.298
+ 11.705 -0.261 0.303 0.292 -0.833 -0.188 -0.204 -0.086 -0.154 0.248 -0.138 -0.160 -0.078
+ 11.118 -0.111 0.371 -0.039 -0.293 -0.367 -0.218 -0.003 -0.074 0.009 -0.148 -0.212 0.006
+ 10.722 0.217 0.325 -0.165 0.074 -0.558 -0.220 0.149 -0.223 0.021 -0.144 -0.284 0.063
+ 10.647 0.373 0.283 -0.221 0.109 -0.580 -0.249 0.255 -0.404 0.151 -0.197 -0.301 0.048
+ 10.433 0.377 0.316 -0.224 0.199 -0.615 -0.175 0.251 -0.488 0.159 -0.278 -0.298 0.085
+ 9.859 0.383 0.414 -0.086 -0.059 -0.736 0.149 0.112 -0.425 0.122 -0.242 -0.379 0.124
+ 9.427 0.273 0.409 0.131 0.013 -0.902 0.083 0.125 -0.332 -0.018 -0.245 -0.341 0.142
+ 9.540 0.341 -0.050 0.413 -0.085 -0.704 -0.223 0.135 -0.145 0.121 -0.141 -0.366 0.116
+ 10.135 0.278 -0.321 0.186 0.259 -0.530 -0.453 -0.233 -0.131 0.123 -0.229 -0.292 0.062
+ 10.324 -0.096 -0.075 -0.035 0.194 -0.613 -0.414 -0.152 0.116 -0.027 -0.291 -0.150 0.023
+ 9.649 -0.747 0.310 -0.057 0.057 -0.520 -0.214 -0.035 0.078 -0.173 -0.209 -0.117 0.068
+ 9.240 -1.212 0.326 -0.012 0.140 -0.281 -0.289 -0.217 -0.069 -0.152 -0.163 -0.010 0.095
+ 9.496 -1.172 0.139 -0.444 0.186 -0.249 -0.159 -0.078 -0.082 -0.135 -0.162 -0.025 -0.117
+ 9.556 -1.478 0.157 -0.400 0.146 -0.205 -0.130 -0.058 -0.048 -0.009 -0.119 -0.106 -0.163
+ 9.990 -1.557 -0.026 -0.462 0.158 -0.261 -0.072 -0.059 0.008 -0.022 -0.088 -0.075 -0.048
+ 10.594 -1.248 0.211 -0.078 0.219 -0.278 -0.309 -0.172 0.069 -0.087 -0.174 -0.040 -0.102
+ 11.538 -0.551 0.297 -0.116 -0.043 -0.543 -0.367 -0.375 -0.166 0.095 -0.256 -0.073 -0.184
+ 11.986 0.391 -0.068 -0.142 -0.464 -0.604 -0.355 -0.441 0.042 0.014 -0.411 0.207 -0.073
+ 12.330 0.761 -0.569 -0.187 -0.397 -0.570 -0.402 -0.366 0.120 0.141 -0.384 0.225 -0.093
+ 13.091 0.407 -0.744 -0.191 -0.431 -0.481 -0.474 -0.060 0.120 0.032 -0.275 0.038 -0.074
+ 13.413 0.176 -0.763 -0.132 -0.446 -0.616 -0.523 0.141 0.105 0.017 -0.335 0.142 -0.126
+ 13.039 0.157 -0.556 -0.202 -0.576 -0.568 -0.547 0.293 -0.001 0.162 -0.467 0.192 -0.248
+ 13.351 0.295 -0.704 -0.402 -0.540 -0.307 -0.770 0.230 0.172 0.049 -0.410 0.078 -0.239
+ 13.396 0.339 -0.838 -0.447 -0.428 -0.435 -0.661 0.326 0.040 -0.003 -0.263 -0.078 -0.150
+ 13.724 0.042 -0.914 -0.267 -0.546 -0.465 -0.467 0.256 0.034 0.123 -0.404 -0.082 -0.126
+ 13.189 0.325 -0.897 -0.444 -0.534 -0.302 -0.677 0.315 -0.066 0.282 -0.455 -0.090 -0.144
+ 13.655 0.112 -1.024 -0.300 -0.543 -0.496 -0.469 0.269 0.022 0.197 -0.441 -0.135 -0.149
+ 13.423 0.236 -0.982 -0.324 -0.603 -0.398 -0.494 0.285 -0.081 0.258 -0.400 -0.208 -0.139
+ 13.768 0.203 -0.996 -0.362 -0.539 -0.373 -0.511 0.312 -0.198 0.320 -0.419 -0.250 -0.091
+ 13.621 0.176 -1.005 -0.352 -0.591 -0.266 -0.589 0.321 -0.135 0.230 -0.370 -0.255 -0.018
+ 13.281 0.376 -1.096 -0.449 -0.485 -0.294 -0.563 0.361 -0.139 0.232 -0.427 -0.221 -0.039
+ 13.165 0.340 -0.983 -0.650 -0.425 -0.347 -0.428 0.283 -0.140 0.310 -0.414 -0.397 -0.021
+ 13.358 0.425 -1.169 -0.586 -0.385 -0.272 -0.559 0.310 -0.170 0.383 -0.438 -0.456 0.007
+ 13.367 0.559 -1.216 -0.662 -0.340 -0.111 -0.589 0.176 -0.202 0.449 -0.418 -0.447 -0.027
+ 13.318 0.666 -1.374 -0.534 -0.411 -0.252 -0.380 -0.004 -0.099 0.347 -0.300 -0.384 -0.152
+ 12.813 0.700 -1.052 -0.815 -0.430 -0.132 -0.439 0.045 -0.198 0.412 -0.236 -0.459 -0.115
+ 12.625 0.686 -0.900 -0.919 -0.477 -0.067 -0.477 0.032 -0.279 0.526 -0.203 -0.417 -0.182
+ 12.847 0.711 -0.804 -0.822 -0.597 -0.044 -0.482 -0.009 -0.378 0.497 -0.083 -0.340 -0.228
+ 12.497 0.903 -0.705 -0.969 -0.413 -0.076 -0.555 0.042 -0.385 0.323 0.051 -0.299 -0.216
+ 12.039 0.854 -0.524 -0.958 -0.479 -0.116 -0.374 -0.124 -0.400 0.295 0.110 -0.209 -0.283
+ 11.924 0.804 -0.554 -0.804 -0.570 -0.161 -0.393 -0.189 -0.455 0.345 0.177 -0.199 -0.289
+ 12.189 0.725 -0.612 -0.558 -0.653 -0.119 -0.448 -0.213 -0.508 0.341 0.141 -0.198 -0.213
+ 12.057 0.712 -0.525 -0.732 -0.444 -0.352 -0.404 -0.503 -0.306 0.176 0.059 -0.151 -0.173
+ 10.171 0.700 -0.297 -0.767 -0.296 -0.363 -0.389 -0.673 -0.178 0.233 0.220 -0.073 -0.086
+ 9.988 0.782 -0.153 -0.887 0.001 -0.299 -0.486 -0.721 -0.130 0.015 0.031 -0.075 -0.110
+ 6.992 0.461 -0.113 -0.510 -0.129 -0.539 -0.448 -0.699 0.005 0.504 0.169 -0.077 -0.116
+ 6.315 0.546 -0.368 -0.298 -0.150 -0.403 -0.409 -0.252 0.012 0.386 -0.013 -0.124 -0.180
+ 5.776 0.807 -0.357 -0.338 -0.318 -0.325 -0.289 -0.138 0.030 0.370 0.056 -0.073 -0.100
+ 5.222 0.621 -0.340 -0.414 -0.371 -0.346 -0.387 -0.097 0.132 0.280 0.053 -0.032 -0.090
+ 4.791 0.630 -0.185 -0.443 -0.267 -0.272 -0.447 0.051 0.175 0.327 0.013 -0.013 -0.162
+ 4.421 0.552 -0.095 -0.177 -0.390 -0.494 -0.508 -0.113 -0.012 0.300 0.034 -0.063 -0.164
+ 4.441 0.655 -0.277 -0.326 -0.165 -0.205 -0.264 0.022 0.183 0.212 -0.036 0.051 -0.095
+ 4.638 0.737 -0.133 -0.261 -0.173 -0.166 -0.313 -0.223 -0.007 0.290 0.049 0.017 -0.267
+ 4.348 0.400 -0.367 -0.215 -0.119 -0.078 -0.028 -0.239 0.054 0.264 -0.001 0.114 -0.334
+ 8.495 -0.408 -0.232 -0.463 -0.183 -0.266 -0.367 -0.173 -0.056 -0.043 0.007 -0.063 -0.169
+ 8.792 -0.352 -0.020 -0.406 -0.044 -0.277 -0.399 -0.203 0.011 -0.039 0.027 -0.079 -0.227
+ 7.791 -1.155 0.153 -0.323 0.111 -0.212 -0.204 -0.187 -0.104 0.004 0.054 -0.220 -0.049
+ 8.919 -1.668 -0.173 -0.371 0.294 -0.135 0.058 -0.057 -0.065 -0.152 -0.085 -0.060 0.024
+ 9.737 -1.548 -0.259 -0.314 0.134 -0.217 -0.097 -0.043 0.050 0.052 -0.010 -0.010 0.045
+ 9.999 -1.381 -0.077 -0.300 0.105 -0.239 -0.239 -0.249 -0.081 -0.157 -0.082 -0.013 0.001
+ 10.140 -1.330 -0.040 -0.276 0.215 -0.187 0.005 -0.121 -0.051 -0.158 -0.205 -0.123 -0.107
+ 10.196 -1.112 0.101 -0.461 0.097 -0.296 -0.179 0.055 -0.092 -0.099 -0.151 0.010 -0.148
+ 10.168 -1.238 -0.022 -0.379 0.018 -0.289 -0.240 -0.017 0.136 0.052 -0.185 -0.005 0.035
+ 10.146 -1.245 -0.081 -0.444 -0.043 -0.333 -0.193 -0.072 0.071 0.135 -0.335 0.073 -0.119
+ 10.340 -0.274 0.432 -0.255 -0.172 -0.511 -0.522 -0.462 0.008 0.096 -0.384 -0.085 -0.072
+ 10.970 0.451 0.198 -0.406 -0.322 -0.201 -0.567 -0.776 0.116 -0.015 -0.211 0.076 -0.042
+ 11.531 0.470 0.143 -0.499 -0.522 0.078 -0.762 -0.785 0.044 0.269 -0.403 0.188 -0.140
+ 12.201 0.332 0.089 -0.435 -0.484 -0.186 -0.664 -0.623 0.031 0.353 -0.494 0.127 -0.114
+ 12.476 0.161 -0.103 -0.415 -0.413 -0.304 -0.631 -0.561 0.161 0.241 -0.415 0.073 -0.144
+ 12.607 -0.020 -0.215 -0.374 -0.466 -0.459 -0.580 -0.463 0.233 0.218 -0.353 0.064 -0.073
+ 12.561 0.043 -0.230 -0.323 -0.526 -0.422 -0.610 -0.383 0.184 0.291 -0.365 0.034 -0.069
+ 12.728 0.073 -0.272 -0.280 -0.616 -0.315 -0.568 -0.354 0.165 0.273 -0.336 -0.145 -0.025
+ 12.856 0.065 -0.552 -0.298 -0.539 -0.266 -0.536 -0.380 0.211 0.222 -0.323 -0.150 -0.032
+ 11.921 0.387 -0.450 -0.515 -0.578 -0.097 -0.704 -0.318 0.234 0.291 -0.278 -0.107 -0.026
+ 12.792 0.151 -0.622 -0.419 -0.545 -0.272 -0.557 -0.306 0.196 0.253 -0.239 -0.210 -0.008
+ 12.716 0.317 -0.532 -0.466 -0.541 -0.253 -0.487 -0.370 0.188 0.258 -0.288 -0.289 0.034
+ 12.149 0.668 -0.648 -0.473 -0.536 -0.135 -0.586 -0.268 0.106 0.227 -0.242 -0.256 -0.079
+ 11.866 0.728 -0.683 -0.548 -0.503 -0.107 -0.589 -0.396 0.189 0.293 -0.250 -0.261 -0.015
+ 12.407 0.554 -0.817 -0.422 -0.481 -0.230 -0.510 -0.441 0.218 0.252 -0.179 -0.274 -0.018
+ 12.632 0.489 -0.752 -0.401 -0.521 -0.179 -0.514 -0.343 0.138 0.145 -0.134 -0.276 -0.032
+ 12.511 0.487 -0.815 -0.281 -0.606 -0.208 -0.307 -0.384 0.113 0.160 -0.211 -0.211 -0.092
+ 12.283 0.408 -0.962 -0.280 -0.614 -0.201 -0.183 -0.423 0.244 0.090 -0.118 -0.252 -0.063
+ 12.434 0.179 -0.915 -0.287 -0.582 -0.218 -0.095 -0.432 0.306 0.039 -0.111 -0.257 -0.219
+ 11.978 0.170 -0.742 -0.240 -0.392 -0.230 -0.193 -0.344 0.371 0.065 -0.024 -0.141 -0.283
+ 11.484 0.325 -0.708 -0.264 -0.293 -0.123 -0.118 -0.552 0.349 -0.101 0.039 -0.145 -0.444
+ 10.477 0.527 -0.594 -0.406 -0.162 -0.015 -0.099 -0.486 0.314 -0.141 0.054 -0.272 -0.495
+ 9.433 0.516 -0.431 -0.355 -0.171 0.039 0.003 -0.409 0.322 -0.157 0.139 -0.233 -0.464
+ 8.295 0.284 -0.251 -0.217 -0.053 0.057 -0.003 -0.274 0.228 -0.231 -0.096 -0.116 -0.341
+ 7.662 -0.093 -0.424 -0.495 -0.033 0.293 0.080 0.052 0.168 -0.030 -0.126 -0.254 -0.261
+ 6.827 -0.221 -0.097 -0.443 -0.020 0.128 -0.163 -0.042 0.295 0.044 -0.126 -0.156 -0.279
+ 6.110 -0.240 -0.221 -0.551 -0.122 -0.147 -0.134 -0.036 -0.089 0.083 -0.017 -0.101 -0.054
+ 5.627 -0.158 0.062 -0.292 -0.274 -0.248 -0.110 -0.085 -0.070 0.138 -0.142 -0.142 0.001
+ 5.422 -0.011 -0.230 -0.057 -0.034 -0.206 -0.334 -0.201 -0.076 0.134 -0.057 0.021 -0.142
+ 5.816 -0.254 -0.033 -0.125 0.214 -0.338 -0.393 -0.086 -0.003 0.280 -0.092 -0.022 -0.048
+ 5.547 -0.499 -0.255 -0.149 0.317 -0.142 -0.422 -0.142 0.172 0.261 -0.256 -0.041 -0.015
+ 5.212 -0.378 -0.276 -0.181 0.362 -0.120 -0.322 0.034 0.015 0.163 -0.161 -0.016 0.040
+ 4.111 -0.041 -0.299 -0.006 0.053 -0.120 -0.095 -0.053 -0.049 0.212 0.019 -0.117 -0.017
+ 5.810 -0.393 -0.209 -0.020 0.021 -0.083 -0.298 -0.030 0.026 -0.022 -0.111 -0.078 0.066
+ 9.541 -0.630 -0.360 -0.114 0.029 -0.078 -0.456 -0.104 0.000 -0.133 -0.177 -0.118 -0.006
+ 7.334 -0.596 -0.249 0.043 0.155 -0.060 -0.468 -0.052 0.069 -0.164 -0.218 -0.130 -0.024
+ 7.253 -0.650 -0.237 0.217 0.228 -0.023 -0.260 -0.053 -0.122 -0.281 -0.504 -0.177 0.040
+ 7.697 -0.664 -0.393 -0.043 0.051 -0.050 -0.333 -0.063 0.047 -0.123 -0.203 0.047 -0.150
+ 7.961 -0.806 -0.496 -0.049 0.092 -0.167 -0.301 -0.128 -0.185 -0.156 -0.116 0.053 -0.069
+ 8.374 -0.976 -0.516 0.073 0.254 -0.130 -0.248 -0.023 -0.070 0.023 -0.331 -0.177 -0.110
+ 8.590 -1.097 -0.584 -0.036 0.015 -0.079 -0.210 0.103 -0.114 -0.103 -0.169 0.186 0.032
+ 8.835 -1.034 -0.647 0.029 -0.002 -0.219 -0.405 -0.044 -0.263 -0.254 -0.233 0.166 -0.060
+ 8.841 -1.055 -0.471 0.006 0.041 -0.338 -0.321 -0.041 -0.163 -0.176 -0.197 0.158 -0.083
+ 8.683 -1.107 -0.513 0.265 0.128 -0.323 -0.381 -0.077 -0.042 -0.248 -0.316 0.073 -0.160
+ 9.162 -0.951 -0.391 -0.032 -0.036 -0.307 -0.297 0.053 -0.058 -0.304 -0.118 0.112 -0.113
+ 9.295 -1.180 -0.563 0.028 0.015 -0.171 -0.211 0.048 0.004 -0.307 -0.172 0.157 0.051
+ 9.326 -1.116 -0.531 -0.072 0.041 -0.194 -0.256 -0.034 -0.010 -0.158 -0.126 0.243 0.083
+ 9.172 -0.938 -0.468 -0.033 0.040 -0.270 -0.393 -0.098 -0.101 0.074 -0.047 0.205 -0.155
+ 9.072 -0.904 -0.519 -0.102 -0.095 -0.228 -0.230 0.048 -0.069 0.127 -0.173 0.170 -0.186
+ 9.378 -0.827 -0.479 -0.109 -0.282 -0.355 -0.562 -0.026 -0.028 0.029 -0.129 0.169 -0.080
+ 9.535 -0.764 -0.250 0.001 -0.120 -0.466 -0.477 -0.114 -0.018 -0.119 -0.344 0.006 -0.109
+ 9.579 -0.828 -0.473 0.123 -0.232 -0.532 -0.466 -0.041 0.124 -0.065 -0.356 -0.005 -0.099
+ 9.490 -1.082 -0.488 -0.084 -0.379 -0.499 -0.553 -0.027 -0.032 -0.101 -0.253 0.044 0.135
+ 9.561 -0.996 -0.384 -0.242 -0.243 -0.304 -0.410 0.135 -0.043 -0.095 -0.202 -0.058 -0.033
+ 9.453 -0.877 -0.283 -0.283 -0.210 -0.222 -0.450 0.121 0.130 0.110 -0.209 -0.075 -0.048
+ 9.609 -0.975 -0.374 -0.134 -0.127 -0.392 -0.533 -0.019 0.156 -0.177 -0.219 0.065 -0.069
+ 9.723 -0.822 -0.455 -0.270 -0.069 -0.395 -0.483 0.001 0.046 -0.147 -0.186 0.111 -0.221
+ 10.284 -0.683 -0.321 -0.210 -0.161 -0.222 -0.432 0.232 0.040 0.113 -0.260 0.043 -0.058
+ 10.203 -0.916 -0.387 -0.091 -0.126 -0.360 -0.407 0.281 0.027 0.058 -0.231 -0.053 -0.114
+ 9.985 -1.038 -0.377 -0.129 -0.033 -0.657 -0.718 0.077 -0.130 -0.128 -0.247 0.107 -0.243
+ 9.770 -1.231 -0.301 -0.128 -0.145 -0.518 -0.582 0.095 0.006 -0.014 -0.210 0.238 -0.061
+ 9.511 -0.979 -0.374 -0.002 -0.115 -0.564 -0.602 -0.005 -0.008 0.043 -0.093 0.263 -0.039
+ 9.593 -0.623 -0.337 -0.031 -0.081 -0.494 -0.626 0.041 -0.238 -0.060 -0.089 0.312 -0.058
+ 9.297 -0.720 -0.487 -0.061 0.037 -0.570 -0.642 -0.113 -0.142 -0.028 0.012 0.484 -0.006
+ 9.218 -0.921 -0.219 -0.020 0.081 -0.624 -0.673 -0.192 -0.084 -0.044 -0.192 0.371 0.047
+ 9.260 -0.802 -0.081 0.128 0.106 -0.709 -0.716 -0.071 -0.163 -0.019 -0.086 0.264 0.044
+ 9.455 -0.713 -0.122 -0.066 -0.043 -0.552 -0.573 -0.052 -0.203 -0.012 -0.232 0.253 0.163
+ 9.139 -0.735 -0.013 -0.021 0.103 -0.577 -0.704 0.042 -0.280 -0.175 -0.208 0.248 0.108
+ 8.994 -0.593 -0.304 -0.018 0.099 -0.317 -0.638 0.011 -0.308 -0.052 -0.284 0.138 0.071
+ 9.133 -0.489 -0.221 -0.095 0.111 -0.185 -0.616 -0.127 -0.079 0.075 -0.046 0.283 -0.033
+ 9.084 -0.515 -0.013 0.009 0.204 -0.121 -0.482 -0.140 -0.059 -0.064 -0.233 0.178 -0.055
+ 8.690 -0.621 -0.099 -0.071 0.277 -0.438 -0.710 -0.101 -0.194 -0.208 -0.107 0.189 0.087
+ 8.248 -0.635 -0.041 0.002 0.282 -0.507 -0.552 -0.187 -0.139 -0.042 -0.229 0.178 -0.044
+ 8.535 -0.543 -0.121 0.037 0.373 -0.423 -0.405 -0.004 -0.077 -0.271 -0.328 0.222 -0.006
+ 8.377 -0.448 -0.289 0.086 0.226 -0.247 -0.382 0.044 0.046 -0.129 -0.300 0.349 -0.035
+ 8.141 -0.339 -0.111 0.207 0.185 -0.123 -0.379 0.064 0.050 -0.025 -0.151 0.186 -0.179
+ 7.833 -0.391 -0.310 0.125 0.192 -0.114 -0.427 -0.157 -0.137 -0.177 -0.229 0.156 0.078
+ 7.304 -0.148 -0.273 0.290 0.280 -0.265 -0.362 -0.071 -0.059 -0.379 -0.241 0.147 -0.011
+ 6.742 -0.395 -0.271 0.034 0.441 -0.314 -0.401 0.128 -0.084 -0.323 -0.113 0.296 0.149
+ 9.175 1.149 0.010 -0.013 -0.204 -0.603 -0.192 -0.115 -0.233 -0.080 -0.227 -0.081 -0.104
+ 10.261 1.460 0.019 0.099 -0.351 -0.678 -0.155 -0.265 -0.199 -0.102 -0.201 -0.110 -0.150
+ 7.873 1.307 0.317 -0.192 -0.560 -0.777 -0.359 -0.221 -0.126 -0.182 -0.269 0.075 0.089
+ 7.487 0.991 0.516 -0.007 -0.519 -0.459 -0.285 0.090 0.081 -0.086 -0.046 -0.035 -0.173
+ 6.983 0.851 0.583 0.062 -0.403 -0.342 -0.143 -0.001 -0.153 -0.250 -0.046 0.045 -0.146
+ 5.940 0.403 0.401 0.134 -0.177 -0.386 -0.295 -0.091 0.064 -0.007 -0.012 0.021 -0.128
+ 5.425 0.529 0.151 0.013 -0.037 -0.057 -0.191 0.015 -0.176 -0.122 -0.073 -0.056 -0.165
+ 5.198 0.384 -0.058 0.189 -0.023 -0.023 -0.140 0.065 0.016 -0.019 -0.155 -0.179 -0.380
+ 5.444 0.462 0.107 0.210 0.071 -0.120 -0.148 -0.004 -0.249 0.044 -0.095 -0.031 -0.245
+ 5.287 0.234 -0.039 0.038 -0.036 -0.133 -0.110 0.120 -0.171 -0.113 -0.095 0.099 -0.222
+ 5.150 0.165 -0.011 0.144 -0.087 -0.225 -0.213 0.061 -0.179 -0.097 -0.034 0.098 -0.072
+ 5.108 0.282 -0.178 -0.016 -0.078 -0.142 -0.206 0.010 -0.070 -0.231 -0.082 0.052 -0.052
+ 5.607 0.665 0.029 0.033 -0.072 -0.321 -0.293 -0.038 -0.013 -0.085 -0.084 -0.007 0.094
+ 5.666 0.690 0.054 0.141 -0.186 -0.430 -0.359 -0.147 -0.043 -0.011 -0.198 -0.063 -0.121
+ 5.807 0.636 -0.022 0.070 -0.046 -0.282 -0.320 -0.032 -0.117 -0.031 -0.190 0.102 -0.068
+ 8.351 1.152 0.113 -0.340 -0.009 -0.069 -0.434 -0.210 -0.222 0.052 -0.233 -0.004 -0.014
+ 7.499 1.001 0.248 0.046 -0.062 -0.061 -0.195 -0.272 -0.128 0.106 -0.203 -0.137 -0.164
+ 6.323 0.163 0.143 -0.013 -0.303 -0.233 -0.333 -0.249 -0.151 0.007 -0.105 -0.186 -0.190
+ 7.391 -0.089 0.050 -0.026 -0.278 -0.270 -0.377 -0.246 -0.179 -0.088 -0.184 -0.181 -0.105
+ 8.004 -0.160 0.141 0.075 -0.234 -0.143 -0.342 -0.169 -0.137 -0.106 -0.140 -0.174 -0.071
+ 7.606 -0.028 -0.012 -0.021 -0.163 -0.282 -0.336 -0.208 -0.167 0.176 -0.036 -0.001 -0.054
+ 7.703 0.046 0.167 -0.041 -0.223 -0.333 -0.417 -0.426 -0.233 -0.220 -0.059 0.150 -0.086
+ 8.695 0.139 0.476 0.194 -0.258 -0.260 -0.438 -0.300 -0.249 -0.144 -0.123 -0.074 -0.080
+ 8.743 -0.197 0.318 0.069 -0.250 0.044 -0.369 -0.272 -0.050 -0.186 -0.178 -0.073 -0.211
+ 8.899 0.034 0.282 0.046 -0.034 -0.044 -0.388 -0.307 0.023 -0.029 -0.253 -0.238 -0.093
+ 8.409 0.427 0.018 0.004 0.081 -0.011 -0.434 -0.350 -0.024 -0.240 -0.366 -0.107 -0.014
+ 7.241 0.621 -0.077 0.004 0.114 -0.015 -0.285 -0.361 -0.223 -0.010 -0.412 -0.195 -0.069
+ 6.603 0.854 0.112 0.038 0.170 0.074 0.042 -0.129 -0.179 -0.112 -0.341 -0.337 -0.227
+ 5.100 0.059 0.099 0.213 0.235 0.006 0.032 -0.077 -0.029 -0.064 -0.185 -0.111 -0.121
+ 4.695 -0.182 -0.023 0.202 0.121 0.183 -0.170 -0.013 -0.189 -0.202 -0.034 -0.269 -0.094
+ 4.852 -0.044 -0.082 0.149 -0.045 0.055 -0.058 0.027 -0.126 -0.123 -0.096 -0.180 -0.014
+ 4.303 -0.028 -0.114 0.006 0.155 -0.025 -0.097 0.081 -0.197 -0.056 -0.132 -0.106 -0.040
+ 4.682 0.402 -0.027 0.295 -0.063 -0.012 -0.100 0.008 -0.102 -0.060 -0.124 -0.031 -0.046
+ 4.162 0.154 -0.040 0.350 -0.115 0.050 -0.032 -0.040 -0.081 -0.068 -0.299 -0.012 -0.024
+ 4.085 0.123 0.020 0.198 0.079 0.124 0.016 -0.011 -0.094 -0.107 -0.218 0.203 0.001
+ 3.821 -0.014 0.076 0.216 0.109 0.088 -0.050 -0.049 0.133 0.111 -0.073 0.151 -0.008
+ 3.943 0.154 0.038 0.076 0.039 0.046 -0.086 0.058 -0.091 0.068 -0.159 -0.103 -0.065
+ 4.167 0.314 -0.212 -0.128 -0.047 0.121 -0.133 -0.101 0.038 0.036 -0.059 0.034 -0.006
+ 4.210 0.143 -0.263 0.010 -0.058 0.113 -0.086 -0.027 -0.184 -0.042 0.029 0.088 -0.111
+ 4.469 0.328 -0.436 -0.114 0.100 -0.154 -0.252 0.069 -0.091 -0.123 -0.092 0.002 -0.126
+ 5.041 0.388 -0.290 -0.058 0.111 -0.196 -0.278 0.164 -0.019 -0.098 -0.141 0.015 0.036
+ 5.046 0.246 -0.467 0.029 0.251 -0.144 -0.425 0.077 -0.045 -0.020 0.023 0.118 -0.065
+ 5.099 0.134 -0.445 -0.037 0.166 -0.280 -0.314 0.020 -0.023 -0.093 -0.033 0.201 0.080
+ 5.749 0.141 -0.384 -0.027 0.024 -0.376 -0.331 0.246 0.070 -0.127 -0.092 0.085 -0.107
+ 6.032 0.122 -0.407 0.109 0.288 -0.304 -0.314 0.178 -0.029 -0.188 -0.103 0.044 -0.069
+ 6.141 0.009 -0.453 0.132 0.248 -0.326 -0.372 0.176 0.084 -0.168 -0.129 0.168 -0.095
+ 6.159 -0.117 -0.507 -0.032 0.095 -0.246 -0.398 0.218 -0.012 -0.173 0.004 -0.012 -0.010
+ 5.975 -0.116 -0.376 0.097 0.230 -0.468 -0.462 0.155 0.015 -0.284 -0.226 0.071 0.009
+ 6.053 -0.335 -0.604 0.064 0.324 -0.443 -0.484 0.117 -0.026 -0.189 0.164 0.209 -0.087
+ 5.741 -0.546 -0.497 0.152 0.238 -0.366 -0.331 0.038 0.036 -0.096 0.162 0.129 -0.009
+ 5.950 -0.562 -0.415 0.093 0.357 -0.190 -0.316 0.078 -0.041 -0.215 0.096 0.034 -0.080
+ 6.074 -0.476 -0.535 0.041 0.339 -0.278 -0.411 0.247 0.142 -0.327 0.076 0.247 -0.075
+ 6.162 -0.443 -0.647 0.088 0.158 -0.304 -0.295 0.198 0.055 -0.350 0.128 0.155 -0.050
+ 6.134 -0.475 -0.443 0.074 0.444 -0.330 -0.234 0.238 -0.005 -0.227 0.017 0.126 -0.116
+ 6.249 -0.550 -0.627 0.064 0.191 -0.079 -0.317 0.385 0.251 -0.088 0.048 -0.116 -0.143
+ 6.469 -0.362 -0.505 -0.014 0.075 -0.267 -0.354 0.355 0.191 -0.092 0.078 -0.004 -0.110
+ 6.169 -0.488 -0.611 0.072 0.238 -0.040 -0.287 0.019 0.154 -0.186 -0.134 0.017 -0.024
+ 6.466 -0.297 -0.433 0.221 0.322 -0.060 -0.248 0.301 -0.026 -0.255 0.027 -0.049 -0.151
+ 6.460 -0.318 -0.456 0.052 0.295 -0.197 -0.441 0.078 0.080 -0.236 -0.012 -0.012 -0.100
+ 6.250 -0.324 -0.312 0.134 0.166 -0.473 -0.353 0.145 0.175 -0.324 -0.042 -0.009 0.055
+ 6.036 -0.128 -0.318 0.399 0.231 -0.370 -0.332 0.120 0.088 -0.389 -0.148 0.133 -0.119
+ 6.330 -0.219 -0.435 0.322 0.254 -0.264 -0.425 0.147 0.021 -0.414 -0.164 0.109 -0.063
+ 6.285 -0.248 -0.407 0.202 0.183 -0.350 -0.501 0.250 0.239 -0.118 -0.122 -0.006 -0.207
+ 6.453 -0.117 -0.318 0.169 0.085 -0.348 -0.459 0.067 0.091 -0.229 0.012 -0.028 0.037
+ 6.643 0.380 0.059 0.507 0.439 -0.244 -0.678 0.051 0.015 -0.174 0.182 0.002 -0.118
+ 6.429 0.169 0.034 0.490 0.337 -0.084 -0.510 0.023 0.033 0.048 0.038 0.048 -0.048
+ 6.311 -0.106 -0.332 0.371 0.175 -0.428 -0.324 0.226 0.094 -0.352 -0.004 0.081 -0.168
+ 6.294 -0.103 -0.338 0.076 0.100 -0.447 -0.227 0.335 0.025 -0.400 -0.030 0.050 -0.017
+ 6.115 -0.218 -0.339 0.055 -0.022 -0.357 -0.267 0.178 -0.069 -0.344 -0.141 -0.069 -0.060
+ 5.909 -0.231 -0.508 0.064 0.209 -0.373 -0.408 0.241 -0.224 -0.380 0.109 -0.069 -0.031
+ 6.013 -0.145 -0.514 -0.002 0.191 -0.392 -0.496 0.185 -0.054 -0.246 -0.034 0.143 -0.011
+ 5.877 -0.085 -0.449 0.054 0.145 -0.275 -0.430 -0.032 0.038 -0.292 -0.097 0.203 -0.001
+ 5.761 -0.034 -0.385 0.050 0.008 -0.335 -0.455 0.082 0.029 -0.148 -0.017 0.053 -0.098
+ 5.503 -0.018 -0.311 0.135 -0.118 -0.291 -0.430 0.134 0.129 -0.205 0.011 0.075 0.026
+ 5.531 -0.044 -0.246 -0.032 -0.224 -0.153 -0.269 0.028 -0.090 -0.226 -0.221 0.076 0.125
+ 5.953 0.018 -0.278 -0.030 -0.121 -0.164 -0.413 0.108 0.141 0.031 -0.017 0.065 -0.106
+ 5.749 0.026 -0.178 0.095 -0.016 -0.073 -0.302 0.144 0.106 -0.122 -0.165 -0.041 -0.170
+ 5.495 0.016 -0.214 0.184 -0.000 -0.308 -0.578 0.076 0.160 -0.047 -0.036 0.091 -0.182
+ 5.193 -0.192 -0.242 0.338 0.234 -0.021 -0.369 0.071 -0.018 -0.352 -0.158 0.061 0.015
+ 5.064 0.059 -0.260 0.210 0.112 -0.029 -0.253 0.072 -0.085 -0.208 -0.119 0.134 -0.013
+ 4.935 0.344 -0.215 0.118 0.038 -0.053 -0.132 0.228 0.031 -0.045 -0.234 0.015 -0.247
+ 4.612 0.292 -0.229 0.129 -0.173 -0.011 -0.293 0.068 0.149 -0.083 -0.158 -0.017 -0.101
+ 5.049 0.382 -0.055 0.231 -0.022 -0.359 -0.401 0.011 0.122 0.082 -0.145 -0.015 -0.072
+ 4.969 -0.024 -0.167 0.040 -0.030 -0.281 -0.402 0.012 -0.050 -0.045 -0.139 0.115 0.167
+ 5.589 0.015 0.188 0.071 -0.098 -0.004 -0.212 -0.118 -0.179 -0.037 -0.211 -0.144 -0.011
+ 5.755 -0.441 0.071 -0.167 -0.237 -0.284 -0.350 -0.078 0.038 -0.148 -0.066 0.133 0.006
+ 5.719 -0.264 0.194 0.050 -0.273 -0.059 -0.308 -0.142 -0.199 -0.035 0.124 0.076 -0.030
+ 6.680 -0.359 0.050 0.013 0.011 -0.049 -0.257 0.028 -0.152 -0.078 0.018 0.226 -0.180
+ 7.556 -0.089 0.111 -0.167 -0.002 -0.026 -0.210 0.020 -0.106 0.001 -0.129 -0.055 -0.223
+ 6.739 -0.130 0.185 -0.082 -0.025 -0.161 -0.248 -0.147 -0.212 0.021 -0.236 0.150 -0.046
+ 6.005 -0.334 0.380 0.217 -0.127 -0.126 -0.388 -0.083 -0.183 -0.077 -0.036 0.072 -0.123
+ 5.653 -0.324 0.346 0.079 -0.029 -0.130 -0.212 0.049 -0.173 -0.167 -0.119 -0.025 -0.118
+ 6.120 -0.234 0.145 -0.180 -0.201 -0.270 -0.319 -0.099 -0.138 -0.063 -0.197 0.055 -0.033
+ 6.169 -0.192 0.091 -0.123 -0.179 -0.236 -0.275 -0.121 -0.071 0.004 -0.054 0.035 -0.139
+ 6.355 -0.209 0.499 -0.196 -0.009 -0.040 -0.188 0.059 -0.196 -0.148 -0.167 0.073 -0.291
+ 6.658 -0.406 0.140 -0.086 0.047 -0.096 0.016 -0.044 -0.239 -0.060 -0.221 -0.038 -0.147
+ 7.448 -0.124 -0.097 -0.195 -0.151 -0.202 -0.050 -0.273 -0.021 -0.048 -0.093 -0.152 -0.011
+ 6.769 0.362 -0.242 -0.543 -0.512 -0.242 -0.281 -0.189 0.008 0.118 -0.148 -0.061 0.029
+ 7.276 0.475 -0.265 -0.477 -0.312 -0.225 -0.544 -0.203 0.193 0.110 -0.404 -0.163 0.028
+ 7.891 0.329 -0.502 -0.264 -0.506 -0.518 -0.634 -0.417 0.185 0.204 -0.430 -0.129 0.089
+ 8.349 0.078 -0.539 -0.164 -0.505 -0.559 -0.606 -0.473 0.004 0.273 0.049 -0.115 0.000
+ 8.124 0.198 -0.457 -0.049 -0.355 -0.440 -0.539 -0.475 -0.185 0.210 -0.272 -0.054 0.032
+ 7.727 0.214 -0.163 0.004 -0.129 -0.522 -0.612 -0.418 -0.095 0.224 -0.527 0.075 0.179
+ 7.139 0.283 -0.159 0.054 -0.223 -0.558 -0.435 -0.147 -0.063 0.167 -0.413 0.017 0.119
+ 6.604 0.257 -0.015 0.012 -0.116 -0.333 -0.286 -0.011 0.003 0.068 -0.329 -0.122 0.014
+ 6.073 -0.016 -0.215 0.010 0.022 -0.288 -0.222 -0.012 0.158 0.343 -0.153 -0.095 0.023
+ 5.967 0.206 -0.120 0.042 -0.135 -0.316 -0.145 -0.031 0.040 0.240 -0.218 -0.209 -0.083
+ 6.074 0.189 -0.033 0.094 -0.308 -0.333 -0.146 -0.124 0.016 0.158 -0.125 -0.163 -0.081
+ 5.995 -0.015 -0.066 0.140 -0.184 -0.253 -0.059 -0.212 -0.066 0.094 -0.258 0.091 0.068
+ 6.008 -0.107 -0.144 0.207 -0.460 -0.421 -0.202 -0.313 0.028 -0.034 -0.441 0.057 -0.085
+ 5.792 -0.389 -0.020 0.186 -0.308 -0.048 0.045 -0.183 0.173 0.110 -0.202 -0.072 -0.100
+ 6.013 -0.296 0.107 0.163 -0.429 -0.465 -0.039 -0.304 -0.101 0.077 0.049 0.176 0.028
+ 6.750 -0.143 0.217 0.383 -0.625 -0.480 -0.139 -0.410 -0.037 0.092 -0.060 0.187 0.013
+ 7.318 -0.196 0.216 0.285 -0.786 -0.595 -0.172 -0.378 -0.190 -0.026 -0.227 0.201 0.018
+ 7.532 -0.614 -0.098 0.322 -0.854 -0.612 -0.312 -0.424 -0.256 -0.020 -0.016 0.288 0.023
+ 7.845 -0.538 0.030 0.587 -0.772 -0.600 -0.242 -0.531 -0.411 -0.086 -0.014 0.253 0.006
+ 7.938 -0.581 0.102 0.805 -0.580 -0.527 -0.229 -0.644 -0.472 -0.082 -0.051 0.279 0.031
+ 8.178 -0.606 0.008 0.655 -0.422 -0.494 -0.400 -0.749 -0.413 0.056 -0.174 0.223 -0.063
+ 7.884 -0.511 0.169 0.587 -0.573 -0.428 -0.454 -0.671 -0.478 -0.079 -0.211 0.257 -0.117
+ 7.474 -0.264 0.234 0.523 -0.716 -0.582 -0.216 -0.580 -0.416 -0.100 -0.039 0.183 -0.140
+ 7.384 0.176 0.553 0.674 -0.365 -0.432 -0.053 -0.437 -0.370 -0.141 -0.189 0.063 -0.206
+ 7.310 0.548 0.643 0.614 -0.160 -0.292 -0.189 -0.318 -0.230 -0.058 -0.262 0.071 -0.290
+ 6.639 0.099 0.666 0.666 -0.131 -0.231 -0.028 -0.173 -0.403 -0.056 -0.170 0.007 -0.235
+ 6.496 0.008 0.389 0.472 -0.220 -0.264 0.030 -0.153 -0.461 -0.307 -0.280 0.045 -0.223
+ 6.371 0.164 0.295 0.353 -0.160 -0.081 0.146 -0.125 -0.215 -0.185 -0.238 -0.068 -0.180
+ 7.152 0.146 0.252 0.137 -0.213 -0.149 -0.153 -0.237 -0.184 -0.118 -0.141 -0.113 -0.132
+ 8.849 1.254 0.516 -0.001 -0.221 -0.196 -0.184 -0.187 -0.353 -0.116 -0.264 -0.215 -0.170
+ 7.631 0.821 0.593 0.202 -0.142 -0.128 -0.062 -0.129 -0.273 -0.261 -0.182 -0.170 -0.309
+ 7.335 0.434 0.470 -0.167 -0.382 -0.196 -0.099 -0.101 -0.069 -0.155 -0.244 -0.050 -0.249
+ 7.159 -0.082 0.120 -0.067 -0.139 -0.080 -0.100 -0.037 -0.043 -0.100 -0.261 -0.079 -0.120
+ 7.358 0.346 0.154 0.294 -0.142 -0.198 -0.354 -0.235 -0.043 -0.160 -0.247 0.260 -0.181
+ 7.786 0.489 0.197 0.373 -0.273 -0.245 -0.413 -0.395 -0.093 -0.269 -0.476 0.239 -0.074
+ 8.124 0.657 0.053 0.182 -0.101 -0.144 -0.604 -0.349 -0.103 -0.087 -0.402 0.179 0.048
+ 8.142 0.557 0.117 0.022 -0.123 -0.108 -0.511 -0.369 -0.149 -0.203 -0.501 0.018 0.055
+ 7.978 0.857 0.174 0.044 0.011 -0.020 -0.426 -0.398 -0.100 -0.219 -0.424 0.022 -0.113
+ 7.123 0.750 0.028 0.164 -0.100 -0.237 -0.425 -0.224 -0.009 -0.243 -0.340 0.042 -0.096
+ 6.849 0.573 0.125 0.174 -0.124 -0.172 -0.340 -0.168 -0.129 -0.008 -0.247 0.019 -0.140
+ 6.589 0.787 0.105 0.064 -0.072 -0.065 -0.191 -0.215 -0.192 -0.045 -0.273 -0.180 -0.183
+ 6.654 0.810 -0.069 0.067 0.003 0.027 0.011 -0.097 -0.136 -0.116 -0.276 -0.090 -0.101
+ 6.637 0.930 0.362 0.251 -0.021 -0.222 -0.156 -0.114 -0.047 -0.278 -0.444 -0.186 -0.225
+ 6.517 1.117 0.420 0.334 -0.039 -0.228 0.013 -0.112 -0.093 -0.200 -0.297 -0.167 -0.158
+ 6.748 0.609 -0.068 0.268 -0.253 -0.227 -0.288 -0.243 -0.081 -0.142 -0.097 0.141 -0.167
+ 7.886 0.416 -0.049 0.299 -0.421 -0.279 -0.372 -0.289 -0.212 -0.214 -0.045 0.437 -0.170
+ 8.335 0.110 -0.182 0.307 -0.742 -0.458 -0.413 -0.034 -0.005 -0.034 -0.125 0.604 -0.167
+ 8.691 0.019 -0.237 0.421 -0.545 -0.650 -0.495 -0.236 -0.155 -0.147 -0.074 0.583 -0.213
+ 8.809 -0.088 -0.275 0.464 -0.468 -0.808 -0.599 -0.067 -0.216 -0.193 0.043 0.622 -0.082
+ 8.895 -0.177 -0.156 0.433 -0.612 -0.690 -0.625 -0.290 -0.141 -0.253 0.040 0.596 -0.233
+ 8.790 -0.136 -0.126 0.228 -0.688 -0.632 -0.453 -0.121 -0.003 -0.157 0.020 0.522 -0.185
+ 8.496 -0.021 -0.104 0.055 -0.457 -0.652 -0.333 -0.065 -0.048 -0.103 0.078 0.351 -0.380
+ 8.077 0.018 0.112 0.222 -0.378 -0.699 -0.379 -0.033 0.005 -0.082 0.061 0.386 -0.154
+ 8.301 0.518 0.008 0.083 -0.343 -0.351 -0.300 -0.178 -0.115 -0.122 0.011 0.257 -0.286
+ 7.805 0.555 0.196 0.107 -0.234 -0.464 -0.424 -0.211 -0.165 -0.261 -0.111 0.304 -0.189
+ 7.555 0.398 0.280 0.134 -0.095 -0.276 -0.140 -0.051 -0.277 -0.286 -0.306 0.089 -0.192
+ 7.289 0.411 0.370 0.300 -0.295 -0.448 -0.279 -0.143 -0.202 -0.199 -0.112 0.001 -0.127
+ 7.170 0.282 0.395 0.134 -0.185 -0.406 -0.393 -0.100 -0.066 -0.291 -0.064 0.344 -0.110
+ 7.347 0.301 0.475 0.106 -0.172 -0.242 -0.168 0.046 -0.061 -0.235 -0.080 0.188 -0.147
+ 8.458 0.515 -0.080 0.241 0.133 -0.166 -0.005 -0.170 -0.177 -0.213 -0.235 0.054 -0.214
+ 8.954 0.578 -0.105 0.068 0.087 -0.097 0.114 -0.136 -0.104 -0.346 -0.346 0.057 -0.244
+ 7.532 0.423 0.510 -0.066 -0.214 -0.351 -0.062 -0.079 -0.299 -0.064 -0.150 0.019 0.020
+ 7.650 0.292 0.586 -0.032 -0.141 -0.209 0.145 -0.043 -0.243 -0.213 -0.239 -0.044 -0.225
+ 7.394 0.072 0.320 0.065 -0.059 -0.237 -0.089 -0.117 -0.142 -0.073 -0.230 0.149 -0.107
+ 7.211 0.007 0.421 -0.185 0.040 -0.116 -0.089 -0.042 -0.138 -0.160 -0.057 -0.093 -0.120
+ 7.280 -0.058 0.374 -0.034 0.203 -0.269 -0.130 -0.306 -0.180 -0.190 -0.184 -0.142 -0.053
+ 7.044 -0.221 0.148 0.160 0.067 -0.437 -0.149 0.069 -0.069 -0.182 -0.204 -0.085 -0.166
+ 9.658 0.142 -0.059 0.371 -0.138 -0.613 0.015 -0.092 0.143 -0.427 -0.111 -0.156 -0.267
+ 10.260 0.562 -0.217 0.205 -0.012 -0.433 0.128 -0.112 0.148 -0.462 -0.214 -0.209 -0.261
+ 9.912 1.140 -0.297 0.006 0.203 -0.532 0.055 0.168 -0.207 -0.342 -0.314 -0.259 -0.265
+ 10.243 1.123 -0.285 0.011 0.216 -0.499 -0.136 0.435 -0.297 -0.386 -0.299 -0.289 -0.293
+ 11.295 1.095 -0.329 -0.075 -0.047 -0.456 -0.277 0.207 -0.187 -0.275 -0.140 -0.144 -0.195
+ 12.392 1.547 -0.435 -0.372 -0.123 -0.523 -0.442 0.064 -0.165 -0.278 -0.128 -0.099 -0.184
+ 12.240 2.313 -0.673 -0.755 -0.350 -0.537 -0.523 0.199 -0.252 -0.325 -0.232 0.134 0.104
+ 12.942 2.393 -0.584 -0.890 -0.280 -0.362 -0.809 0.434 -0.366 -0.350 -0.328 0.087 0.123
+ 12.878 2.621 -0.688 -0.965 -0.297 -0.257 -0.831 0.354 -0.293 -0.244 -0.343 -0.026 0.208
+ 13.143 2.457 -0.629 -1.043 -0.288 -0.065 -0.856 0.164 -0.231 -0.185 -0.272 -0.114 0.255
+ 13.569 2.291 -0.696 -1.029 -0.181 -0.111 -0.779 0.063 -0.332 -0.104 -0.273 -0.003 0.130
+ 13.306 2.616 -0.982 -1.009 -0.022 -0.081 -0.913 0.069 -0.463 0.039 -0.251 0.019 0.050
+ 13.401 2.378 -0.857 -0.983 0.058 -0.124 -0.873 -0.107 -0.367 0.047 -0.240 0.082 -0.087
+ 13.436 2.193 -0.925 -0.812 0.177 -0.083 -0.966 -0.226 -0.275 -0.015 -0.166 -0.020 -0.137
+ 12.948 2.106 -1.014 -0.533 0.254 0.119 -1.169 -0.290 -0.127 -0.120 -0.185 -0.103 -0.166
+ 12.421 1.583 -0.838 -0.421 0.509 0.029 -1.179 -0.297 0.014 -0.298 -0.198 -0.167 -0.142
+ 11.408 1.246 -0.759 -0.207 0.502 0.010 -1.075 -0.139 0.162 -0.256 -0.368 -0.197 -0.171
+ 10.279 0.833 -0.665 0.295 0.650 -0.089 -0.886 0.034 0.163 -0.451 -0.490 0.025 -0.147
+ 10.141 0.751 -0.483 0.451 0.613 -0.348 -1.005 0.199 0.019 -0.456 -0.335 0.109 -0.114
+ 11.903 0.296 -0.534 0.404 0.479 -0.317 -0.841 0.284 -0.434 -0.564 -0.103 0.022 -0.137
+ 13.489 0.410 -0.452 0.372 0.350 -0.458 -1.208 0.387 -0.511 -0.490 -0.116 0.030 -0.240
+ 13.889 0.643 -0.658 0.274 0.027 -0.580 -1.195 0.408 -0.281 -0.266 -0.050 0.131 -0.255
+ 13.320 1.072 -0.832 0.155 0.103 -0.559 -1.191 0.349 -0.120 -0.230 -0.166 0.173 -0.265
+ 11.718 0.884 -0.610 0.335 -0.002 -0.620 -0.887 0.086 0.094 0.005 -0.390 0.186 -0.015
+ 10.937 0.857 -0.390 0.304 0.118 -0.348 -0.432 -0.470 0.152 0.208 -0.788 0.103 0.058
+ 10.858 0.871 -0.376 0.177 0.130 -0.265 -0.358 -0.580 0.125 0.285 -0.737 0.028 -0.049
+ 10.783 0.960 -0.482 0.140 0.033 -0.297 -0.141 -0.570 0.067 0.215 -0.528 0.094 -0.210
+ 10.784 0.912 -0.427 0.212 -0.197 -0.265 -0.031 -0.478 -0.127 0.172 -0.404 0.213 -0.240
+ 11.501 0.728 -0.331 -0.048 -0.129 -0.261 -0.043 -0.405 -0.133 0.118 -0.407 0.233 -0.260
+ 11.778 1.093 -0.614 -0.178 -0.080 -0.231 -0.187 -0.274 -0.103 0.055 -0.392 0.248 -0.140
+ 11.811 1.217 -0.606 -0.011 -0.267 -0.426 -0.113 -0.179 0.004 -0.170 -0.223 0.066 -0.114
+ 11.837 0.635 -0.490 0.275 -0.459 -0.488 -0.044 -0.096 -0.096 0.057 -0.274 -0.020 0.001
+ 11.645 0.713 -0.484 0.223 -0.380 -0.600 -0.161 -0.076 -0.015 0.037 -0.154 -0.057 0.011
+ 11.115 1.399 -0.779 0.155 -0.519 -0.762 -0.024 -0.124 0.147 0.029 -0.056 -0.174 -0.068
+ 10.906 1.913 -1.060 -0.027 -0.481 -0.936 0.123 -0.072 0.069 0.086 -0.200 -0.069 -0.152
+ 10.866 1.906 -1.109 -0.094 -0.533 -0.983 0.192 0.016 0.087 0.150 -0.288 -0.025 -0.192
+ 10.895 1.753 -1.185 -0.001 -0.456 -0.857 0.260 -0.001 0.066 0.038 -0.264 -0.064 -0.078
+ 10.983 1.888 -1.352 0.143 -0.600 -0.741 0.223 0.063 0.034 -0.021 -0.314 -0.040 -0.069
+ 10.891 1.886 -1.300 0.015 -0.388 -0.781 0.149 0.136 -0.048 -0.100 -0.199 -0.084 -0.078
+ 12.341 0.862 -0.654 -0.506 -0.560 -0.513 0.076 0.378 -0.412 -0.059 0.159 -0.225 0.055
+ 12.526 0.844 -0.652 -0.605 -0.539 -0.379 -0.013 0.259 -0.380 0.057 0.173 -0.231 -0.110
+ 11.892 0.993 -0.463 -0.803 -0.580 -0.233 -0.377 -0.049 -0.453 0.066 -0.038 -0.134 0.026
+ 9.514 0.910 -0.204 -0.365 -0.023 -0.294 -0.233 -0.081 -0.394 0.074 -0.038 -0.018 0.038
+ 9.581 0.169 -0.153 -0.248 0.219 -0.400 -0.115 -0.133 -0.074 -0.037 -0.143 -0.085 -0.134
+ 10.673 -0.248 -0.537 -0.487 0.143 -0.473 -0.279 -0.151 -0.234 -0.047 -0.114 0.020 0.007
+ 9.454 -1.039 0.227 -0.386 -0.035 -0.315 -0.200 -0.282 0.009 -0.005 -0.102 -0.165 0.024
+ 9.869 -1.677 0.512 -0.253 0.220 -0.243 -0.328 -0.159 -0.067 -0.135 -0.131 -0.127 -0.103
+ 10.080 -1.594 0.551 -0.453 0.277 -0.272 -0.142 -0.080 -0.031 0.058 -0.061 0.044 -0.107
+ 9.579 -1.740 0.317 -0.459 0.119 -0.283 0.071 0.081 0.059 -0.063 -0.289 -0.009 0.009
+ 8.073 -1.444 0.437 -0.709 0.041 -0.508 -0.264 0.156 0.039 -0.092 -0.230 -0.008 -0.214
+ 6.727 -0.794 0.649 -0.183 -0.044 -0.377 0.016 0.011 -0.029 0.100 -0.061 -0.181 -0.173
+ 6.075 -0.194 0.235 -0.150 -0.033 -0.288 -0.059 -0.111 0.068 0.060 0.063 -0.058 -0.087
+ 6.361 -0.400 0.169 -0.165 0.263 -0.225 -0.180 -0.182 -0.096 0.056 -0.138 0.077 -0.015
+ 9.515 -1.056 -0.076 -0.344 0.072 -0.321 -0.170 0.051 -0.295 -0.128 -0.292 0.087 -0.257
+ 11.016 -1.130 0.084 -0.400 0.002 -0.416 -0.359 -0.046 -0.310 -0.166 -0.216 0.053 -0.079
+ 10.720 -1.006 0.167 -0.217 -0.119 -0.320 -0.500 -0.080 0.211 -0.116 -0.098 -0.027 0.185
+ 12.085 0.611 -0.448 -0.002 -0.175 -0.283 -0.518 -0.241 -0.071 -0.108 -0.186 -0.212 0.123
+ 11.537 1.213 -0.903 0.218 -0.190 -0.419 -0.337 -0.443 -0.076 -0.008 -0.286 0.005 -0.034
+ 10.703 1.048 -0.802 0.191 -0.106 -0.409 -0.194 -0.440 -0.130 0.007 -0.124 -0.073 -0.149
+ 9.596 0.654 -0.366 0.473 0.130 -0.364 -0.068 -0.319 -0.221 -0.042 -0.158 -0.111 -0.379
+ 9.643 0.661 -0.412 0.596 0.177 -0.361 -0.237 -0.363 -0.241 0.075 -0.124 -0.002 -0.424
+ 9.555 0.795 -0.539 0.596 0.230 -0.383 -0.263 -0.399 -0.207 -0.054 -0.026 -0.133 -0.347
+ 9.410 0.936 -0.575 0.503 0.246 -0.387 -0.234 -0.301 -0.250 -0.143 0.040 -0.233 -0.360
+ 11.070 0.978 -0.852 0.034 0.269 -0.465 -0.551 -0.229 -0.122 0.023 -0.041 -0.328 0.008
+ 11.841 0.999 -1.162 0.414 -0.072 -0.602 -0.691 -0.056 -0.029 -0.030 -0.211 -0.026 0.122
+ 12.160 0.721 -0.888 0.390 -0.167 -0.821 -0.614 0.052 -0.109 -0.057 -0.140 0.130 0.027
+ 12.460 0.502 -0.656 0.365 -0.249 -0.895 -0.512 0.093 -0.262 -0.042 -0.066 0.145 -0.114
+ 12.435 0.546 -0.577 0.372 -0.263 -0.879 -0.414 -0.026 -0.336 -0.046 -0.070 0.136 -0.192
+ 12.178 0.206 -0.162 0.476 -0.345 -0.690 -0.392 -0.056 -0.403 -0.140 -0.150 0.147 -0.233
+ 11.061 0.124 0.096 0.446 -0.525 -0.674 -0.391 -0.112 -0.419 -0.205 -0.062 0.125 -0.206
+ 10.571 0.192 -0.196 0.424 -0.303 -0.456 -0.213 -0.376 -0.327 -0.218 -0.145 -0.087 -0.011
+ 8.451 0.061 -0.412 0.311 -0.216 -0.451 -0.032 -0.264 -0.154 -0.063 -0.140 -0.084 -0.017
+ 6.254 0.001 0.097 0.158 -0.102 -0.514 -0.500 -0.125 -0.077 0.025 -0.088 -0.075 -0.222
+ 7.382 -0.386 -0.131 0.166 -0.102 -0.508 -0.190 -0.150 -0.120 0.120 -0.113 0.077 0.002
+ 11.056 -0.984 -0.566 0.146 -0.059 -0.384 -0.164 -0.306 -0.212 -0.002 -0.190 0.042 -0.038
+ 11.367 -0.585 -0.354 0.060 -0.147 -0.341 -0.341 -0.478 -0.269 -0.039 -0.262 0.105 -0.039
+ 11.203 0.256 0.168 0.547 -0.311 -0.663 -0.477 -0.091 -0.528 -0.118 -0.222 -0.033 -0.164
+ 12.458 0.528 0.021 0.187 -0.369 -0.512 -0.902 0.215 -0.683 0.018 -0.279 0.126 -0.142
+ 12.428 0.899 -0.515 0.023 -0.064 -0.788 -0.877 0.233 -0.512 0.006 -0.247 0.194 -0.061
+ 12.032 0.817 -0.482 0.036 -0.118 -0.845 -0.801 0.091 -0.303 -0.019 -0.263 0.268 -0.093
+ 11.171 0.697 -0.218 -0.124 -0.093 -0.697 -0.828 -0.135 -0.309 0.119 -0.504 0.202 0.132
+ 8.910 0.779 0.144 0.079 0.069 -0.376 -0.299 -0.167 -0.239 -0.087 -0.224 -0.133 -0.039
+ 8.625 0.111 0.294 0.220 -0.094 -0.321 -0.354 0.122 -0.351 -0.143 -0.031 -0.113 -0.042
+ 11.084 -0.346 -0.699 -0.096 -0.181 -0.617 -0.360 0.301 -0.397 -0.218 0.038 0.034 -0.088
+ 11.922 -0.037 -0.479 0.133 0.005 -0.593 -0.473 0.264 -0.328 -0.220 -0.194 0.006 -0.147
+ 11.583 0.311 -0.677 -0.112 0.317 -0.023 -0.420 0.286 -0.117 -0.143 -0.234 -0.089 -0.041
+ 12.188 -0.526 -0.728 -0.357 0.125 0.211 0.017 0.105 -0.049 -0.178 -0.110 -0.122 -0.029
+ 11.546 -0.333 -0.632 -0.382 0.091 0.083 0.057 0.108 -0.416 -0.201 0.098 -0.253 0.137
+ 11.810 0.446 -0.296 -0.029 0.084 0.077 0.018 0.093 -0.460 -0.283 -0.290 -0.267 -0.009
+ 12.050 -0.078 -0.456 0.060 0.097 0.303 -0.166 0.212 -0.462 -0.046 0.095 -0.573 0.054
+ 12.188 -0.532 -0.796 -0.136 -0.351 0.239 -0.171 0.271 -0.446 -0.061 0.350 -0.526 0.158
+ 11.579 -0.329 -0.529 -0.114 -0.213 0.296 -0.095 0.279 -0.524 -0.020 0.108 -0.537 -0.128
+ 11.374 0.387 -0.425 -0.335 -0.196 0.256 -0.049 0.334 -0.628 -0.113 -0.256 -0.417 -0.249
+ 11.384 1.146 -0.299 -0.320 -0.409 -0.098 -0.125 0.124 -0.478 0.088 -0.115 -0.269 -0.230
+ 11.707 1.848 -0.635 -0.989 -0.648 -0.070 -0.248 0.149 -0.409 -0.114 -0.024 -0.087 -0.100
+ 11.971 2.063 -1.185 -0.963 -0.288 -0.246 -0.672 0.571 -0.567 -0.217 0.236 -0.096 -0.295
+ 11.901 2.002 -1.228 -0.965 -0.306 -0.195 -0.663 0.461 -0.579 -0.142 0.291 -0.081 -0.240
+ 12.045 1.868 -1.176 -1.049 -0.300 -0.140 -0.735 0.350 -0.455 -0.120 0.241 -0.035 -0.179
+ 12.259 1.885 -1.279 -1.016 -0.189 -0.092 -0.856 0.264 -0.363 -0.113 0.214 -0.146 -0.038
+ 12.027 2.103 -1.366 -1.114 0.006 -0.081 -0.926 0.179 -0.313 0.027 0.021 -0.134 0.099
+ 11.516 2.117 -1.314 -1.137 0.004 -0.012 -0.955 0.080 -0.317 0.110 -0.017 -0.029 -0.003
+ 11.643 1.823 -1.134 -1.277 0.038 -0.042 -0.995 -0.028 -0.172 0.114 0.015 -0.053 -0.016
+ 11.808 1.911 -1.166 -1.194 0.003 0.061 -1.150 -0.085 -0.117 0.134 -0.038 -0.108 0.104
+ 11.892 1.867 -1.238 -1.120 0.019 0.083 -1.111 -0.175 -0.085 0.100 0.008 -0.179 0.087
+ 11.525 1.917 -1.319 -1.048 0.066 -0.007 -1.118 -0.126 -0.118 0.169 -0.025 -0.186 0.092
+ 11.217 2.022 -1.439 -0.992 0.140 -0.075 -1.170 -0.197 -0.019 0.156 -0.004 -0.177 0.118
+ 11.747 1.861 -1.472 -0.865 0.188 -0.179 -1.115 -0.298 0.048 0.094 -0.098 -0.141 0.093
+ 11.909 1.660 -1.347 -0.776 0.175 -0.173 -1.214 -0.203 0.037 0.053 -0.135 -0.192 0.144
+ 11.616 1.528 -1.301 -0.663 0.165 -0.154 -1.342 -0.070 0.106 -0.130 -0.053 -0.123 0.062
+ 11.632 1.363 -1.238 -0.564 0.191 -0.191 -1.409 -0.078 0.066 -0.152 -0.096 -0.058 0.085
+ 12.022 1.306 -1.190 -0.443 0.147 -0.142 -1.435 -0.047 0.045 -0.297 -0.055 -0.143 0.169
+ 12.105 1.182 -1.171 -0.255 0.077 -0.076 -1.454 0.038 0.039 -0.416 -0.068 -0.139 0.104
+ 11.884 0.971 -1.105 -0.061 0.174 -0.269 -1.304 -0.018 0.088 -0.508 -0.125 -0.033 0.050
+ 11.716 0.866 -1.033 -0.024 0.260 -0.408 -1.282 -0.031 0.063 -0.623 -0.066 -0.035 -0.024
+ 11.504 0.774 -0.896 0.136 0.266 -0.299 -1.209 0.111 -0.074 -0.582 -0.202 0.007 -0.170
+ 9.213 0.423 -0.779 0.375 0.555 -0.277 -0.900 0.364 -0.179 -0.402 -0.167 0.174 -0.251
+ 9.598 -0.446 -0.579 0.456 0.344 -0.252 -0.299 0.193 -0.195 -0.214 -0.210 -0.084 -0.190
+ 8.643 -0.210 -0.204 0.297 0.555 -0.348 -0.248 0.190 -0.134 -0.344 -0.077 -0.012 -0.026
+ 8.177 -0.201 0.136 0.173 0.443 -0.194 -0.502 0.183 -0.121 -0.266 0.054 0.004 0.019
+ 10.043 -0.458 -0.380 0.273 0.020 -0.223 -0.251 0.000 -0.175 -0.129 -0.141 -0.047 -0.133
+ 12.117 -0.439 -0.442 -0.271 -0.307 -0.480 -0.120 -0.028 -0.144 -0.257 -0.245 -0.055 -0.147
+ 11.388 -0.361 -0.106 0.082 -0.270 -0.657 -0.206 -0.117 0.082 -0.374 -0.124 -0.123 -0.089
+ 11.367 -0.415 -0.559 0.141 0.151 -0.337 0.054 0.138 0.148 -0.601 -0.145 -0.123 -0.142
+ 11.111 -0.212 -1.014 0.226 0.102 -0.576 -0.016 0.189 0.033 -0.369 -0.085 -0.048 -0.070
+ 11.275 -0.241 -0.946 0.202 -0.009 -0.355 -0.049 0.144 -0.039 -0.137 -0.049 -0.004 -0.001
+ 11.298 -0.100 -0.906 0.009 0.001 -0.344 -0.192 0.340 0.122 -0.191 0.084 0.133 -0.257
+ 11.005 -0.438 -0.733 -0.011 -0.134 -0.252 -0.257 0.038 0.127 -0.300 -0.227 0.322 -0.261
+ 10.398 -0.531 -0.570 0.284 0.141 -0.223 -0.212 0.123 0.139 -0.315 -0.396 -0.005 -0.205
+ 9.988 -0.196 -0.318 0.350 0.336 0.002 -0.184 0.273 0.122 -0.311 -0.447 -0.260 -0.333
+ 9.925 -0.590 -0.739 0.179 0.056 -0.088 -0.242 0.204 -0.158 -0.157 -0.186 0.035 -0.139
+ 9.983 -0.657 -0.784 0.094 0.236 0.014 -0.181 0.132 0.099 -0.226 -0.230 -0.039 -0.218
+ 9.376 -0.648 -0.427 0.116 0.393 -0.209 -0.252 0.175 0.002 -0.121 -0.255 0.191 0.011
+ 8.851 -0.535 -0.298 0.040 0.128 -0.217 -0.227 0.227 -0.059 -0.141 -0.102 0.277 0.009
+ 8.654 -0.475 -0.441 0.086 0.411 -0.107 -0.051 0.370 0.100 -0.255 -0.458 0.065 -0.036
+ 9.142 -0.265 -0.254 0.142 0.324 -0.424 -0.288 0.051 0.103 -0.137 -0.492 0.055 -0.053
+ 9.235 0.241 0.261 0.229 -0.113 -0.509 -0.469 -0.080 0.163 -0.045 -0.485 0.211 -0.239
+ 6.022 0.295 0.381 0.197 -0.147 -0.325 -0.418 -0.189 0.155 0.041 -0.296 0.207 -0.256
+ 5.847 0.702 0.310 0.112 -0.151 -0.187 -0.222 0.126 -0.117 -0.089 -0.197 -0.045 -0.083
+ 5.586 0.391 0.366 -0.173 -0.234 -0.079 -0.237 -0.015 0.031 0.059 -0.126 0.027 0.117
+ 4.809 -0.006 0.116 -0.046 -0.078 0.096 -0.041 0.036 -0.073 0.094 -0.072 -0.224 -0.024
+ 4.785 0.061 -0.026 0.015 -0.025 -0.130 -0.224 -0.037 0.012 0.074 0.016 -0.097 -0.023
+ 4.537 0.004 -0.008 0.031 0.028 0.040 -0.348 -0.069 -0.080 0.051 0.046 0.012 -0.070
+ 8.889 0.432 -0.992 -0.062 -0.323 -0.397 -0.215 -0.243 0.086 -0.090 -0.112 -0.115 -0.007
+ 11.861 0.127 -0.903 -0.062 -0.305 -0.492 -0.262 -0.287 0.347 -0.100 -0.110 -0.076 0.011
+ 12.307 -0.221 -0.720 -0.292 0.067 -0.301 -0.117 -0.166 0.284 -0.170 -0.274 0.063 -0.075
+ 13.095 -0.401 -0.244 -0.111 0.107 -0.283 -0.129 -0.023 -0.203 -0.365 -0.305 -0.081 -0.106
+ 13.774 -0.071 -0.170 -0.108 0.188 -0.504 -0.192 0.074 -0.205 -0.252 -0.279 -0.153 -0.318
+ 12.787 -0.298 -0.222 -0.029 0.375 -0.198 -0.041 -0.104 -0.290 -0.016 -0.255 0.069 -0.215
+ 12.376 -0.470 -0.665 0.009 0.383 -0.022 -0.046 -0.250 -0.257 0.052 -0.091 0.074 -0.215
+ 12.305 -0.595 -1.029 -0.138 0.410 -0.158 -0.178 -0.096 -0.108 0.228 -0.026 0.012 -0.141
+ 11.930 -0.903 -1.163 -0.268 0.053 -0.477 -0.340 -0.085 0.239 0.297 0.106 0.020 -0.170
+ 11.874 -0.928 -1.055 -0.244 0.148 -0.506 -0.365 0.007 0.423 0.076 0.135 0.046 -0.192
+ 11.561 -1.216 -1.025 -0.258 0.163 -0.446 -0.375 -0.120 0.416 0.136 0.131 0.205 -0.072
+ 11.227 -0.970 -0.769 -0.185 0.191 -0.361 -0.462 -0.292 0.327 0.127 -0.054 0.016 -0.203
+ 11.269 -0.846 -0.615 -0.067 0.311 -0.437 -0.374 -0.245 0.260 0.190 0.027 -0.128 -0.173
+ 11.200 -0.932 -0.776 -0.172 0.167 -0.335 -0.344 -0.154 0.200 0.305 0.134 -0.228 -0.092
+ 11.061 -1.188 -0.882 -0.259 0.118 -0.627 -0.309 -0.115 0.246 0.247 0.121 -0.060 -0.209
+ 10.891 -1.062 -0.856 -0.107 0.177 -0.471 -0.164 -0.089 0.144 0.172 0.281 -0.138 -0.075
+ 10.753 -1.335 -1.037 -0.417 0.206 -0.555 -0.198 0.016 0.152 0.208 0.227 -0.055 0.032
+ 10.665 -1.154 -0.945 -0.348 0.261 -0.514 -0.236 -0.012 0.123 0.253 0.175 -0.051 -0.045
+ 10.538 -1.232 -0.980 -0.456 0.086 -0.409 -0.175 0.003 0.013 0.338 0.256 -0.154 -0.029
+ 10.694 -1.223 -0.901 -0.330 0.158 -0.617 -0.394 -0.258 -0.109 0.136 0.301 -0.127 -0.156
+ 10.818 -1.178 -1.118 -0.253 0.252 -0.635 -0.392 -0.016 -0.072 -0.038 0.243 0.026 -0.364
+ 10.680 -1.237 -1.100 -0.304 0.277 -0.716 -0.501 -0.033 0.041 -0.003 0.006 -0.006 -0.192
+ 10.580 -1.011 -1.044 -0.382 0.230 -0.522 -0.320 -0.025 0.165 -0.062 -0.124 -0.009 -0.134
+ 10.707 -0.916 -1.117 -0.261 0.188 -0.672 -0.194 0.095 0.168 -0.134 -0.214 -0.149 -0.054
+ 10.442 -1.137 -1.081 -0.357 -0.137 -0.592 -0.185 -0.091 0.085 -0.072 0.012 -0.088 -0.064
+ 10.394 -1.093 -0.990 -0.350 0.102 -0.446 -0.218 -0.131 0.176 0.094 -0.241 -0.176 -0.210
+ 10.314 -0.968 -0.911 -0.290 -0.068 -0.505 -0.257 -0.034 -0.060 -0.179 -0.199 -0.136 -0.162
+ 10.354 -0.932 -0.901 -0.173 0.090 -0.669 -0.288 -0.122 -0.059 -0.226 -0.152 -0.063 -0.120
+ 10.250 -0.825 -0.892 -0.178 0.047 -0.593 -0.425 -0.121 -0.035 -0.209 -0.200 -0.013 -0.073
+ 10.116 -0.744 -0.994 -0.260 -0.006 -0.504 -0.341 -0.218 -0.014 -0.195 -0.236 -0.074 -0.073
+ 10.090 -0.751 -0.883 -0.203 0.067 -0.559 -0.107 -0.161 -0.116 -0.096 -0.096 0.014 -0.181
+ 10.103 -0.628 -0.777 -0.250 0.028 -0.577 -0.146 -0.148 -0.024 -0.139 -0.184 -0.022 -0.156
+ 10.064 -0.666 -0.737 -0.336 0.019 -0.585 -0.169 -0.128 -0.043 -0.274 -0.041 -0.057 -0.049
+ 10.062 -0.653 -0.804 -0.358 -0.010 -0.633 -0.158 -0.251 -0.039 -0.158 -0.029 -0.073 -0.067
+ 10.049 -0.589 -0.742 -0.307 -0.014 -0.626 -0.310 -0.116 -0.002 -0.019 0.024 -0.055 -0.087
+ 9.778 -0.881 -0.804 -0.403 -0.183 -0.537 -0.330 -0.025 0.067 -0.140 -0.127 0.126 -0.085
+ 9.798 -0.699 -0.601 -0.286 -0.007 -0.605 -0.279 -0.012 0.206 -0.267 -0.087 0.024 -0.095
+ 10.304 -0.251 -0.219 -0.163 0.044 -0.392 -0.152 -0.089 0.006 -0.235 -0.168 0.054 -0.172
+ 10.723 0.088 -0.203 -0.027 0.187 -0.331 -0.204 0.008 0.011 -0.330 -0.302 0.078 -0.090
+ 10.005 -0.450 -0.653 -0.249 0.021 -0.438 -0.161 0.036 0.192 -0.280 -0.078 0.027 -0.123
+ 9.651 -0.649 -0.722 -0.300 -0.184 -0.549 -0.340 -0.124 0.134 -0.096 -0.039 -0.013 -0.117
+ 9.374 -0.589 -0.600 -0.357 -0.063 -0.552 -0.255 0.002 0.191 -0.077 -0.095 0.060 -0.197
+ 9.335 -0.782 -0.723 -0.454 -0.019 -0.449 -0.243 0.044 0.209 0.123 -0.003 -0.057 -0.106
+ 9.385 -0.644 -0.683 -0.489 -0.372 -0.436 -0.176 0.055 0.322 0.135 0.050 -0.082 -0.094
+ 9.466 -0.493 -0.595 -0.526 -0.354 -0.607 -0.275 0.013 0.388 0.087 0.064 0.051 -0.177
+ 9.237 -0.611 -0.688 -0.387 -0.203 -0.687 -0.398 -0.051 0.326 0.074 0.208 0.062 -0.177
+ 9.259 -0.483 -0.658 -0.526 -0.238 -0.586 -0.356 0.112 0.360 0.079 0.101 0.072 -0.146
+ 9.706 -0.028 -0.359 -0.214 -0.037 -0.297 -0.327 0.068 0.365 0.008 0.035 0.071 -0.268
+ 9.530 -0.137 -0.377 -0.124 -0.007 -0.325 -0.373 -0.038 0.337 0.043 0.081 0.158 -0.149
+ 9.373 -0.400 -0.649 -0.548 -0.180 -0.253 -0.237 0.067 0.289 -0.100 -0.078 -0.077 -0.094
+ 9.148 -0.496 -0.698 -0.460 -0.254 -0.230 -0.178 0.067 0.435 -0.031 -0.178 -0.095 -0.149
+ 9.294 -0.403 -0.587 -0.253 -0.124 -0.360 -0.355 0.039 0.266 -0.088 -0.170 -0.259 -0.125
+ 8.957 -0.604 -0.716 -0.345 -0.033 -0.321 -0.291 0.060 0.132 -0.010 -0.304 -0.351 -0.118
+ 9.116 -0.366 -0.506 -0.194 0.141 -0.147 -0.140 0.106 0.107 -0.039 -0.305 -0.319 -0.325
+ 9.883 0.134 0.014 0.155 0.191 -0.119 -0.226 -0.152 -0.117 -0.098 -0.139 -0.174 -0.091
+ 9.688 -0.058 -0.095 -0.031 0.136 -0.142 -0.203 -0.065 0.032 -0.018 -0.122 -0.185 -0.135
+ 9.781 -0.424 -0.525 -0.149 0.014 -0.125 -0.365 -0.114 -0.047 -0.063 -0.065 0.032 -0.158
+ 9.803 -0.367 -0.423 -0.252 -0.173 -0.277 -0.233 -0.221 -0.058 -0.052 -0.107 0.010 -0.029
+ 10.207 -0.399 -0.130 -0.190 -0.074 -0.151 -0.169 -0.171 -0.159 -0.137 -0.112 -0.031 -0.095
+ 10.652 -0.292 -0.181 -0.171 -0.132 -0.086 -0.377 -0.316 -0.174 -0.216 -0.183 -0.136 -0.206
+ 10.596 -0.378 -0.359 -0.244 -0.129 -0.212 -0.305 -0.266 -0.046 -0.191 -0.229 -0.114 -0.108
+ 10.270 -0.358 -0.277 -0.271 -0.198 -0.101 -0.255 -0.216 0.163 0.045 -0.310 -0.184 -0.097
+ 10.179 -0.351 -0.334 -0.402 -0.048 -0.096 -0.244 -0.240 0.094 -0.083 -0.297 -0.139 -0.245
+ 10.217 -0.444 -0.387 -0.387 0.020 -0.325 -0.370 -0.082 -0.045 -0.220 -0.255 0.030 -0.134
+ 10.490 -0.455 -0.519 -0.163 -0.021 0.007 -0.173 -0.254 0.013 -0.242 -0.247 -0.098 -0.036
+ 10.628 -0.510 -0.502 -0.484 -0.266 -0.195 -0.256 -0.226 -0.067 -0.335 -0.334 -0.172 -0.088
+ 10.250 -0.739 -0.553 -0.545 -0.237 -0.246 -0.188 -0.063 0.134 -0.109 -0.193 0.003 -0.130
+ 10.011 -0.369 -0.440 -0.329 -0.135 -0.339 -0.336 -0.189 0.134 -0.202 -0.304 -0.019 -0.068
+ 10.023 -0.473 -0.298 -0.402 -0.131 -0.276 -0.310 -0.246 0.195 0.061 -0.167 -0.001 -0.022
+ 10.078 -0.359 -0.097 -0.368 -0.276 -0.458 -0.164 -0.168 0.131 0.046 -0.242 -0.198 -0.039
+ 10.065 -0.149 -0.061 -0.286 -0.091 -0.192 -0.226 -0.264 0.193 0.025 -0.098 -0.171 -0.269
+ 9.606 -0.488 -0.270 -0.428 -0.176 -0.425 -0.376 -0.198 0.368 0.091 -0.172 0.021 -0.211
+ 9.470 -0.573 -0.416 -0.426 -0.195 -0.565 -0.414 -0.229 0.334 0.019 -0.235 -0.007 -0.222
+ 9.628 -0.441 -0.376 -0.371 -0.183 -0.422 -0.326 -0.234 0.295 -0.034 -0.226 -0.036 -0.233
+ 9.744 -0.642 -0.461 -0.350 -0.321 -0.331 -0.317 0.030 0.340 -0.030 -0.248 0.001 -0.190
+ 9.561 -0.486 -0.376 -0.241 -0.276 -0.078 -0.004 0.110 0.482 0.040 -0.277 -0.061 -0.249
+ 9.479 -0.361 -0.411 -0.125 -0.257 -0.312 -0.072 0.047 0.388 0.033 -0.358 -0.069 -0.172
+ 9.510 -0.508 -0.383 -0.055 -0.368 -0.552 -0.107 0.162 0.251 -0.002 -0.164 -0.051 -0.149
+ 8.920 -0.382 -0.290 -0.111 -0.388 -0.291 -0.210 0.113 0.308 0.142 -0.056 -0.035 -0.251
+ 11.824 0.486 -0.391 0.019 -0.079 -0.294 -0.312 0.121 -0.184 -0.056 -0.353 -0.066 -0.299
+ 13.083 0.555 -0.334 -0.010 -0.153 -0.382 -0.383 0.199 -0.218 0.022 -0.316 0.122 -0.284
+ 12.452 0.340 -0.389 -0.024 -0.146 -0.535 -0.505 0.151 -0.169 0.113 -0.206 0.294 -0.166
+ 9.849 0.321 -0.099 -0.155 -0.031 -0.456 -0.607 0.187 -0.001 0.124 -0.268 0.065 -0.131
+ 9.113 -0.129 -0.226 -0.181 -0.259 -0.604 -0.365 0.049 0.241 0.146 -0.260 0.024 -0.161
+ 8.992 -0.299 -0.402 -0.418 -0.171 -0.621 -0.429 -0.069 0.240 0.081 -0.283 0.092 -0.093
+ 9.152 -0.296 -0.322 -0.353 -0.177 -0.490 -0.281 0.013 0.230 -0.095 -0.166 0.101 0.062
+ 9.144 -0.408 -0.335 -0.439 -0.183 -0.641 -0.167 0.141 0.276 -0.294 -0.266 0.209 0.115
+ 9.116 -0.507 -0.273 -0.478 -0.238 -0.539 -0.210 0.225 0.064 -0.258 -0.153 0.124 0.041
+ 8.985 -0.646 -0.281 -0.565 -0.121 -0.449 -0.285 0.128 0.175 -0.278 -0.338 0.044 0.050
+ 8.450 -0.884 -0.371 -0.443 -0.189 -0.603 -0.215 0.112 0.361 -0.269 -0.527 0.042 0.106
+ 8.361 -0.881 -0.446 -0.356 -0.114 -0.223 -0.170 0.208 0.239 -0.397 -0.382 -0.128 0.034
+ 8.428 -0.847 -0.490 -0.229 -0.013 -0.497 -0.054 0.177 0.325 -0.276 -0.426 -0.279 0.042
+ 8.496 -0.957 -0.513 -0.314 0.020 -0.337 -0.058 0.215 0.307 -0.245 -0.309 -0.187 0.067
+ 8.474 -0.825 -0.339 -0.236 -0.099 -0.386 -0.073 0.205 0.280 -0.177 -0.411 -0.249 -0.102
+ 7.977 -0.952 -0.473 -0.352 -0.006 -0.350 -0.111 0.105 0.227 -0.353 -0.444 -0.341 -0.167
+ 7.604 -1.047 -0.566 -0.424 -0.007 -0.439 -0.092 0.025 0.383 -0.187 -0.305 -0.319 -0.145
+ 7.698 -0.994 -0.462 -0.359 0.026 -0.409 -0.225 -0.037 0.544 -0.016 -0.258 -0.225 -0.183
+ 7.530 -1.003 -0.490 -0.321 0.013 -0.531 -0.144 0.129 0.525 -0.166 -0.404 -0.299 -0.201
+ 7.793 -0.686 -0.399 -0.528 0.092 -0.576 -0.297 -0.035 0.549 -0.006 -0.332 -0.182 -0.037
+ 7.529 -0.782 -0.391 -0.440 0.045 -0.516 -0.248 0.070 0.560 0.130 -0.405 -0.181 0.076
+ 7.474 -0.693 -0.500 -0.505 0.103 -0.326 -0.379 0.107 0.459 0.117 -0.159 -0.123 -0.040
+ 6.847 -1.102 -0.696 -0.633 0.103 -0.241 -0.366 0.048 0.514 0.040 -0.003 -0.131 -0.192
+ 6.859 -0.892 -0.481 -0.424 0.264 -0.419 -0.397 -0.093 0.298 -0.072 -0.053 -0.087 -0.179
+ 6.688 -0.926 -0.379 -0.322 0.404 -0.250 -0.185 0.061 0.344 -0.281 -0.062 -0.094 -0.188
+ 7.023 -0.557 -0.155 -0.293 0.302 -0.373 -0.243 -0.197 0.277 -0.036 0.030 0.061 -0.020
+ 7.595 -0.469 -0.112 -0.122 0.173 -0.196 -0.093 -0.277 -0.105 -0.254 -0.102 0.101 0.040
+ 7.673 -0.489 -0.165 -0.137 0.061 -0.055 -0.354 -0.403 -0.075 -0.251 0.008 0.179 0.041
+ 7.512 -0.434 -0.447 -0.095 0.139 0.084 -0.221 -0.462 -0.081 -0.245 -0.011 -0.001 -0.018
+ 6.996 -0.256 -0.271 -0.246 0.149 -0.000 -0.252 -0.152 -0.241 -0.307 0.041 0.095 0.010
+ 6.448 -0.085 -0.021 -0.200 0.274 -0.287 -0.384 -0.010 -0.049 -0.162 0.006 0.232 0.082
+ 6.229 -0.028 0.151 -0.247 0.319 -0.113 -0.238 0.108 0.121 -0.042 -0.269 0.018 -0.077
+ 6.088 -0.212 -0.133 -0.115 0.062 0.055 -0.238 -0.190 0.115 0.088 -0.135 0.132 0.165
+ 6.338 0.084 -0.121 0.033 0.071 0.106 -0.451 -0.217 -0.055 -0.083 -0.101 -0.025 -0.077
+ 6.756 0.093 0.195 0.076 0.022 0.030 -0.269 -0.171 0.013 -0.062 -0.026 0.037 -0.023
+ 6.619 0.285 0.088 0.014 0.076 0.149 -0.332 -0.176 -0.039 0.029 -0.180 0.010 -0.037
+ 6.464 0.383 0.091 -0.082 -0.182 0.118 -0.341 -0.127 0.068 -0.072 -0.099 0.040 -0.023
+ 6.935 0.257 0.336 0.117 0.113 0.362 -0.362 -0.257 -0.266 -0.119 -0.099 -0.094 -0.085
+ 6.710 0.357 0.093 -0.166 -0.079 0.294 -0.338 -0.221 -0.396 -0.116 0.001 0.007 -0.055
+ 6.437 0.115 0.104 -0.172 -0.162 0.196 -0.440 -0.175 -0.378 -0.110 -0.121 0.074 0.090
+ 5.003 0.121 0.039 -0.090 -0.023 0.106 -0.291 -0.087 -0.063 0.167 0.061 -0.127 -0.080
+ 4.737 0.084 -0.230 0.109 -0.080 -0.013 -0.267 -0.126 -0.206 -0.107 -0.020 0.100 -0.098
+ 4.753 0.331 -0.445 0.115 -0.068 -0.258 -0.319 -0.243 -0.191 -0.012 -0.089 -0.038 0.187
+ 4.373 0.103 -0.389 0.166 -0.168 -0.076 0.117 -0.201 -0.209 0.226 0.178 -0.110 0.006
+ 5.206 -0.251 -0.214 0.229 -0.334 0.084 -0.016 -0.318 -0.038 0.063 0.073 0.195 -0.108
+ 5.878 -0.526 0.050 0.235 -0.516 -0.074 -0.260 -0.117 0.102 0.106 -0.008 0.272 -0.086
+ 5.878 -0.634 0.239 0.275 -0.490 -0.163 -0.229 -0.037 0.125 0.041 0.011 0.084 -0.175
+ 5.699 -0.604 0.254 0.276 -0.297 -0.043 -0.034 -0.275 0.121 0.185 0.049 0.048 -0.053
+ 5.925 -0.691 0.015 0.169 -0.403 -0.258 0.008 -0.227 0.014 0.093 -0.012 0.080 0.065
+ 6.615 -0.606 -0.249 0.140 -0.356 -0.198 0.219 0.025 -0.148 -0.143 -0.017 0.065 -0.096
+ 6.728 -0.496 -0.279 0.068 -0.326 -0.199 0.210 0.105 -0.082 -0.274 -0.133 -0.014 -0.071
+ 6.729 -0.318 -0.442 0.228 -0.264 -0.080 0.038 0.149 0.084 -0.166 -0.229 0.091 0.077
+ 7.300 -0.209 -0.692 0.116 -0.300 -0.244 -0.192 0.130 0.157 -0.119 -0.142 0.042 -0.180
+ 7.429 -0.206 -0.989 -0.003 -0.179 -0.051 -0.139 0.135 0.261 -0.223 -0.067 0.159 -0.140
+ 7.494 -0.203 -1.236 -0.125 -0.126 0.063 -0.355 0.002 0.121 -0.110 -0.044 0.344 0.031
+ 7.938 -0.215 -1.232 0.021 -0.169 0.108 -0.456 -0.157 0.344 -0.087 -0.128 0.239 -0.058
+ 8.081 -0.199 -1.278 0.036 -0.223 0.298 -0.544 -0.241 0.299 -0.190 -0.152 0.270 0.037
+ 8.316 -0.162 -1.290 -0.121 -0.176 0.350 -0.463 -0.230 0.366 -0.189 -0.068 0.243 -0.003
+ 8.586 -0.246 -1.097 -0.361 -0.221 0.349 -0.474 -0.271 0.231 -0.236 -0.111 0.120 -0.037
+ 8.672 -0.392 -1.085 -0.492 -0.248 0.386 -0.405 -0.152 0.348 -0.135 -0.005 0.106 0.044
+ 8.581 -0.405 -0.926 -0.459 -0.279 0.526 -0.461 -0.162 0.241 -0.191 0.110 0.046 0.011
+ 8.332 -0.431 -0.827 -0.406 -0.385 0.578 -0.388 -0.181 0.167 -0.188 0.195 0.084 -0.153
+ 8.132 -0.361 -0.679 -0.358 -0.350 0.475 -0.312 -0.143 0.195 -0.149 0.102 0.069 -0.141
+ 7.852 -0.169 -0.411 -0.233 -0.337 0.284 -0.277 -0.185 0.147 -0.058 -0.082 0.093 -0.099
+ 7.836 -0.067 -0.688 -0.043 -0.310 -0.039 -0.124 0.075 0.020 0.014 -0.084 -0.019 -0.011
+ 7.829 0.131 -0.621 0.007 -0.161 -0.185 -0.275 -0.069 0.063 0.019 -0.141 -0.135 0.018
+ 7.531 0.384 -0.562 -0.024 -0.153 -0.158 -0.350 -0.040 -0.007 0.070 -0.156 -0.111 -0.031
+ 6.914 0.370 -0.505 -0.007 -0.137 -0.063 0.020 0.066 0.051 -0.068 -0.165 -0.120 -0.168
+ 7.955 1.153 -0.138 0.101 -0.144 -0.109 -0.294 -0.084 -0.051 -0.039 -0.042 -0.141 -0.122
+ 7.847 0.973 0.005 0.061 0.019 -0.168 -0.366 0.009 -0.039 0.065 -0.033 -0.113 -0.058
+ 6.984 0.115 -0.537 0.524 0.279 -0.087 -0.193 0.107 -0.094 -0.104 -0.272 -0.157 -0.122
+ 7.083 0.263 -0.577 0.584 -0.004 -0.339 -0.210 -0.092 -0.127 -0.176 -0.109 0.080 -0.121
+ 7.225 0.260 -0.480 0.617 -0.062 -0.500 -0.398 0.013 -0.104 -0.079 -0.016 0.234 -0.028
+ 7.480 0.471 -0.511 0.585 -0.062 -0.599 -0.450 0.126 -0.052 -0.225 0.072 0.347 0.098
+ 7.195 0.056 -0.755 0.573 0.122 -0.801 -0.750 0.151 -0.021 -0.256 0.161 0.254 0.162
+ 7.295 0.284 -0.627 0.372 0.075 -0.695 -0.753 0.203 -0.020 -0.109 -0.005 0.103 0.153
+ 7.209 0.404 -0.472 0.009 -0.085 -0.672 -0.866 0.138 0.051 -0.149 0.004 0.159 0.210
+ 6.900 0.421 -0.603 -0.050 -0.253 -0.742 -0.722 0.013 -0.179 -0.354 -0.054 0.048 0.036
+ 6.902 0.371 -0.552 0.078 -0.157 -0.606 -0.625 0.144 -0.219 -0.246 0.051 0.094 0.229
+ 7.420 -0.021 -0.268 0.447 0.039 -0.646 -0.604 -0.072 -0.214 -0.278 -0.022 0.032 -0.037
+ 7.907 -0.131 -0.185 0.548 0.106 -0.470 -0.568 -0.057 -0.191 -0.440 -0.062 0.043 -0.026
+ 7.959 0.102 -0.206 0.526 -0.057 -0.588 -0.520 -0.209 -0.096 -0.298 -0.165 0.052 0.091
+ 7.826 -0.034 -0.359 0.497 -0.207 -0.503 -0.345 -0.234 -0.107 -0.149 -0.026 0.040 -0.022
+ 7.523 -0.067 -0.483 0.494 -0.226 -0.618 -0.445 -0.301 -0.216 0.027 0.100 -0.004 0.065
+ 7.264 -0.150 -0.157 0.493 -0.491 -0.542 -0.217 -0.190 0.033 0.021 0.004 0.005 -0.010
+ 7.395 -0.154 -0.112 0.447 -0.430 -0.484 -0.235 -0.291 -0.010 -0.213 0.136 0.157 -0.248
+ 7.453 -0.370 -0.076 0.341 -0.570 -0.548 -0.210 -0.005 -0.053 -0.174 0.077 0.227 -0.324
+ 7.564 -0.240 0.046 0.177 -0.317 -0.692 -0.511 -0.103 -0.085 -0.063 -0.099 0.256 -0.222
+ 6.963 -0.219 0.120 0.158 -0.230 -0.562 -0.581 -0.091 -0.103 -0.168 -0.043 0.222 -0.187
+ 6.746 0.033 0.125 0.264 -0.156 -0.303 -0.458 -0.006 -0.086 -0.446 -0.147 0.176 -0.260
+ 6.140 0.157 0.212 0.077 -0.294 -0.223 -0.395 -0.126 -0.123 -0.270 -0.047 0.158 -0.188
+ 5.653 0.127 0.074 0.067 -0.165 -0.233 -0.340 -0.106 -0.090 -0.275 -0.190 0.125 -0.078
+ 5.550 0.134 0.154 0.253 -0.060 -0.393 -0.362 -0.310 -0.197 -0.338 -0.186 -0.009 -0.060
+ 5.453 -0.065 0.183 0.248 0.054 -0.277 -0.366 -0.247 -0.194 -0.286 -0.085 -0.003 -0.235
+ 5.629 0.140 0.154 0.121 0.021 -0.231 -0.366 -0.298 -0.228 -0.278 -0.214 0.007 -0.111
+ 6.009 0.065 0.224 -0.001 -0.304 -0.339 -0.523 -0.254 -0.003 -0.132 -0.139 -0.079 -0.210
+ 6.653 -0.139 0.096 0.237 -0.456 -0.282 -0.320 -0.216 0.050 0.013 0.050 -0.089 -0.176
+ 6.886 -0.220 0.139 0.293 -0.337 -0.255 -0.343 -0.371 -0.051 -0.100 0.068 0.023 -0.223
+ 6.816 -0.114 0.144 -0.183 -0.162 -0.038 -0.364 -0.417 -0.028 0.005 -0.051 -0.079 -0.164
+ 6.931 -0.215 0.185 -0.108 -0.276 -0.199 -0.583 -0.413 0.007 0.024 -0.147 -0.073 -0.066
+ 7.016 -0.239 0.003 0.039 -0.223 -0.029 -0.402 -0.482 -0.195 -0.065 -0.129 0.012 0.082
+ 7.108 0.021 0.024 -0.016 -0.300 -0.077 -0.357 -0.521 -0.230 -0.111 -0.062 0.008 -0.022
+ 6.070 0.047 0.017 0.065 -0.181 0.013 -0.271 -0.441 -0.215 -0.181 -0.188 -0.080 -0.089
+ 5.463 0.336 -0.018 0.280 -0.131 -0.237 -0.608 -0.246 0.002 -0.136 -0.164 0.045 -0.085
+ 6.069 0.188 -0.171 0.132 -0.202 -0.267 -0.688 -0.139 0.086 -0.106 -0.345 0.111 -0.129
+ 6.510 0.193 -0.466 -0.056 -0.315 -0.278 -0.762 -0.011 0.262 -0.198 -0.516 0.179 -0.265
+ 6.911 0.012 -0.556 -0.247 -0.374 -0.290 -0.716 0.069 0.311 -0.258 -0.527 0.216 -0.187
+ 6.970 -0.070 -0.798 -0.335 -0.158 -0.117 -0.634 0.089 0.050 -0.319 -0.654 0.059 -0.163
+ 7.206 -0.064 -0.847 -0.406 -0.208 -0.039 -0.630 0.048 0.131 -0.219 -0.647 0.128 -0.237
+ 7.294 -0.048 -0.853 -0.262 -0.177 0.088 -0.616 0.094 0.107 -0.218 -0.627 0.146 -0.137
+ 7.275 -0.059 -0.963 -0.255 -0.321 0.245 -0.502 -0.053 0.201 -0.296 -0.453 0.149 -0.051
+ 7.055 -0.070 -1.059 -0.210 -0.285 0.331 -0.418 -0.005 0.237 -0.427 -0.480 0.175 -0.170
+ 6.999 -0.273 -1.017 -0.404 -0.054 0.378 -0.329 0.135 0.151 -0.393 -0.586 0.332 -0.194
+ 7.285 -0.123 -0.973 -0.395 -0.080 0.272 -0.418 0.099 0.091 -0.230 -0.415 0.346 -0.163
+ 7.240 -0.128 -1.029 -0.438 -0.084 0.231 -0.437 -0.068 -0.052 -0.290 -0.502 0.323 -0.219
+ 7.271 -0.034 -1.132 -0.404 -0.157 0.197 -0.388 -0.106 -0.051 -0.212 -0.324 0.330 -0.227
+ 7.447 -0.055 -1.061 -0.475 -0.367 0.203 -0.496 -0.051 -0.025 -0.178 -0.314 0.229 -0.291
+ 7.320 -0.140 -1.170 -0.421 -0.526 -0.048 -0.532 -0.133 -0.068 -0.083 -0.326 0.313 -0.348
+ 7.087 -0.035 -1.066 -0.253 -0.367 -0.188 -0.526 0.096 -0.131 0.063 -0.223 0.437 -0.368
+ 7.097 -0.038 -1.074 -0.322 -0.227 -0.079 -0.662 0.066 -0.150 0.040 -0.218 0.391 -0.292
+ 7.138 0.021 -1.005 -0.461 -0.258 0.169 -0.438 0.017 0.091 0.013 -0.366 0.326 -0.208
+ 6.940 0.124 -0.805 -0.514 -0.249 0.148 -0.361 0.111 0.217 -0.137 -0.204 0.256 -0.325
+ 6.078 0.178 -0.503 -0.426 -0.092 0.066 -0.366 0.050 0.157 -0.031 -0.240 0.156 -0.155
+ 5.922 0.359 -0.526 -0.455 -0.203 -0.014 -0.288 -0.098 0.182 -0.095 -0.198 0.161 -0.066
+ 5.923 0.215 -0.523 -0.339 -0.301 -0.057 -0.286 0.083 0.205 0.102 -0.212 0.009 -0.273
+ 5.563 0.292 -0.478 -0.352 -0.222 0.020 -0.285 0.043 0.414 0.100 -0.258 -0.024 -0.197
+ 5.126 0.359 -0.356 -0.144 -0.179 -0.045 -0.362 0.031 0.180 0.150 0.043 0.144 -0.161
+ 6.261 -0.311 -0.506 -0.159 -0.122 0.308 0.092 -0.246 0.040 -0.050 0.040 -0.013 -0.089
+ 8.541 -0.639 -0.591 -0.201 -0.249 0.248 0.102 -0.524 -0.039 0.065 0.109 0.016 -0.040
+ 9.150 -0.583 -0.649 -0.031 -0.244 0.056 -0.055 -0.555 -0.032 -0.033 -0.204 -0.069 -0.034
+ 9.317 -0.604 -0.684 -0.100 -0.258 0.078 -0.030 -0.399 0.085 0.077 0.011 0.010 0.040
+ 9.212 -0.427 -0.349 -0.166 -0.190 0.130 -0.022 -0.515 -0.050 0.157 0.006 -0.026 -0.068
+ 9.610 -0.314 -0.360 -0.191 -0.322 0.063 -0.181 -0.477 -0.103 -0.009 -0.151 0.021 -0.103
+ 9.804 -0.438 -0.387 -0.056 -0.132 0.006 -0.337 -0.398 0.018 0.153 -0.115 -0.027 0.010
+ 9.805 -0.446 -0.473 -0.091 -0.138 0.045 -0.083 -0.319 0.201 0.026 -0.032 -0.047 0.001
+ 9.719 0.037 -0.335 -0.156 -0.217 -0.091 -0.185 -0.285 0.134 0.022 -0.064 -0.122 -0.034
+ 8.808 0.107 -0.110 -0.158 -0.075 0.047 -0.189 -0.362 -0.202 0.068 -0.140 -0.090 0.025
+ 8.240 -0.127 -0.328 -0.249 -0.192 0.078 -0.300 -0.219 -0.054 0.154 0.006 0.006 -0.074
+ 7.872 -0.088 -0.091 -0.118 -0.171 -0.116 -0.213 -0.039 0.036 0.138 0.022 -0.029 -0.051
+ 6.936 -0.109 -0.014 -0.082 -0.137 0.031 -0.202 0.093 0.045 0.044 -0.080 -0.222 -0.044
+ 5.648 -0.066 0.120 0.015 -0.185 -0.050 -0.153 -0.185 -0.044 0.038 -0.002 0.001 0.048
+ 5.062 -0.288 0.140 -0.023 -0.260 0.049 -0.449 -0.121 0.032 0.075 -0.182 0.024 0.153
+ 4.909 -0.448 -0.112 0.113 -0.154 -0.036 -0.174 0.070 -0.114 0.061 0.048 0.072 0.053
+ 5.017 -0.125 0.051 0.147 -0.084 0.037 -0.202 -0.063 -0.097 -0.002 -0.126 -0.098 -0.069
+ 5.161 -0.121 0.184 0.055 0.049 0.044 -0.374 -0.188 0.100 0.019 -0.107 -0.062 -0.008
+ 5.354 -0.350 -0.033 -0.071 -0.029 0.250 -0.166 0.031 0.143 0.052 -0.176 -0.088 -0.177
+ 5.213 -0.212 0.158 0.031 -0.071 -0.003 -0.166 0.164 -0.062 -0.035 -0.064 -0.054 -0.087
+ 5.342 -0.169 0.167 -0.040 -0.289 -0.271 -0.390 0.016 -0.068 0.044 -0.085 0.005 -0.023
+ 5.635 0.144 0.261 -0.085 -0.234 -0.018 -0.145 -0.034 -0.123 -0.162 -0.148 -0.083 -0.171
+ 6.795 0.457 0.344 -0.036 -0.116 0.098 0.136 0.135 -0.109 -0.068 -0.178 -0.020 -0.089
+ 6.002 0.273 0.511 -0.003 -0.214 0.004 -0.209 0.077 -0.061 0.035 -0.087 -0.004 -0.317
+ 5.739 0.017 0.203 -0.188 -0.542 -0.267 -0.178 0.149 -0.157 0.002 0.104 -0.069 -0.138
+ 5.932 -0.004 0.247 -0.044 -0.329 -0.151 -0.220 0.051 -0.085 0.075 -0.163 -0.079 0.013
+ 5.669 0.131 0.388 -0.121 -0.234 0.006 -0.120 0.009 -0.088 -0.036 -0.082 -0.046 -0.119
+ 5.939 0.179 0.397 0.109 -0.210 -0.048 -0.189 0.053 -0.053 -0.080 -0.132 -0.091 -0.252
+ 6.112 0.446 0.651 0.252 -0.137 -0.143 -0.375 -0.145 0.090 0.167 -0.146 -0.225 -0.095
+ 5.838 0.465 0.360 0.062 -0.028 -0.032 -0.264 -0.351 -0.302 0.123 -0.124 -0.199 -0.019
+ 7.793 0.312 -0.349 -0.374 0.042 -0.252 -0.217 -0.062 -0.116 -0.113 -0.175 -0.033 -0.101
+ 8.450 0.401 -0.341 -0.328 0.121 -0.223 -0.195 -0.071 -0.070 -0.191 -0.167 -0.031 -0.138
+ 5.569 0.198 0.549 0.158 -0.081 -0.111 -0.199 -0.129 -0.168 0.031 -0.153 -0.217 -0.135
+ 5.452 0.268 0.423 0.019 -0.035 0.056 -0.111 -0.111 -0.208 -0.080 -0.162 -0.031 -0.245
+ 5.538 0.262 0.445 -0.123 -0.031 0.108 0.049 0.044 -0.082 0.002 -0.180 -0.082 -0.237
+ 5.605 0.149 0.278 -0.052 -0.203 -0.188 -0.079 -0.021 -0.109 0.084 -0.062 -0.085 -0.130
+ 6.784 -0.163 0.049 -0.193 -0.022 -0.020 -0.082 0.002 -0.237 -0.090 -0.180 -0.072 -0.067
+ 4.965 0.166 0.089 0.052 0.001 -0.126 -0.141 -0.174 -0.139 -0.052 -0.105 0.048 -0.065
+ 4.640 0.087 0.098 0.145 0.058 -0.002 -0.038 0.089 -0.040 -0.041 -0.078 -0.009 -0.099
+ 4.756 0.338 0.177 0.040 -0.056 -0.098 -0.161 -0.019 -0.091 -0.050 -0.120 -0.093 -0.049
+ 4.688 0.213 0.043 0.069 0.009 -0.038 -0.105 0.052 -0.177 -0.058 -0.135 -0.099 -0.037
+ 5.054 0.200 0.129 -0.100 -0.275 -0.094 -0.155 -0.200 -0.248 -0.046 -0.063 0.029 -0.055
+ 4.617 0.186 0.076 0.020 -0.144 -0.164 -0.293 -0.094 -0.129 -0.032 -0.105 -0.018 -0.195
+ 4.774 0.157 0.049 -0.043 -0.181 -0.032 0.066 -0.123 -0.076 -0.022 -0.023 0.136 0.005
+ 4.773 0.124 0.068 0.061 -0.223 -0.123 -0.028 -0.052 -0.183 -0.121 -0.242 0.053 -0.035
+ 5.128 0.164 0.100 -0.053 -0.337 -0.181 -0.096 -0.063 -0.013 0.007 -0.025 -0.091 0.025
+ 6.683 -0.573 0.036 -0.085 -0.182 -0.176 -0.310 -0.196 -0.164 -0.038 -0.060 -0.036 -0.109
+ 5.895 -0.064 0.252 -0.141 -0.282 -0.166 -0.161 -0.168 -0.173 -0.154 -0.150 -0.077 -0.072
+ 5.085 0.381 0.090 0.161 -0.316 -0.241 -0.156 -0.166 -0.124 -0.233 -0.009 0.003 0.054
+ 4.914 0.383 0.228 -0.018 -0.111 -0.149 -0.078 -0.136 -0.229 -0.175 -0.185 -0.121 -0.077
+ 5.095 0.096 -0.010 0.045 -0.174 0.010 0.022 -0.121 -0.020 -0.085 -0.170 -0.067 -0.049
+ 4.927 0.113 0.150 -0.013 -0.140 -0.096 -0.067 -0.223 -0.243 0.071 -0.074 -0.092 -0.208
+ 4.164 0.156 -0.028 0.079 -0.106 -0.221 -0.056 -0.268 -0.127 -0.123 -0.125 -0.039 -0.190
+ 4.167 -0.010 -0.124 0.057 -0.132 -0.155 -0.056 0.018 -0.106 0.030 0.003 -0.077 -0.202
+ 4.138 -0.034 -0.136 0.105 -0.057 -0.144 -0.084 -0.045 -0.187 -0.034 -0.073 0.068 0.062
+ 4.356 0.185 -0.177 0.135 -0.100 -0.199 -0.072 0.120 -0.175 -0.032 -0.163 -0.141 -0.104
+ 4.042 0.201 0.007 0.282 -0.046 -0.063 -0.046 -0.031 -0.263 -0.131 -0.048 -0.080 -0.126
+ 3.962 0.130 -0.168 0.221 0.039 -0.112 0.044 0.104 -0.019 -0.160 -0.147 -0.132 -0.031
+ 4.028 0.037 -0.219 0.176 -0.007 -0.098 0.271 0.145 -0.029 -0.086 -0.034 -0.074 -0.194
+ 4.180 0.326 -0.181 0.007 -0.209 -0.047 -0.045 -0.018 -0.116 -0.008 -0.004 0.021 -0.105
+ 4.057 0.219 -0.101 0.086 -0.108 -0.016 0.017 -0.103 -0.031 -0.098 -0.122 -0.034 -0.090
+ 4.492 -0.087 0.161 -0.179 0.020 -0.133 -0.063 0.049 -0.155 -0.126 -0.181 -0.047 -0.203
+ 4.609 0.097 0.150 -0.166 0.004 -0.022 -0.103 0.060 -0.163 0.009 0.019 -0.031 -0.200
+ 4.542 0.282 -0.121 0.068 -0.218 -0.056 -0.081 -0.016 -0.002 0.035 -0.012 0.007 -0.087
+ 4.490 0.181 -0.088 0.004 -0.173 -0.000 0.074 0.013 -0.134 -0.158 -0.097 -0.174 -0.191
+ 4.354 0.326 0.029 0.029 -0.279 -0.080 0.001 0.083 -0.032 -0.024 0.055 -0.107 -0.229
+ 4.271 0.100 -0.081 0.072 -0.160 -0.353 -0.234 -0.065 0.059 0.030 -0.101 -0.095 -0.112
+ 4.705 0.171 0.120 0.127 -0.172 -0.233 -0.046 0.027 0.080 -0.021 -0.051 -0.120 -0.359
+ 5.118 0.438 -0.005 -0.006 -0.229 -0.122 0.002 -0.007 -0.177 -0.192 -0.030 -0.149 -0.129
+ 5.052 0.194 0.004 -0.068 -0.436 -0.337 -0.009 -0.041 -0.104 -0.077 -0.105 0.035 -0.103
+ 4.977 0.199 0.068 0.051 -0.428 -0.188 0.114 -0.065 -0.201 -0.046 -0.165 -0.159 -0.177
+ 4.875 0.479 -0.276 0.060 -0.248 -0.122 -0.067 -0.107 -0.181 -0.023 -0.005 -0.012 -0.079
+ 4.455 0.449 0.015 0.131 -0.239 -0.087 -0.102 -0.141 -0.048 -0.042 -0.301 -0.144 -0.046
+ 4.791 0.534 -0.200 -0.009 -0.198 -0.119 -0.009 -0.112 -0.141 0.057 -0.067 -0.049 -0.035
+ 4.672 0.530 -0.033 -0.025 -0.210 -0.044 0.099 0.038 -0.076 -0.162 -0.285 -0.004 -0.025
+ 4.596 0.454 -0.096 -0.008 -0.348 -0.150 -0.073 -0.034 -0.160 0.012 -0.220 -0.057 -0.055
+ 5.022 0.638 -0.171 -0.121 -0.382 -0.135 -0.032 -0.087 -0.018 -0.080 -0.185 -0.178 -0.019
+ 5.068 0.630 -0.097 0.175 -0.236 -0.112 0.123 -0.213 -0.261 0.031 -0.184 -0.068 -0.160
+ 4.793 0.390 0.114 0.236 -0.284 -0.239 0.002 -0.046 -0.238 0.021 -0.206 -0.012 -0.023
+ 4.963 0.623 0.039 0.154 -0.417 -0.112 -0.048 -0.211 -0.099 -0.062 -0.358 0.011 0.055
+ 4.750 0.380 -0.184 0.328 -0.309 -0.324 0.001 -0.019 -0.119 -0.246 -0.142 0.079 0.179
+ 5.222 0.571 -0.072 0.200 -0.030 -0.187 -0.151 -0.205 -0.218 -0.027 -0.059 0.104 -0.138
+ 5.510 0.489 0.128 0.222 -0.094 -0.108 -0.248 -0.432 -0.165 -0.025 0.028 0.107 -0.353
+ 5.843 0.437 -0.014 0.107 -0.223 -0.240 -0.193 -0.312 -0.281 0.079 -0.009 0.143 -0.228
+ 5.700 0.474 0.025 0.110 -0.316 -0.215 -0.183 -0.247 -0.324 0.172 -0.049 0.075 -0.231
+ 5.635 0.651 0.154 0.138 -0.406 -0.147 -0.126 -0.373 -0.356 0.212 -0.089 -0.070 -0.245
+ 5.706 0.570 0.176 0.136 -0.429 -0.099 -0.197 -0.322 -0.389 0.236 -0.119 -0.005 -0.225
+ 5.751 0.600 0.338 0.126 -0.341 -0.145 -0.170 -0.357 -0.493 0.199 -0.030 -0.088 -0.269
+ 6.038 0.584 -0.038 0.066 -0.269 -0.162 -0.125 -0.366 -0.408 0.142 -0.203 0.018 -0.334
+ 6.041 0.562 -0.019 0.063 -0.041 0.005 -0.109 -0.248 -0.488 -0.158 -0.137 0.071 -0.249
+ 5.667 0.545 0.196 0.201 -0.138 -0.053 -0.232 -0.292 -0.530 -0.022 0.048 -0.013 -0.081
+ 6.137 0.788 0.272 0.004 -0.094 -0.064 0.106 0.065 -0.153 -0.129 -0.225 -0.261 -0.290
+ 6.086 0.789 0.573 0.275 -0.108 -0.009 -0.031 -0.094 -0.175 -0.131 -0.309 -0.255 -0.286
+ 5.666 0.541 0.209 0.064 -0.273 -0.135 -0.106 -0.211 -0.160 -0.040 -0.089 -0.042 0.024
+ 5.449 0.221 0.100 0.273 -0.042 -0.138 -0.246 -0.220 -0.320 -0.085 -0.149 -0.009 -0.000
+ 5.837 -0.024 -0.041 0.278 -0.070 -0.293 -0.154 -0.396 -0.320 -0.086 -0.127 -0.020 0.065
+ 7.107 0.105 0.053 0.267 -0.345 -0.275 -0.080 -0.302 -0.211 0.186 -0.104 -0.043 -0.074
+ 8.856 0.411 0.279 0.130 -0.478 -0.087 -0.354 -0.303 -0.095 0.227 -0.063 -0.062 -0.191
+ 7.508 0.161 0.234 0.522 -0.278 -0.230 0.110 -0.325 -0.203 0.128 -0.240 -0.049 -0.191
+ 8.805 0.528 0.124 0.182 -0.259 -0.079 0.055 -0.203 -0.273 0.040 -0.300 -0.051 -0.209
+ 9.235 0.664 0.201 0.170 -0.315 0.096 0.168 -0.305 -0.262 -0.046 -0.296 -0.017 -0.201
+ 6.993 0.052 0.346 0.311 -0.332 -0.167 0.376 -0.215 -0.208 0.150 -0.373 0.067 -0.181
+ 6.780 0.027 0.232 0.215 -0.589 -0.315 0.152 -0.509 -0.208 0.132 -0.268 0.108 -0.009
+ 6.447 -0.074 0.241 0.249 -0.472 -0.397 0.089 -0.630 -0.155 0.112 -0.284 0.262 -0.114
+ 6.583 -0.009 0.399 0.509 -0.532 -0.305 -0.010 -0.627 -0.293 0.061 -0.343 0.041 -0.128
+ 7.054 -0.260 0.300 0.533 -0.466 -0.339 -0.153 -0.752 -0.292 0.135 -0.386 -0.065 -0.179
+ 6.831 -0.191 0.340 0.558 -0.642 -0.450 0.053 -0.791 -0.417 -0.006 -0.433 -0.087 -0.246
+ 7.026 -0.275 0.396 0.498 -0.729 -0.560 0.208 -0.533 -0.290 0.121 -0.437 -0.073 -0.310
+ 6.899 -0.431 0.335 0.442 -0.872 -0.805 0.125 -0.542 -0.209 0.277 -0.230 0.020 -0.227
+ 6.822 -0.374 0.144 0.264 -0.830 -0.661 0.231 -0.527 -0.066 0.251 -0.227 0.044 -0.110
+ 6.765 -0.315 0.058 0.328 -0.831 -0.625 0.150 -0.614 -0.151 0.203 -0.202 -0.007 -0.063
+ 6.570 -0.160 0.250 0.346 -0.575 -0.767 0.024 -0.444 -0.090 0.115 -0.433 0.022 -0.083
+ 5.933 -0.245 0.329 0.301 -0.608 -0.423 0.243 -0.534 -0.218 0.097 -0.380 0.006 -0.119
+ 6.018 0.023 0.267 0.399 -0.444 -0.423 0.061 -0.230 -0.059 0.290 -0.319 -0.056 -0.194
+ 6.048 0.028 0.248 0.318 -0.188 -0.268 0.091 -0.186 -0.063 -0.034 -0.098 0.022 -0.145
+ 5.943 -0.015 0.260 0.255 -0.027 -0.253 -0.003 -0.141 -0.116 0.041 -0.119 -0.081 -0.123
+ 5.452 0.053 0.160 0.170 -0.174 -0.259 -0.154 -0.125 -0.185 -0.085 0.042 -0.035 -0.115
+ 5.680 0.297 0.109 0.336 -0.248 -0.188 0.003 -0.214 -0.116 -0.009 -0.234 -0.030 -0.052
+ 6.000 0.317 0.342 0.286 -0.059 -0.003 -0.175 -0.136 -0.210 0.073 -0.183 -0.036 -0.099
+ 5.914 0.008 0.145 0.032 -0.212 0.040 0.055 -0.231 -0.063 0.083 -0.129 -0.014 -0.020
+ 6.254 0.038 0.180 0.256 -0.351 -0.225 0.116 -0.327 -0.096 0.066 -0.274 -0.061 -0.199
+ 6.258 -0.180 0.274 0.468 -0.346 -0.326 0.081 -0.446 -0.129 0.064 -0.230 -0.030 -0.184
+ 6.383 -0.220 0.398 0.432 -0.572 -0.377 -0.009 -0.530 -0.248 0.191 -0.133 0.031 -0.185
+ 6.871 -0.202 0.311 0.525 -0.625 -0.544 -0.028 -0.357 -0.216 0.117 0.071 0.008 -0.279
+ 6.909 -0.284 -0.046 0.313 -0.424 -0.523 0.051 -0.174 -0.171 -0.091 -0.137 0.105 -0.247
+ 6.564 -0.456 -0.162 0.242 -0.259 -0.393 0.200 0.041 -0.112 0.037 -0.064 0.128 -0.454
+ 6.605 -0.317 -0.056 0.248 -0.147 -0.397 0.003 -0.049 -0.033 -0.027 -0.059 0.091 -0.482
+ 6.781 -0.187 -0.086 0.333 -0.099 -0.496 -0.065 -0.184 -0.099 -0.090 -0.068 0.163 -0.370
+ 6.719 -0.184 -0.217 0.109 -0.151 -0.501 -0.030 0.009 0.014 -0.074 -0.131 0.341 -0.343
+ 6.594 -0.076 -0.526 -0.177 -0.216 -0.549 -0.094 0.177 0.062 -0.163 -0.288 0.320 -0.394
+ 9.164 1.223 -0.147 -0.073 -0.117 -0.260 -0.210 -0.188 -0.139 -0.211 -0.261 0.089 -0.230
+ 9.615 1.225 -0.069 0.079 -0.140 -0.268 -0.174 -0.164 -0.168 -0.148 -0.186 0.082 -0.063
+ 7.476 0.783 -0.044 0.188 -0.097 -0.361 -0.041 0.148 0.040 -0.311 -0.179 0.222 -0.317
+ 6.610 0.085 -0.111 -0.028 -0.183 -0.324 -0.075 0.234 0.328 -0.122 -0.290 0.316 -0.229
+ 6.456 -0.049 -0.297 0.078 -0.180 -0.330 -0.169 0.347 0.169 -0.313 -0.271 0.232 -0.380
+ 6.450 0.090 -0.416 -0.004 -0.278 -0.365 -0.185 0.197 -0.018 -0.208 -0.247 0.255 -0.413
+ 6.580 0.350 -0.338 0.042 -0.146 -0.330 -0.279 0.187 0.237 -0.326 -0.204 0.170 -0.330
+ 8.643 0.351 0.017 -0.341 -0.310 -0.359 -0.131 -0.143 -0.226 0.006 -0.240 -0.002 -0.169
+ 8.804 0.071 0.167 -0.047 -0.412 -0.353 -0.041 -0.076 -0.139 0.172 -0.211 0.008 -0.063
+ 9.703 -0.238 0.376 0.053 -0.283 -0.255 -0.186 -0.020 -0.224 0.162 -0.395 -0.099 -0.066
+ 7.015 0.205 0.382 0.319 -0.074 -0.334 -0.209 0.085 -0.003 0.120 -0.172 0.042 -0.104
+ 6.557 0.372 0.278 0.099 -0.219 -0.324 -0.119 0.131 -0.025 -0.112 -0.090 -0.137 -0.320
+ 6.041 0.253 0.135 0.106 -0.022 -0.244 -0.132 0.013 -0.170 -0.195 -0.206 0.005 -0.188
+ 6.274 0.443 0.080 0.012 -0.208 -0.279 0.034 0.023 -0.069 -0.287 -0.054 -0.094 -0.257
+ 6.291 0.462 0.361 0.206 -0.163 -0.159 -0.050 -0.086 -0.270 -0.192 -0.126 0.013 -0.197
+ 6.061 0.350 0.281 0.114 -0.168 -0.031 -0.127 -0.138 -0.411 -0.189 -0.126 -0.094 -0.351
+ 5.758 0.312 0.120 0.042 -0.179 -0.397 -0.099 -0.166 -0.296 -0.169 -0.121 -0.050 -0.174
+ 5.309 0.145 0.079 0.213 -0.221 -0.349 -0.175 -0.096 -0.154 0.003 -0.133 -0.128 -0.087
+ 5.274 0.229 0.034 0.144 -0.181 -0.387 -0.056 0.035 -0.205 -0.063 -0.172 -0.218 -0.221
+ 5.881 0.427 0.136 -0.103 -0.246 -0.198 -0.136 -0.129 -0.345 -0.100 -0.049 0.067 -0.098
+ 5.556 0.541 -0.122 -0.132 -0.173 -0.120 0.093 -0.002 -0.353 -0.244 -0.192 0.082 -0.197
+ 5.915 0.586 -0.119 -0.092 -0.247 -0.219 0.055 -0.027 -0.182 0.160 -0.052 -0.106 -0.135
+ 6.341 0.885 0.221 -0.033 -0.077 -0.042 0.200 -0.054 -0.140 0.039 0.004 -0.193 -0.229
+ 6.169 0.543 0.070 -0.107 -0.081 -0.074 0.039 -0.050 -0.151 0.005 -0.063 0.047 0.023
+ 5.758 0.281 0.065 -0.127 -0.205 -0.185 -0.052 0.038 -0.137 -0.111 -0.094 -0.061 -0.218
+ 5.483 0.232 -0.045 -0.050 -0.257 -0.174 0.053 0.082 -0.129 -0.219 -0.136 -0.151 -0.125
+ 5.424 0.259 -0.022 -0.017 -0.076 -0.130 -0.042 0.073 -0.035 -0.045 -0.242 -0.253 -0.093
+ 5.656 0.178 -0.103 -0.110 -0.081 -0.089 -0.103 -0.015 -0.232 -0.154 -0.232 -0.084 -0.064
+ 5.751 0.095 -0.012 -0.070 -0.169 -0.165 -0.138 -0.023 -0.039 -0.037 -0.138 -0.127 -0.086
+ 5.988 -0.113 -0.150 -0.451 -0.062 -0.215 -0.081 -0.058 -0.047 -0.065 -0.110 0.034 -0.190
+ 5.610 -0.041 0.156 -0.139 -0.151 -0.189 -0.043 -0.018 -0.097 -0.080 -0.134 -0.004 -0.060
+ 5.338 -0.038 0.108 -0.205 -0.207 -0.144 -0.038 0.070 0.061 -0.028 -0.095 -0.066 -0.039
+ 5.550 0.138 -0.016 -0.179 -0.102 0.045 0.077 -0.041 -0.214 -0.124 -0.195 -0.141 -0.156
+ 5.281 -0.051 0.062 -0.083 -0.127 -0.045 0.010 -0.018 -0.047 0.221 0.006 -0.084 -0.106
+ 4.710 0.054 0.154 0.176 -0.135 -0.099 -0.066 0.022 -0.152 -0.011 -0.099 -0.122 -0.172
+ 5.259 0.156 0.187 0.037 -0.241 -0.078 -0.211 -0.066 -0.044 0.015 -0.137 -0.030 0.037
+ 5.239 0.199 -0.006 -0.073 -0.249 -0.141 -0.058 -0.055 -0.196 -0.021 0.068 -0.025 -0.039
+ 5.092 0.092 -0.238 -0.249 -0.243 -0.083 -0.172 -0.124 -0.224 -0.042 -0.130 -0.151 -0.168
+ 4.837 0.086 -0.259 -0.032 -0.217 -0.176 -0.195 -0.096 -0.137 -0.068 -0.176 -0.217 -0.148
+ 4.971 0.150 -0.270 0.113 -0.084 -0.014 0.022 -0.073 -0.182 -0.044 -0.117 -0.157 -0.099
+ 4.771 0.169 -0.190 0.217 -0.134 -0.060 -0.234 -0.084 -0.219 -0.240 -0.126 -0.104 -0.049
+ 4.185 0.159 -0.160 0.194 -0.073 -0.117 -0.010 0.079 0.071 0.160 0.070 -0.093 0.088
+ 4.256 0.287 -0.215 0.150 -0.131 -0.091 0.101 0.246 0.056 -0.103 -0.076 -0.150 -0.002
+ 4.442 0.158 -0.304 0.189 0.023 -0.103 0.174 0.189 -0.095 -0.129 -0.239 -0.246 -0.126
+ 4.465 0.229 -0.296 0.080 -0.054 -0.102 0.168 0.026 -0.109 0.018 -0.096 -0.154 -0.130
+ 4.267 0.248 -0.190 0.071 -0.216 -0.095 0.040 -0.004 -0.274 -0.176 -0.062 0.008 -0.144
+ 4.446 0.443 -0.128 0.160 -0.058 -0.114 0.099 -0.026 -0.310 -0.231 -0.277 -0.038 -0.076
+ 4.349 0.286 -0.080 0.161 -0.022 -0.038 -0.025 -0.054 -0.208 -0.093 -0.078 -0.081 -0.229
+ 4.079 -0.055 -0.105 0.279 0.067 -0.145 0.090 -0.147 -0.345 -0.160 -0.044 -0.050 -0.142
+ 4.418 -0.101 -0.015 0.141 -0.142 -0.159 0.012 0.065 -0.058 0.045 -0.092 -0.078 -0.017
+ 4.803 0.165 -0.005 0.030 -0.152 -0.142 -0.093 0.086 -0.011 0.128 -0.205 -0.078 -0.179
+ 4.888 0.383 0.010 0.163 -0.281 -0.077 -0.013 0.012 -0.128 -0.044 0.045 -0.011 -0.173
+ 5.880 0.246 0.315 0.317 -0.350 -0.154 0.018 -0.044 -0.207 0.000 -0.112 -0.019 -0.129
+ 5.792 0.083 0.108 0.479 -0.340 -0.208 -0.016 -0.181 -0.108 0.072 -0.034 0.003 -0.107
+ 6.071 -0.081 0.077 0.623 -0.377 -0.120 -0.039 -0.208 -0.175 0.034 -0.010 0.071 -0.054
+ 6.345 0.077 0.107 0.381 -0.403 -0.285 -0.165 -0.165 -0.256 0.042 -0.020 -0.073 -0.228
+ 6.834 0.227 0.284 0.465 -0.363 -0.277 0.114 -0.006 0.038 0.048 -0.093 -0.123 -0.244
+ 7.263 0.837 0.493 0.242 -0.372 -0.110 0.086 -0.278 -0.208 -0.245 -0.102 0.031 -0.083
+ 7.754 0.614 0.294 0.224 -0.362 -0.045 -0.090 -0.181 -0.231 -0.070 -0.233 0.050 -0.121
+ 8.058 0.642 0.058 0.155 -0.100 -0.169 -0.183 -0.300 -0.208 -0.068 -0.367 0.024 -0.007
+ 8.455 0.834 0.207 0.203 -0.001 -0.065 -0.207 -0.332 -0.376 -0.028 -0.387 -0.084 -0.035
+ 7.214 0.081 0.180 0.171 -0.082 -0.310 -0.360 -0.159 -0.098 -0.175 -0.238 -0.025 -0.048
+ 8.148 -0.418 0.028 0.034 -0.085 -0.320 -0.064 -0.164 -0.184 0.084 -0.197 -0.035 -0.081
+ 7.378 -0.235 0.222 0.088 -0.106 -0.275 -0.173 -0.139 -0.090 0.057 -0.171 -0.045 -0.029
+ 6.849 -0.348 0.382 0.256 0.093 -0.024 -0.342 -0.151 -0.279 -0.224 -0.275 0.076 0.066
+ 7.613 -0.379 0.421 0.114 0.000 -0.103 -0.156 -0.019 -0.192 -0.007 -0.050 -0.075 0.039
+ 7.199 -0.114 0.518 0.017 -0.059 -0.055 -0.183 0.070 -0.115 -0.051 -0.169 -0.191 -0.159
+ 6.883 -0.204 0.377 0.067 -0.165 -0.135 -0.280 0.010 -0.310 -0.135 -0.161 -0.089 -0.218
+ 6.231 -0.225 0.349 0.140 -0.060 -0.049 -0.046 -0.056 -0.310 -0.161 -0.251 -0.033 -0.116
+ 5.599 -0.279 0.246 0.040 -0.015 -0.102 -0.264 -0.050 -0.098 -0.122 -0.097 -0.018 -0.080
+ 5.905 -0.048 0.294 0.025 0.244 0.320 -0.027 -0.029 -0.058 -0.229 -0.177 -0.035 -0.114
+ 5.503 -0.143 0.230 0.053 0.109 0.098 -0.078 0.003 -0.125 -0.074 -0.209 -0.114 -0.173
+ 5.241 -0.349 0.079 0.098 0.047 0.036 -0.025 -0.013 -0.033 -0.072 -0.269 -0.315 -0.253
+ 6.270 0.350 0.098 -0.102 -0.077 -0.116 -0.354 -0.199 -0.165 -0.134 -0.167 -0.148 -0.255
+ 6.391 0.946 0.500 -0.044 -0.081 -0.186 -0.348 -0.286 -0.123 -0.066 -0.092 -0.013 -0.149
+ 5.058 -0.009 0.517 -0.042 0.098 -0.028 -0.181 -0.197 -0.090 -0.005 0.038 0.038 0.016
+ 4.809 -0.161 0.063 -0.195 -0.187 -0.131 -0.152 -0.189 -0.115 -0.021 0.125 0.114 -0.083
+ 4.805 -0.082 0.110 -0.079 -0.217 -0.127 -0.097 -0.151 0.041 -0.056 0.044 0.027 -0.037
+ 4.214 -0.170 -0.009 -0.028 0.034 -0.127 -0.145 -0.093 -0.074 0.097 0.164 0.068 -0.024
+ 4.449 -0.145 0.112 0.013 -0.051 -0.179 0.013 -0.059 -0.049 -0.014 -0.034 -0.020 0.001
+ 4.500 -0.248 0.056 0.127 0.047 -0.121 -0.087 -0.154 -0.150 -0.095 -0.041 -0.067 -0.009
+ 4.236 0.318 0.063 0.163 -0.002 -0.135 -0.078 -0.108 -0.232 -0.139 -0.118 0.108 0.005
+ 4.190 0.097 -0.007 0.096 -0.101 0.028 -0.062 -0.132 -0.134 -0.144 0.061 0.015 -0.216
+ 4.131 -0.077 -0.144 0.031 -0.253 0.166 0.112 0.096 -0.014 -0.055 0.016 0.110 0.020
+ 4.507 -0.071 -0.256 0.068 -0.155 -0.134 -0.140 -0.103 -0.075 0.019 0.050 0.089 0.002
+ 4.546 0.178 0.039 0.124 -0.063 0.050 -0.096 -0.190 -0.067 0.017 -0.065 0.035 -0.081
+ 3.803 0.126 -0.057 -0.020 -0.146 -0.114 0.040 -0.032 -0.043 -0.206 -0.002 0.107 -0.032
+ 3.961 0.103 0.001 -0.080 -0.102 -0.108 0.046 0.062 -0.158 -0.151 0.073 0.127 -0.015
+ 3.957 -0.260 -0.019 -0.077 -0.057 -0.097 -0.083 0.169 0.057 -0.108 -0.001 0.119 0.009
+ 4.337 0.001 -0.006 0.005 0.012 -0.041 0.094 -0.045 -0.244 0.007 -0.217 -0.225 0.008
+ 4.414 0.021 0.099 -0.105 -0.160 0.069 0.106 -0.160 -0.337 -0.082 -0.067 -0.043 -0.016
+ 4.728 -0.136 0.322 -0.076 -0.027 -0.032 -0.125 0.049 -0.039 -0.095 -0.153 -0.083 -0.088
+ 4.561 -0.292 0.322 0.021 0.099 -0.097 -0.252 -0.024 -0.058 -0.177 -0.147 -0.029 -0.065
+ 4.488 -0.442 0.177 -0.074 0.163 0.093 -0.187 -0.033 -0.163 -0.044 -0.120 -0.027 0.104
+ 4.767 -0.377 0.251 0.113 0.078 0.082 -0.137 -0.074 -0.269 -0.051 -0.302 -0.148 0.165
+ 4.819 -0.367 0.132 0.060 -0.074 0.013 -0.145 -0.010 -0.179 0.174 0.050 0.114 0.038
+ 5.336 -0.483 0.247 0.028 -0.043 -0.023 0.035 -0.038 0.018 0.096 -0.068 -0.034 -0.103
+ 5.478 -0.602 0.098 -0.073 -0.011 -0.079 -0.097 -0.188 -0.181 -0.089 0.009 -0.032 -0.050
+ 5.138 -0.158 0.140 0.118 -0.146 0.000 -0.073 -0.075 -0.134 -0.072 -0.083 -0.264 -0.171
+ 4.639 -0.370 0.066 0.098 -0.088 0.022 -0.014 -0.064 -0.092 -0.081 -0.203 -0.238 -0.202
+ 4.862 -0.191 0.042 0.065 -0.399 -0.275 -0.232 0.016 -0.016 0.049 -0.033 0.100 -0.149
+ 4.343 0.355 0.247 0.097 -0.223 -0.286 -0.132 0.127 -0.079 -0.132 -0.267 -0.063 0.073
+ 4.457 -0.100 0.257 0.138 -0.131 0.071 -0.070 0.079 -0.109 -0.147 -0.127 -0.107 0.052
+ 4.999 0.308 0.333 0.062 -0.344 0.088 -0.180 -0.059 -0.040 -0.059 0.007 0.063 -0.077
+ 5.270 0.492 0.384 -0.073 -0.284 0.042 0.007 0.018 0.032 -0.077 -0.011 0.042 -0.069
+ 5.596 0.491 0.327 0.060 -0.242 -0.089 0.005 0.054 -0.067 -0.020 -0.165 0.068 -0.013
+ 6.103 0.388 0.256 -0.086 -0.357 0.059 0.009 0.009 -0.093 -0.066 -0.013 -0.066 -0.200
+ 6.751 0.328 0.299 0.133 -0.299 -0.054 -0.022 -0.245 -0.117 -0.063 -0.109 -0.042 -0.137
+ 7.244 0.201 0.077 0.077 -0.214 -0.109 -0.093 -0.250 -0.101 -0.067 -0.073 -0.084 -0.095
+ 6.926 0.107 0.225 -0.098 -0.225 0.019 -0.089 -0.024 -0.058 -0.103 -0.159 -0.014 -0.094
+ 6.716 0.192 0.116 -0.135 -0.287 0.102 -0.102 -0.020 0.061 -0.065 -0.245 0.144 -0.014
+ 6.765 0.321 -0.012 0.011 -0.282 0.047 -0.137 -0.012 -0.094 -0.057 -0.176 0.160 -0.086
+ 6.982 0.277 0.170 0.065 -0.207 -0.009 0.020 -0.191 -0.251 -0.036 -0.237 -0.019 -0.175
+ 6.419 -0.003 0.252 0.320 -0.187 -0.193 -0.329 -0.131 -0.038 0.074 -0.058 0.068 -0.145
+ 7.266 -0.609 0.160 -0.051 -0.353 -0.390 -0.323 -0.123 0.035 0.199 0.024 0.304 0.235
+ 7.863 -0.338 0.295 -0.016 -0.246 -0.097 -0.175 0.005 -0.050 0.081 0.023 -0.065 0.007
+ 7.897 -0.232 0.297 0.124 -0.252 -0.191 -0.235 -0.173 -0.205 -0.099 -0.041 -0.035 -0.069
+ 8.013 -0.494 0.161 0.157 -0.231 -0.090 -0.179 -0.366 -0.161 -0.056 0.049 0.058 -0.119
+ 7.931 -0.530 0.031 0.126 -0.327 -0.069 -0.139 -0.207 -0.048 0.056 0.059 0.113 0.006
+ 7.623 -0.497 0.118 -0.053 -0.464 -0.133 -0.136 -0.308 -0.188 0.071 -0.000 -0.095 0.041
+ 7.939 -0.496 0.015 0.115 -0.362 -0.105 -0.166 -0.356 -0.157 -0.006 -0.127 0.007 -0.108
+ 8.006 -0.515 0.054 0.103 -0.516 -0.350 -0.153 -0.306 -0.106 -0.151 -0.110 0.077 -0.060
+ 7.417 -0.643 -0.109 0.101 -0.571 -0.293 -0.078 -0.331 -0.095 -0.022 0.025 0.075 -0.059
+ 7.254 -0.552 0.055 0.051 -0.266 -0.127 0.117 -0.374 -0.092 0.025 0.019 -0.139 -0.086
+ 7.148 -0.634 -0.105 0.137 -0.270 -0.270 0.090 -0.253 -0.115 -0.071 0.011 0.020 -0.103
+ 7.323 -0.924 -0.192 0.165 -0.407 -0.288 0.079 -0.377 -0.150 -0.138 -0.036 0.018 -0.019
+ 6.852 -1.121 -0.353 0.037 -0.153 -0.253 -0.223 -0.417 -0.125 -0.054 0.074 0.184 -0.087
+ 6.781 -0.753 -0.214 0.125 -0.188 -0.143 -0.283 -0.349 -0.180 -0.029 0.012 0.142 -0.137
+ 6.355 -0.656 -0.183 0.179 -0.067 0.059 -0.181 -0.463 -0.372 -0.024 -0.031 0.123 -0.086
+ 6.158 -0.127 -0.070 -0.049 -0.460 -0.180 -0.103 -0.077 0.036 -0.034 -0.109 0.038 -0.015
+ 5.485 0.093 0.224 -0.137 -0.500 -0.053 -0.036 -0.141 -0.101 -0.012 -0.088 -0.043 -0.014
+ 5.398 0.729 0.138 -0.045 -0.223 -0.119 -0.424 -0.253 -0.219 -0.094 -0.146 -0.011 -0.095
+ 6.905 0.889 -0.294 -0.001 -0.437 0.014 -0.427 -0.400 -0.071 -0.059 -0.171 -0.027 0.023
+ 7.501 0.927 -0.501 0.107 -0.568 0.098 -0.491 -0.506 -0.042 0.006 -0.190 -0.067 0.093
+ 7.752 0.790 -0.378 0.026 -0.529 0.128 -0.473 -0.538 -0.039 0.076 -0.211 -0.075 0.112
+ 7.485 0.932 -0.417 0.121 -0.563 0.147 -0.419 -0.600 -0.003 0.041 -0.197 -0.056 0.090
+ 7.180 1.031 -0.375 0.153 -0.497 0.088 -0.364 -0.661 -0.039 0.035 -0.194 -0.015 0.047
+ 6.928 0.979 -0.261 0.163 -0.369 0.069 -0.316 -0.576 -0.150 0.020 -0.175 -0.058 -0.022
+ 6.685 0.873 -0.229 0.179 -0.236 0.105 -0.243 -0.563 -0.154 -0.037 -0.272 -0.052 -0.015
+ 5.960 0.882 -0.111 0.260 -0.175 0.034 -0.071 -0.402 -0.104 -0.075 -0.370 -0.245 0.041
+ 5.509 0.693 -0.066 0.217 -0.082 0.069 -0.128 -0.310 -0.027 -0.091 -0.205 -0.015 0.011
+ 5.260 0.764 0.118 -0.075 -0.123 -0.092 -0.412 -0.300 -0.036 -0.068 -0.024 0.069 0.074
+ 4.793 0.668 0.195 0.181 -0.045 -0.210 -0.383 -0.320 0.034 -0.044 -0.063 0.010 0.075
+ 4.688 0.616 0.167 0.110 -0.012 -0.216 -0.344 -0.266 -0.170 -0.007 0.057 0.131 0.050
+ 4.612 0.514 -0.063 0.018 -0.041 0.077 -0.251 -0.238 -0.067 -0.001 0.026 0.031 0.040
+ 4.625 0.637 0.109 0.024 -0.214 0.037 -0.347 -0.233 -0.016 -0.015 0.048 0.056 0.042
+ 4.764 0.746 0.001 -0.031 -0.078 0.119 -0.130 -0.221 -0.015 -0.024 -0.029 -0.060 -0.001
+ 5.445 0.776 -0.025 -0.260 -0.138 -0.011 -0.047 -0.118 -0.123 0.139 0.082 -0.031 0.051
+ 5.848 0.938 -0.249 -0.258 -0.074 0.027 -0.010 -0.031 -0.003 0.186 -0.063 -0.067 0.002
+ 5.989 1.053 -0.478 -0.267 -0.092 0.041 0.079 -0.047 -0.079 0.319 -0.034 -0.174 -0.090
+ 6.173 1.112 -0.569 -0.242 -0.076 0.097 -0.084 -0.097 -0.039 0.240 -0.135 -0.134 -0.037
+ 6.096 1.064 -0.425 -0.242 -0.258 0.071 -0.085 -0.121 -0.073 0.245 -0.082 -0.181 0.066
+ 5.821 0.805 -0.332 -0.176 -0.163 -0.073 -0.158 -0.061 -0.048 0.223 -0.046 -0.013 0.039
+ 5.587 0.691 -0.308 0.056 -0.204 -0.116 -0.209 -0.137 -0.040 0.106 0.050 0.024 0.117
+ 5.180 0.608 -0.165 0.225 -0.262 0.002 -0.091 -0.146 -0.057 0.249 0.157 0.003 0.093
+ 4.375 0.531 -0.086 0.093 -0.210 -0.109 -0.049 -0.086 -0.093 0.135 -0.004 -0.073 -0.104
+ 4.530 0.435 -0.174 0.127 -0.134 -0.013 0.099 -0.105 -0.097 0.114 0.001 0.114 0.022
+ 3.909 0.498 0.064 0.309 0.032 -0.042 -0.011 -0.014 0.089 0.040 -0.068 0.087 0.033
+ 3.816 0.365 -0.193 0.123 0.109 0.170 -0.155 -0.078 0.058 0.056 -0.072 0.048 -0.049
+ 3.702 0.367 -0.205 0.025 -0.108 0.005 -0.229 -0.123 -0.123 -0.125 -0.007 -0.075 -0.060
+ 3.463 0.272 0.009 0.257 -0.037 -0.108 -0.245 -0.161 -0.011 -0.108 0.019 -0.022 -0.036
+ 3.626 0.476 0.135 0.323 0.076 -0.025 -0.079 -0.180 -0.236 -0.023 0.101 -0.064 -0.021
+ 3.737 0.463 -0.127 0.054 0.088 -0.087 -0.178 -0.095 -0.055 0.133 0.051 -0.071 0.068
+ 5.465 0.177 0.354 0.321 -0.011 0.120 -0.078 -0.316 -0.084 -0.108 -0.054 -0.222 -0.011
+ 7.529 -0.129 -0.004 0.184 0.065 0.235 -0.263 -0.372 -0.031 0.015 -0.021 -0.394 0.028
+ 5.619 -0.148 -0.217 0.063 -0.045 0.229 -0.189 -0.266 0.169 0.268 0.223 -0.288 -0.082
+ 3.822 0.009 -0.002 0.113 -0.023 0.131 -0.063 -0.033 -0.011 0.072 0.098 -0.017 0.071
+ 4.589 -0.084 0.115 -0.079 0.036 0.058 -0.043 -0.210 -0.272 -0.037 -0.011 -0.009 0.017
+ 4.772 -0.169 -0.120 0.079 0.104 -0.037 -0.060 -0.126 -0.153 -0.141 -0.112 0.006 -0.016
+ 5.807 -0.684 -0.075 0.102 -0.182 -0.046 0.065 -0.313 0.036 0.136 0.021 -0.025 -0.086
+ 6.310 -0.465 -0.027 0.138 -0.429 0.031 0.068 -0.323 -0.140 0.124 -0.024 -0.078 -0.174
+ 6.345 -0.963 -0.161 0.180 -0.284 0.166 -0.057 -0.163 -0.045 0.172 0.070 0.065 -0.126
+ 5.899 -0.294 0.000 0.200 -0.080 0.060 -0.015 -0.134 -0.208 0.095 0.043 -0.161 -0.038
+ 6.192 0.008 0.036 0.085 0.058 -0.105 -0.190 -0.426 -0.257 0.201 -0.051 -0.118 -0.043
+ 5.828 -0.024 0.352 0.089 -0.212 -0.105 -0.132 -0.174 0.043 0.007 0.022 0.013 -0.024
+ 5.543 0.241 0.263 0.148 -0.057 -0.138 -0.198 -0.208 -0.108 -0.095 -0.060 -0.117 -0.011
+ 5.217 0.047 -0.122 0.097 -0.052 0.010 -0.129 -0.218 -0.057 -0.169 -0.134 -0.070 0.005
+ 5.333 0.001 0.016 0.073 -0.127 -0.040 -0.077 -0.146 -0.143 -0.052 -0.123 -0.173 -0.074
+ 5.090 0.180 0.044 0.013 -0.142 -0.095 0.010 -0.186 -0.088 -0.085 -0.097 -0.190 -0.265
+ 5.032 0.037 0.068 0.001 -0.239 -0.131 -0.010 -0.175 -0.190 -0.101 -0.124 0.008 -0.093
+ 4.498 0.306 -0.034 0.068 -0.044 0.039 -0.125 -0.126 -0.091 0.013 -0.006 -0.024 0.040
+ 4.142 0.410 0.084 -0.119 -0.246 -0.045 -0.138 -0.118 -0.206 -0.147 -0.022 0.016 -0.177
+ 4.637 -0.144 -0.140 -0.001 -0.321 0.018 -0.245 -0.182 -0.066 -0.156 -0.132 0.073 0.009
+ 5.147 -0.208 -0.131 -0.034 -0.202 0.026 0.031 -0.165 -0.036 0.024 0.016 0.004 -0.032
+ 5.204 0.007 0.067 -0.120 -0.221 0.125 0.041 -0.156 -0.059 -0.000 -0.107 0.025 0.070
+ 5.809 -0.690 0.078 0.081 0.039 0.090 -0.207 -0.219 -0.158 0.022 0.036 -0.020 -0.043
+ 5.334 -0.363 0.075 -0.007 -0.171 -0.064 -0.166 -0.168 -0.053 0.102 0.028 0.010 -0.049
+ 5.812 0.394 0.389 -0.052 -0.353 -0.244 -0.349 -0.119 -0.294 -0.145 -0.141 -0.040 0.006
+ 5.500 -0.021 0.105 0.174 -0.095 -0.232 -0.206 -0.285 -0.279 0.064 -0.091 0.075 -0.086
+ 7.011 -0.206 0.051 0.128 -0.397 -0.373 -0.180 -0.168 -0.290 0.078 -0.001 -0.100 0.126
+ 7.045 -0.246 0.150 0.189 -0.593 -0.306 -0.169 -0.307 -0.133 0.116 -0.079 -0.153 -0.003
+ 6.476 -0.220 0.103 0.532 -0.758 -0.332 -0.279 -0.324 -0.259 0.054 0.053 0.058 -0.177
+ 6.355 -0.195 0.050 0.418 -0.832 -0.383 -0.264 0.000 -0.278 0.019 -0.039 0.046 -0.119
+ 5.331 -0.173 -0.056 0.280 -0.319 -0.143 -0.249 -0.049 -0.272 0.065 -0.118 -0.001 -0.245
+ 4.885 -0.087 0.192 0.183 -0.375 -0.325 -0.232 -0.105 -0.235 0.058 -0.191 -0.034 -0.079
+ 4.976 0.013 0.376 0.202 -0.277 -0.265 -0.157 -0.217 -0.273 -0.097 -0.013 0.033 0.001
+ 4.867 0.335 0.192 0.275 -0.332 -0.030 -0.108 -0.032 -0.276 -0.215 -0.118 -0.081 -0.070
+ 4.510 0.115 0.139 0.183 -0.131 -0.148 -0.056 -0.095 -0.141 -0.114 -0.384 -0.144 -0.062
+ 5.184 0.117 0.112 -0.012 -0.314 -0.226 -0.099 -0.236 -0.181 -0.110 -0.246 0.004 0.024
+ 5.047 -0.259 0.157 0.080 -0.312 -0.162 -0.184 -0.286 -0.130 -0.263 0.113 0.215 0.004
+ 5.881 -0.098 -0.165 0.361 -0.310 -0.467 -0.457 -0.406 -0.071 -0.300 -0.022 0.350 0.155
+ 6.777 -0.263 -0.468 0.218 -0.526 -0.501 -0.700 -0.474 -0.085 -0.325 -0.164 0.431 0.082
+ 7.446 -0.209 -0.298 0.188 -0.491 -0.333 -0.725 -0.312 0.019 -0.213 -0.348 0.439 -0.101
+ 7.584 -0.224 -0.349 0.069 -0.615 -0.348 -0.827 -0.225 0.133 -0.045 -0.342 0.414 -0.212
+ 7.547 -0.267 -0.335 -0.000 -0.611 -0.259 -0.676 -0.094 0.281 0.085 -0.447 0.290 -0.260
+ 7.652 -0.020 -0.233 0.037 -0.622 -0.325 -0.713 -0.136 0.318 0.181 -0.468 0.201 -0.172
+ 7.464 0.106 -0.330 -0.230 -0.721 -0.335 -0.677 -0.222 0.271 0.070 -0.486 0.204 -0.171
+ 7.383 0.157 0.217 -0.245 -0.529 -0.274 -0.621 -0.125 0.141 -0.045 -0.101 0.254 -0.257
+ 6.969 0.275 -0.113 -0.099 -0.384 -0.234 -0.718 -0.199 0.054 0.039 -0.250 0.345 -0.200
+ 6.475 0.408 -0.152 -0.137 -0.370 -0.160 -0.466 -0.245 0.089 0.052 -0.114 0.078 -0.135
+ 5.874 0.393 -0.208 -0.108 -0.274 -0.156 -0.357 -0.004 0.198 0.056 -0.285 0.012 -0.130
+ 5.836 0.590 0.032 -0.009 -0.394 -0.278 -0.271 -0.197 -0.030 0.198 -0.217 0.067 -0.145
+ 5.575 0.544 -0.114 -0.022 -0.244 -0.146 -0.204 -0.218 -0.286 -0.073 -0.160 -0.065 -0.199
+ 5.387 0.498 -0.307 -0.182 -0.237 -0.363 -0.304 -0.332 -0.198 0.022 -0.145 -0.138 -0.134
+ 5.410 0.352 -0.173 -0.186 -0.400 -0.215 -0.249 -0.286 -0.094 0.057 -0.083 -0.080 0.019
+ 5.595 0.382 -0.302 -0.170 -0.388 -0.206 -0.287 -0.377 -0.233 0.050 -0.116 -0.020 0.004
+ 5.739 0.328 -0.093 -0.125 -0.219 -0.297 -0.283 -0.311 -0.069 -0.014 -0.171 0.025 -0.094
+ 5.891 0.299 0.024 -0.030 -0.133 -0.153 -0.221 -0.098 -0.153 -0.041 -0.273 -0.038 -0.101
+ 5.967 0.266 -0.105 -0.019 -0.137 -0.032 -0.182 -0.284 -0.227 -0.163 -0.253 0.016 -0.032
+ 6.032 0.487 0.069 -0.317 -0.207 -0.170 -0.216 -0.264 -0.196 -0.075 -0.182 -0.060 -0.013
+ 5.788 0.661 0.166 -0.253 -0.371 -0.165 -0.295 -0.265 -0.156 -0.079 -0.196 -0.081 0.045
+ 7.505 -0.224 0.004 -0.151 -0.269 -0.316 -0.228 -0.208 -0.200 -0.053 -0.126 0.065 0.027
+ 6.550 -0.011 -0.055 -0.392 -0.544 -0.409 -0.231 -0.170 -0.216 -0.104 -0.190 0.003 0.022
+ 5.908 0.628 -0.001 -0.412 -0.415 0.142 -0.304 -0.024 -0.143 -0.338 -0.142 -0.206 -0.133
+ 5.913 0.681 -0.013 -0.387 -0.417 -0.059 -0.296 -0.041 -0.095 -0.120 -0.118 -0.124 -0.197
+ 6.065 0.738 -0.285 -0.551 -0.389 0.021 -0.388 -0.104 -0.187 0.069 -0.019 -0.053 -0.164
+ 6.552 0.777 -0.501 -0.509 -0.297 0.180 -0.479 -0.123 -0.080 0.107 -0.105 -0.114 -0.208
+ 6.680 0.351 -0.603 -0.320 -0.340 0.215 -0.404 -0.057 0.033 -0.004 -0.219 -0.199 -0.313
+ 7.177 0.084 -0.718 -0.310 -0.645 0.009 -0.398 0.164 0.191 -0.045 -0.280 0.067 -0.032
+ 7.558 0.092 -0.729 -0.115 -0.608 -0.139 -0.531 0.180 0.207 -0.098 -0.285 0.167 -0.153
+ 7.785 -0.125 -0.719 -0.073 -0.644 -0.226 -0.409 0.356 0.109 0.018 -0.232 0.255 -0.132
+ 7.431 -0.292 -0.635 0.054 -0.737 -0.407 -0.258 0.176 -0.052 0.112 -0.172 0.022 -0.286
+ 7.405 -0.204 -0.453 0.210 -0.659 -0.394 -0.146 0.121 -0.144 0.255 -0.234 0.015 -0.207
+ 7.071 -0.355 -0.345 0.245 -0.773 -0.477 -0.163 -0.011 -0.283 0.037 -0.110 0.136 -0.046
+ 6.554 -0.447 -0.217 0.355 -0.582 -0.431 0.053 -0.021 -0.183 0.008 -0.097 0.130 -0.066
+ 5.879 -0.261 -0.338 0.234 -0.359 -0.138 0.062 -0.202 -0.253 0.022 -0.152 0.027 -0.060
+ 6.251 -0.258 0.013 0.159 -0.200 -0.179 -0.228 -0.137 -0.037 -0.101 -0.205 -0.156 0.025
+ 6.326 -0.206 0.125 -0.029 -0.042 -0.103 -0.275 -0.160 -0.048 -0.114 -0.220 -0.054 -0.021
+ 7.694 -0.429 0.062 0.160 -0.141 -0.131 -0.436 -0.292 -0.172 -0.164 -0.149 -0.181 -0.124
+ 8.127 -0.722 -0.002 0.231 -0.040 0.008 -0.304 -0.259 -0.182 -0.161 -0.049 -0.011 -0.168
+ 7.712 -0.383 -0.126 -0.022 -0.040 -0.102 -0.288 -0.168 -0.052 -0.020 0.072 -0.133 -0.109
+ 7.732 -0.173 -0.173 -0.179 -0.202 -0.094 -0.116 -0.295 -0.110 0.023 -0.076 -0.284 -0.065
+ 6.936 -0.079 -0.298 -0.006 -0.531 -0.022 -0.062 -0.085 -0.133 0.029 -0.087 -0.199 -0.058
+ 7.040 -0.218 -0.308 0.100 -0.431 -0.250 -0.290 -0.346 -0.278 -0.105 -0.002 0.154 -0.104
+ 8.343 -0.307 -0.278 0.171 -0.346 -0.169 -0.315 -0.200 -0.035 0.087 0.003 0.094 -0.128
+ 6.890 -0.371 -0.143 0.117 -0.291 -0.075 -0.197 -0.014 -0.279 0.072 0.066 0.093 -0.089
+ 6.061 -0.098 -0.079 0.167 -0.262 -0.101 -0.109 -0.220 -0.315 0.055 0.086 0.003 -0.077
+ 6.711 -0.414 -0.140 0.352 -0.613 -0.157 -0.134 -0.078 -0.183 0.087 0.130 0.011 -0.046
+ 6.739 -0.284 -0.140 0.325 -0.446 -0.078 -0.307 -0.148 -0.282 -0.021 0.064 0.119 -0.041
+ 6.969 -0.315 -0.315 0.148 -0.426 -0.172 -0.240 -0.266 -0.242 0.212 -0.060 -0.050 -0.192
+ 6.857 -0.292 -0.115 0.294 -0.317 -0.080 -0.131 -0.417 -0.451 -0.005 -0.352 -0.158 -0.149
+ 7.407 -0.386 -0.138 0.250 -0.134 -0.037 -0.229 -0.320 -0.385 -0.140 -0.260 -0.072 -0.180
+ 7.130 -0.438 -0.012 0.312 -0.110 -0.131 -0.121 -0.180 -0.265 -0.207 -0.184 -0.188 -0.380
+ 6.755 -0.269 0.238 0.197 -0.279 -0.056 -0.139 -0.333 -0.330 -0.022 -0.277 -0.098 -0.160
+ 6.358 -0.273 0.403 0.371 -0.384 -0.087 -0.094 -0.353 -0.264 0.170 -0.272 -0.089 -0.155
+ 6.082 -0.359 0.299 0.200 -0.323 -0.052 0.119 -0.324 -0.358 0.045 -0.539 -0.180 -0.114
+ 6.162 -0.203 0.482 0.376 -0.393 -0.130 0.177 -0.186 -0.298 0.050 -0.538 -0.225 -0.171
+ 7.447 0.025 0.136 0.196 -0.486 -0.116 -0.090 -0.269 -0.256 0.069 -0.319 0.008 -0.014
+ 7.664 0.118 0.191 -0.182 -0.503 -0.101 -0.198 -0.356 -0.320 -0.183 -0.202 -0.026 -0.018
+ 7.305 0.155 0.065 -0.058 -0.537 -0.027 -0.219 -0.353 -0.279 -0.055 -0.236 0.037 -0.079
+ 6.074 0.007 0.149 0.022 -0.453 -0.016 -0.210 -0.313 -0.224 -0.107 -0.012 -0.073 -0.098
+ 6.213 -0.059 0.213 0.116 -0.377 -0.122 -0.318 -0.473 -0.278 -0.161 -0.025 0.136 -0.009
+ 6.172 -0.114 -0.175 0.093 -0.503 -0.047 -0.270 -0.282 -0.060 0.089 -0.042 0.194 -0.010
+ 6.210 -0.447 -0.361 0.066 -0.424 0.092 -0.084 -0.238 -0.192 0.130 -0.034 0.012 -0.100
+ 6.258 -0.572 -0.194 0.121 -0.480 -0.104 -0.437 -0.294 -0.175 0.058 -0.103 -0.084 0.023
+ 5.936 0.114 -0.038 0.253 -0.421 -0.392 -0.472 -0.402 -0.122 -0.019 -0.123 -0.094 0.033
+ 4.395 0.091 -0.114 0.240 -0.304 -0.145 -0.208 -0.234 -0.095 -0.068 -0.201 -0.014 -0.032
+ 3.803 0.189 -0.003 0.347 -0.124 -0.100 -0.150 -0.088 -0.118 0.046 -0.240 0.057 0.041
+ 3.778 0.292 -0.026 0.151 -0.133 -0.082 -0.040 -0.058 -0.047 -0.017 -0.123 0.154 -0.128
+ 3.679 0.158 -0.035 0.062 0.077 0.050 -0.134 -0.123 -0.024 -0.106 -0.118 -0.208 -0.252
+ 3.687 0.098 -0.145 0.037 0.089 0.187 -0.040 -0.160 -0.055 -0.001 -0.196 -0.069 -0.340
+ 4.485 0.283 -0.164 -0.109 -0.051 0.026 -0.367 -0.112 -0.097 0.155 0.033 0.018 -0.063
+ 6.566 0.312 -0.466 -0.230 -0.442 0.066 -0.775 -0.137 -0.052 0.308 -0.166 0.016 0.030
+ 7.305 0.195 -0.470 -0.345 -0.537 0.026 -0.866 -0.084 0.015 0.097 -0.373 0.005 -0.023
+ 7.535 0.022 -0.537 -0.268 -0.544 0.117 -0.909 -0.108 0.012 0.022 -0.428 -0.011 -0.111
+ 7.548 -0.038 -0.672 -0.205 -0.522 0.194 -0.948 -0.203 -0.107 0.002 -0.434 0.031 -0.138
+ 7.694 0.134 -0.619 -0.223 -0.632 0.208 -0.832 0.049 -0.115 -0.013 -0.436 0.013 -0.156
+ 7.760 0.199 -0.606 -0.231 -0.544 0.181 -0.848 -0.007 -0.042 -0.072 -0.465 0.161 -0.190
+ 7.784 -0.066 -0.677 -0.330 -0.536 -0.069 -0.942 0.023 -0.093 -0.222 -0.408 0.184 -0.253
+ 8.163 -0.179 -0.572 -0.138 -0.472 -0.106 -0.806 0.161 -0.030 0.023 -0.400 0.128 -0.483
+ 7.914 -0.043 -0.671 -0.162 -0.724 -0.241 -0.532 0.257 0.106 -0.090 -0.352 0.179 -0.527
+ 7.379 -0.026 -0.659 -0.166 -0.695 -0.286 -0.616 0.288 0.207 -0.064 -0.321 0.254 -0.306
+ 6.810 -0.022 -0.536 -0.065 -0.480 -0.307 -0.637 0.250 0.098 -0.012 -0.161 0.314 -0.261
+ 6.459 0.028 -0.370 0.097 -0.588 -0.397 -0.576 0.150 0.005 0.050 -0.043 0.163 -0.637
+ 6.517 0.116 -0.451 0.095 -0.586 -0.454 -0.622 0.168 0.123 0.108 0.164 0.187 -0.234
+ 6.387 0.260 -0.418 0.116 -0.670 -0.353 -0.726 0.121 0.157 -0.065 -0.057 0.121 -0.195
+ 6.313 0.006 -0.520 0.156 -0.652 -0.271 -0.717 -0.050 0.029 -0.142 0.009 0.230 -0.120
+ 6.002 0.274 -0.530 0.210 -0.537 -0.245 -0.639 -0.093 -0.064 -0.139 -0.069 0.154 -0.139
+ 5.677 0.239 -0.289 0.082 -0.396 -0.223 -0.555 -0.110 0.127 -0.092 -0.029 0.325 -0.116
+ 5.358 0.242 -0.151 0.128 -0.277 -0.220 -0.603 -0.205 -0.058 -0.179 0.094 0.170 -0.204
+ 4.952 0.156 -0.148 0.100 -0.290 -0.142 -0.367 0.037 0.077 -0.083 -0.135 -0.009 -0.128
+ 4.709 0.344 -0.122 0.108 -0.229 -0.276 -0.305 0.033 -0.074 -0.030 -0.042 0.087 -0.044
+ 4.373 0.208 -0.235 -0.059 -0.192 -0.213 -0.505 0.025 -0.181 0.048 0.018 0.025 -0.057
+ 4.486 0.159 -0.210 0.172 0.081 -0.033 -0.134 0.018 0.027 0.004 -0.069 0.085 -0.279
+ 4.222 0.292 -0.122 0.194 -0.173 0.022 -0.318 -0.043 -0.000 0.007 0.010 0.022 -0.209
+ 4.296 0.224 -0.166 0.150 -0.103 0.045 -0.333 -0.045 -0.041 -0.109 -0.011 0.134 -0.013
+ 3.928 0.138 -0.222 0.061 -0.159 0.122 -0.130 0.024 0.031 -0.133 0.003 0.122 0.047
+ 3.742 0.035 -0.372 0.129 -0.074 0.012 -0.220 -0.135 0.024 0.001 0.049 0.052 -0.081
+ 3.689 0.055 -0.454 0.151 -0.034 -0.017 -0.125 0.018 0.165 0.079 0.093 0.170 0.021
+ 3.700 0.284 -0.416 0.193 0.045 0.134 -0.163 -0.029 -0.004 -0.101 0.058 -0.001 -0.134
+ 3.753 0.314 -0.188 0.132 0.114 -0.015 -0.172 -0.105 0.048 0.016 -0.116 0.206 0.045
+ 3.495 0.119 -0.342 -0.018 0.017 0.022 -0.039 -0.005 0.157 -0.020 -0.029 0.062 0.065
+ 3.405 0.283 -0.043 -0.011 -0.087 0.104 -0.238 -0.057 0.122 0.023 -0.083 0.098 0.099
+ 3.413 0.274 -0.086 -0.023 -0.211 -0.138 -0.092 -0.045 0.016 -0.081 0.053 0.027 -0.082
+ 3.311 -0.004 -0.386 -0.035 0.021 0.003 -0.095 -0.048 0.039 0.043 0.107 0.056 -0.051
+ 3.593 0.215 -0.416 0.059 0.078 0.024 -0.189 -0.033 -0.034 -0.045 -0.019 -0.049 -0.062
+ 3.423 0.262 -0.199 -0.070 0.117 0.095 -0.095 -0.194 -0.113 -0.094 0.154 0.123 -0.013
+ 3.464 0.285 -0.081 0.001 0.133 0.048 -0.168 -0.164 -0.051 0.015 -0.107 0.204 0.148
+ 3.497 0.361 0.007 -0.028 -0.129 0.010 -0.058 -0.054 -0.055 -0.081 -0.050 0.052 -0.157
+ 3.518 0.192 -0.301 0.139 0.018 -0.120 -0.194 -0.121 -0.041 0.141 -0.037 -0.004 -0.027
+ 3.304 0.077 -0.259 0.000 -0.088 -0.057 -0.067 0.056 0.072 0.127 -0.146 -0.041 0.079
+ 3.392 0.129 -0.166 0.016 -0.041 0.078 -0.192 -0.059 -0.201 0.044 -0.065 0.035 -0.013
+ 3.568 0.113 -0.228 0.087 -0.060 -0.043 -0.069 -0.191 -0.115 0.062 0.061 0.131 -0.028
+ 3.233 0.014 -0.159 0.122 0.037 0.142 -0.105 -0.237 -0.042 0.217 0.110 0.161 0.046
+ 3.529 0.198 -0.172 0.186 -0.008 0.072 -0.191 -0.220 -0.128 0.055 0.081 0.203 -0.019
+ 3.615 0.170 -0.207 0.064 -0.134 -0.023 -0.121 -0.141 -0.018 -0.055 0.105 0.171 -0.046
+ 3.506 0.145 -0.223 -0.048 -0.232 -0.046 -0.053 -0.157 -0.094 0.065 0.116 0.162 -0.017
+ 3.449 0.188 0.001 0.064 -0.007 0.094 -0.257 -0.213 -0.076 -0.030 0.028 -0.042 -0.095
+ 3.202 0.039 -0.160 0.143 -0.116 -0.003 -0.163 -0.126 -0.030 0.031 0.017 -0.080 -0.141
+ 3.183 0.042 -0.445 -0.011 0.099 -0.071 -0.171 0.010 0.099 -0.027 -0.052 0.057 -0.007
+ 3.186 0.212 -0.206 0.108 0.088 0.097 -0.250 -0.194 -0.059 0.001 -0.052 -0.013 -0.021
+ 3.161 0.329 -0.025 0.002 -0.124 0.050 -0.160 -0.235 0.081 -0.000 0.053 -0.005 0.020
+ 3.323 0.302 -0.242 -0.040 -0.035 -0.108 -0.318 -0.195 0.008 0.040 0.141 -0.052 -0.031
+ 3.134 -0.044 -0.169 -0.031 -0.279 0.056 -0.010 -0.025 -0.097 0.025 0.276 0.140 0.064
+ 3.270 0.189 -0.194 -0.202 -0.024 0.098 -0.022 -0.024 -0.183 0.049 0.236 0.221 0.057
+ 3.399 0.235 -0.150 -0.113 -0.276 -0.077 -0.200 -0.167 -0.107 -0.082 -0.128 0.174 0.089
+ 3.491 0.305 -0.093 0.029 -0.051 -0.055 -0.052 -0.159 0.092 0.168 -0.125 0.065 -0.149
+ 3.136 0.216 -0.120 -0.006 -0.080 -0.003 -0.257 -0.252 0.104 -0.007 0.050 0.065 0.052
+ 3.415 0.176 -0.143 0.254 0.109 0.142 -0.229 -0.286 -0.053 0.102 0.065 0.120 0.052
+ 3.204 0.016 -0.258 0.088 0.124 0.042 -0.136 -0.102 -0.068 0.044 -0.020 -0.000 -0.002
+ 3.524 0.302 -0.184 0.107 -0.035 -0.053 -0.085 -0.205 -0.188 -0.121 0.013 0.001 0.031
+ 3.866 0.381 -0.018 0.169 -0.040 -0.050 -0.240 -0.321 -0.122 -0.106 0.042 -0.025 -0.045
+ 3.791 0.036 -0.238 0.061 -0.190 -0.054 -0.178 -0.089 0.020 -0.090 -0.078 -0.039 -0.089
+ 3.573 -0.057 -0.188 0.150 -0.129 -0.117 -0.123 -0.236 -0.041 0.056 0.104 0.130 -0.078
+ 3.445 0.069 -0.196 -0.109 -0.160 -0.032 -0.139 -0.143 -0.183 0.031 0.036 0.058 -0.082
+ 3.504 0.172 -0.111 0.138 -0.020 0.036 -0.057 0.079 -0.096 -0.029 -0.166 -0.028 0.060
+ 3.513 0.122 -0.186 0.107 0.027 -0.020 0.028 -0.011 0.023 0.033 -0.100 -0.056 -0.180
+ 3.380 0.264 0.121 0.178 -0.028 0.098 0.018 -0.300 -0.041 0.077 0.057 0.075 0.029
+ 3.326 0.326 -0.170 0.020 0.044 0.008 -0.009 -0.092 0.019 0.095 0.007 0.089 -0.007
+ 3.732 0.192 -0.350 0.043 -0.065 -0.027 -0.074 -0.214 0.021 0.224 0.146 -0.020 0.018
+ 3.547 0.086 -0.270 0.052 0.031 0.043 -0.114 -0.295 -0.046 0.031 0.198 0.001 -0.087
+ 3.618 0.216 -0.119 0.045 -0.079 0.076 -0.005 -0.138 -0.055 -0.021 0.102 -0.035 0.005
+ 3.551 0.269 -0.351 -0.039 0.051 0.162 0.016 -0.165 -0.094 -0.083 -0.059 -0.102 0.125
+ 3.559 0.082 -0.281 0.068 0.103 0.150 -0.038 -0.113 -0.041 0.061 -0.158 0.007 -0.017
+ 3.804 0.056 -0.264 0.035 0.010 -0.057 -0.042 -0.063 -0.066 0.009 0.046 0.091 0.056
+ 3.776 -0.256 -0.283 -0.080 0.027 0.090 0.131 -0.083 -0.074 -0.017 -0.155 -0.099 -0.083
+ 4.051 -0.431 -0.198 -0.000 0.008 0.097 0.022 -0.142 -0.091 0.180 0.049 -0.005 0.056
+ 4.378 -0.643 -0.064 0.034 -0.241 -0.087 0.086 0.140 -0.149 0.284 0.092 -0.113 0.070
+ 5.034 -0.509 0.017 -0.007 -0.187 -0.005 -0.040 0.089 -0.169 0.106 -0.001 -0.099 -0.035
+ 5.301 -0.612 -0.054 -0.102 -0.131 -0.048 -0.114 -0.141 -0.239 0.112 -0.110 -0.058 -0.042
+ 5.503 -0.875 0.062 -0.076 -0.174 -0.020 0.011 -0.145 -0.065 -0.042 -0.162 -0.038 -0.095
+ 5.806 -0.968 -0.011 0.062 0.055 0.002 -0.214 -0.081 -0.134 0.047 -0.145 -0.002 0.028
+ 5.682 -1.035 -0.152 0.019 0.106 0.042 -0.137 0.067 -0.041 0.150 0.093 -0.026 -0.054
+ 6.077 -1.005 -0.043 0.227 0.056 -0.065 -0.352 -0.171 -0.130 0.110 0.040 0.024 0.158
+ 6.136 -1.108 -0.117 -0.055 -0.113 -0.167 0.082 -0.155 -0.231 0.218 -0.026 -0.022 -0.064
+ 6.120 -0.947 -0.392 -0.012 0.097 -0.061 0.086 0.015 -0.217 0.068 -0.105 -0.179 -0.091
+ 6.070 -1.031 -0.298 -0.041 -0.015 0.009 -0.030 -0.009 -0.159 0.012 -0.119 -0.159 -0.098
+ 5.770 -0.915 -0.193 0.114 0.057 -0.018 -0.028 0.051 -0.214 -0.115 -0.019 -0.077 0.148
+ 5.654 -1.122 -0.070 0.179 -0.006 0.013 -0.006 -0.006 -0.096 -0.011 0.031 -0.101 0.078
+ 5.323 -1.008 -0.130 -0.040 -0.021 -0.217 -0.010 0.071 0.067 0.102 -0.102 -0.000 0.021
+ 5.694 -0.850 -0.109 0.014 -0.078 -0.019 -0.119 -0.048 -0.154 0.054 -0.097 -0.060 -0.025
+ 5.802 -0.846 -0.160 0.043 -0.094 -0.088 0.108 -0.086 -0.343 0.161 -0.019 0.006 -0.071
+ 5.370 -0.663 -0.158 0.065 -0.068 -0.071 0.067 -0.125 -0.258 0.082 0.062 -0.044 0.009
+ 5.144 -0.381 0.011 -0.063 0.039 0.071 -0.022 0.009 -0.255 -0.010 -0.008 0.090 0.016
+ 5.471 -0.524 -0.296 0.264 0.088 0.108 -0.217 -0.232 -0.058 -0.057 -0.030 0.010 -0.030
+ 5.273 -0.549 -0.332 0.189 -0.014 0.032 -0.345 -0.155 0.025 0.088 -0.042 0.081 -0.027
+ 4.137 -0.033 -0.131 0.044 0.053 0.036 -0.133 -0.116 0.006 0.163 0.041 0.044 -0.119
+ 3.730 0.185 0.010 0.120 0.021 0.129 -0.066 0.037 -0.027 0.015 -0.019 -0.114 -0.128
+ 5.652 -0.652 0.268 0.117 0.196 -0.296 0.037 -0.212 -0.320 0.024 0.038 -0.137 0.208
+ 5.250 -0.806 0.251 0.195 0.141 -0.189 0.033 -0.264 -0.190 0.053 0.089 -0.183 0.217
+ 3.599 0.003 -0.047 -0.077 0.016 0.153 0.078 -0.303 -0.113 0.005 -0.088 0.216 0.043
+ 4.150 -0.327 0.089 -0.198 0.046 -0.009 -0.146 -0.319 -0.238 -0.022 -0.091 0.090 -0.002
+ 4.264 -0.428 0.259 -0.057 0.099 0.305 -0.341 -0.202 -0.130 0.100 0.027 0.091 0.008
+ 4.069 0.215 0.099 0.007 0.058 -0.037 -0.170 -0.133 -0.152 -0.012 -0.056 0.115 -0.078
+ 3.906 0.197 -0.032 0.159 -0.146 -0.053 -0.167 -0.183 -0.103 -0.040 -0.023 0.140 0.006
+ 5.341 -0.071 0.109 0.191 -0.242 0.032 -0.224 -0.092 -0.093 -0.004 -0.050 0.153 -0.146
+ 9.892 -0.297 0.554 0.214 -0.051 -0.203 -0.237 -0.166 -0.075 -0.246 -0.081 0.059 -0.246
+ 12.353 -0.380 0.411 0.441 0.002 -0.284 -0.444 -0.161 -0.317 -0.352 -0.184 -0.104 -0.339
+ 13.936 -0.458 0.121 0.624 -0.284 -0.205 -0.645 0.010 -0.585 -0.313 -0.282 0.037 -0.346
+ 14.756 -0.547 0.136 0.641 -0.404 -0.248 -0.724 0.065 -0.641 -0.314 -0.266 0.020 -0.371
+ 14.922 -0.590 0.153 0.673 -0.436 -0.241 -0.789 0.091 -0.680 -0.325 -0.288 0.064 -0.470
+ 14.925 -0.665 0.206 0.721 -0.408 -0.286 -0.759 0.053 -0.690 -0.318 -0.297 0.075 -0.497
+ 14.685 -0.597 0.223 0.708 -0.386 -0.269 -0.744 0.036 -0.694 -0.267 -0.328 0.088 -0.528
+ 14.022 -0.512 0.215 0.681 -0.286 -0.209 -0.691 0.032 -0.610 -0.254 -0.382 0.121 -0.511
+ 12.646 -0.285 0.185 0.272 -0.373 -0.311 -0.368 0.124 -0.423 -0.194 -0.397 0.063 -0.361
+ 8.966 0.206 0.540 0.368 0.003 -0.114 -0.163 0.175 -0.281 -0.037 -0.390 -0.000 -0.302
+ 7.414 0.339 0.522 0.596 0.118 -0.055 -0.323 0.359 -0.238 -0.112 -0.377 0.177 -0.443
+ 7.028 0.484 0.626 0.767 0.083 -0.094 -0.334 0.233 -0.171 -0.089 -0.203 0.202 -0.446
+ 6.723 0.595 0.543 0.698 0.054 -0.078 -0.344 0.332 -0.218 -0.102 -0.296 0.237 -0.394
+ 7.924 0.214 0.428 0.404 0.421 -0.013 -0.081 -0.288 -0.260 -0.140 -0.274 0.128 -0.335
+ 11.598 -0.415 0.278 0.152 0.107 -0.190 -0.195 -0.213 -0.219 -0.312 -0.277 -0.025 -0.446
+ 12.460 -0.743 0.297 0.231 0.066 -0.349 -0.277 -0.062 -0.258 -0.347 -0.140 -0.027 -0.321
+ 13.172 -0.444 0.112 0.495 -0.100 -0.378 -0.372 -0.046 -0.450 -0.351 -0.302 0.033 -0.458
+ 13.709 -0.400 0.119 0.588 -0.135 -0.416 -0.446 -0.140 -0.561 -0.293 -0.165 -0.033 -0.477
+ 13.711 -0.260 0.067 0.675 -0.267 -0.385 -0.506 -0.104 -0.559 -0.275 -0.186 -0.078 -0.481
+ 13.801 -0.197 0.011 0.662 -0.385 -0.326 -0.512 -0.116 -0.501 -0.286 -0.232 -0.065 -0.506
+ 13.362 -0.083 -0.074 0.685 -0.332 -0.286 -0.532 -0.068 -0.491 -0.279 -0.252 -0.062 -0.542
+ 12.386 -0.076 -0.041 0.593 -0.119 -0.304 -0.383 -0.023 -0.448 -0.322 -0.295 0.008 -0.560
+ 9.900 0.037 0.084 0.539 0.045 -0.320 -0.303 0.077 -0.337 -0.233 -0.304 0.156 -0.424
+ 7.015 0.494 0.524 0.621 0.194 -0.295 -0.017 0.219 -0.093 -0.257 -0.179 0.029 -0.401
+ 6.960 0.372 0.324 0.328 0.025 -0.025 0.181 0.360 -0.138 -0.153 -0.236 -0.213 -0.345
+ 6.766 0.417 0.665 0.231 0.037 -0.167 -0.047 0.207 -0.122 -0.234 -0.215 -0.128 -0.314
+ 6.268 0.285 0.587 0.040 0.121 -0.190 -0.034 -0.183 -0.103 -0.172 -0.121 -0.178 -0.167
+ 6.215 0.051 0.804 0.266 0.251 -0.164 0.088 -0.213 -0.200 -0.307 -0.074 -0.260 -0.226
+ 6.190 -0.091 0.774 0.221 0.122 0.021 0.025 0.106 -0.198 -0.273 -0.085 -0.338 -0.345
+ 8.814 -0.353 0.456 -0.126 -0.098 0.093 -0.072 -0.019 -0.078 -0.022 -0.136 -0.155 -0.312
+ 10.640 -0.510 0.568 -0.082 -0.124 -0.084 -0.184 -0.116 -0.191 -0.172 -0.169 -0.122 -0.342
+ 11.844 -0.727 0.553 0.224 -0.098 -0.434 -0.246 -0.017 -0.282 -0.470 -0.075 -0.051 -0.429
+ 13.032 -0.452 0.216 0.384 0.009 -0.479 -0.346 -0.184 -0.298 -0.428 -0.159 -0.037 -0.432
+ 13.781 -0.370 0.086 0.489 -0.313 -0.297 -0.461 -0.051 -0.562 -0.332 -0.174 -0.003 -0.381
+ 14.174 -0.351 0.011 0.668 -0.389 -0.259 -0.599 -0.055 -0.612 -0.274 -0.328 0.060 -0.413
+ 14.453 -0.329 -0.072 0.669 -0.403 -0.305 -0.585 -0.047 -0.621 -0.299 -0.342 0.061 -0.413
+ 14.506 -0.302 -0.056 0.617 -0.389 -0.356 -0.531 -0.129 -0.561 -0.350 -0.349 0.058 -0.405
+ 14.118 -0.212 -0.099 0.627 -0.227 -0.359 -0.578 -0.081 -0.537 -0.365 -0.433 0.147 -0.438
+ 13.527 -0.300 0.064 0.528 -0.071 -0.387 -0.570 -0.043 -0.408 -0.404 -0.479 0.189 -0.319
+ 12.658 -0.180 0.153 0.327 -0.229 -0.342 -0.508 0.185 -0.262 -0.294 -0.517 0.007 -0.257
+ 12.905 -0.254 0.212 0.423 -0.147 -0.272 -0.646 -0.054 -0.374 -0.292 -0.473 0.061 -0.278
+ 13.154 -0.315 0.096 0.526 -0.021 -0.276 -0.508 -0.174 -0.476 -0.361 -0.440 0.215 -0.110
+ 13.276 -0.087 -0.067 0.694 -0.218 -0.343 -0.532 -0.142 -0.420 -0.265 -0.456 0.169 -0.162
+ 13.593 -0.034 -0.157 0.619 -0.325 -0.226 -0.586 -0.066 -0.450 -0.357 -0.360 0.132 -0.243
+ 13.898 -0.036 -0.235 0.698 -0.420 -0.221 -0.641 -0.047 -0.503 -0.308 -0.349 0.142 -0.370
+ 13.776 0.039 -0.331 0.768 -0.461 -0.226 -0.686 0.012 -0.479 -0.224 -0.379 0.137 -0.501
+ 13.348 0.055 -0.312 0.819 -0.426 -0.191 -0.686 0.050 -0.376 -0.090 -0.484 0.070 -0.475
+ 12.172 0.314 -0.438 0.779 -0.389 -0.118 -0.510 0.061 -0.216 -0.190 -0.544 -0.048 -0.370
+ 8.769 0.819 -0.415 0.430 0.051 0.014 -0.179 0.050 -0.269 -0.086 -0.437 -0.358 -0.391
+ 6.744 0.747 -0.006 0.636 0.350 -0.032 -0.363 0.011 -0.174 -0.114 -0.345 -0.241 -0.420
+ 6.735 0.929 0.002 0.479 0.363 0.006 -0.217 -0.060 -0.179 -0.131 -0.412 -0.083 -0.462
+ 6.106 0.755 0.183 0.548 0.357 -0.066 -0.174 0.011 -0.228 -0.035 -0.273 -0.200 -0.431
+ 6.233 0.511 0.022 0.558 0.267 -0.048 -0.244 -0.065 -0.193 -0.254 -0.285 -0.051 -0.315
+ 6.373 0.382 -0.129 0.302 0.021 -0.026 0.067 0.066 -0.038 0.012 -0.250 -0.124 -0.243
+ 8.892 0.194 -0.534 0.167 -0.220 -0.151 0.021 -0.004 -0.010 -0.028 -0.416 -0.330 -0.247
+ 6.429 0.490 -0.145 0.216 -0.125 -0.054 0.044 0.058 -0.026 0.011 -0.359 -0.296 -0.193
+ 4.771 0.407 0.222 0.353 0.037 -0.086 -0.112 -0.067 -0.164 0.010 0.076 0.201 -0.180
+ 4.579 0.329 -0.069 0.219 -0.070 -0.150 -0.207 0.125 -0.117 -0.072 -0.021 -0.079 -0.086
+ 4.335 0.175 -0.181 0.163 0.016 -0.138 -0.174 -0.081 -0.231 -0.168 -0.065 -0.060 -0.180
+ 4.058 0.158 -0.071 0.233 -0.026 -0.246 -0.118 0.007 -0.220 -0.098 -0.149 -0.085 -0.121
+ 4.201 0.073 -0.258 0.267 0.083 -0.084 -0.029 -0.032 -0.273 -0.050 0.002 0.006 -0.184
+ 4.272 0.171 -0.287 0.239 0.038 -0.124 -0.107 0.020 -0.207 -0.060 -0.103 0.160 0.004
+ 3.880 0.230 -0.036 0.202 -0.130 -0.070 -0.178 -0.077 -0.068 -0.191 -0.038 0.120 -0.103
+ 3.838 0.154 -0.106 0.123 -0.045 -0.020 -0.068 0.107 -0.142 -0.049 0.182 0.181 -0.119
+ 3.774 0.116 -0.105 0.164 0.014 -0.076 -0.085 0.071 -0.052 0.064 0.009 0.075 -0.026
+ 3.905 0.172 -0.312 0.087 -0.020 0.112 -0.061 -0.067 -0.270 -0.263 -0.083 0.023 -0.018
+ 3.774 0.264 -0.274 0.125 0.004 -0.135 -0.112 -0.044 -0.220 -0.085 -0.016 0.091 0.002
+ 3.804 0.307 -0.450 0.056 0.020 0.018 -0.107 -0.147 -0.121 0.032 -0.025 0.047 -0.029
+ 3.968 0.211 -0.164 0.201 0.108 0.027 0.063 -0.083 -0.173 -0.130 -0.014 -0.056 -0.076
+ 3.572 0.154 -0.121 0.089 0.003 -0.099 -0.169 -0.014 -0.129 0.156 0.036 0.071 -0.042
+ 3.581 0.190 -0.051 0.015 0.178 0.059 -0.168 -0.134 -0.145 0.047 0.116 0.125 -0.103
+ 3.817 0.146 -0.117 0.188 0.206 0.114 -0.006 -0.115 -0.238 0.055 0.147 0.146 -0.038
+ 8.201 0.322 -0.431 -0.143 -0.254 -0.189 -0.567 -0.427 -0.205 -0.007 -0.099 -0.163 -0.087
+ 8.107 0.410 -0.318 -0.279 -0.245 -0.273 -0.859 -0.655 -0.077 0.195 0.044 -0.168 0.039
+ 6.774 -0.362 -0.022 -0.223 -0.439 -0.779 -0.465 -0.284 0.287 0.502 0.288 -0.263 -0.007
+ 6.883 -0.072 -0.632 -0.489 -0.199 -0.251 -0.279 0.011 0.139 0.183 -0.003 -0.195 -0.172
+ 9.557 0.152 -1.341 -0.588 -0.321 -0.083 -0.353 0.011 -0.142 0.310 -0.029 -0.159 0.034
+ 12.328 0.885 -1.161 -0.876 -0.287 0.068 -0.455 0.223 -0.358 0.245 -0.370 -0.290 -0.056
+ 12.994 0.835 -1.404 -0.633 -0.397 0.042 -0.342 0.221 -0.302 0.277 -0.579 -0.247 -0.058
+ 13.545 0.540 -1.437 -0.304 -0.514 -0.088 -0.315 0.161 -0.148 0.277 -0.651 -0.190 -0.004
+ 13.709 0.643 -1.357 -0.277 -0.490 -0.215 -0.278 0.096 -0.134 0.159 -0.504 -0.211 -0.047
+ 14.430 0.358 -1.271 -0.137 -0.494 -0.437 -0.278 0.170 -0.090 0.091 -0.508 -0.102 -0.143
+ 14.075 0.525 -1.065 -0.038 -0.477 -0.622 -0.352 0.171 -0.188 0.063 -0.431 0.101 -0.281
+ 14.105 0.512 -0.921 0.245 -0.505 -0.628 -0.547 0.158 -0.427 0.073 -0.461 0.231 -0.343
+ 13.406 0.547 -0.798 0.474 -0.458 -0.621 -0.547 0.014 -0.505 0.003 -0.539 0.357 -0.374
+ 13.003 0.455 -0.681 0.587 -0.374 -0.453 -0.399 -0.113 -0.484 -0.097 -0.685 0.323 -0.398
+ 13.011 0.558 -0.599 0.604 -0.383 -0.565 -0.443 -0.211 -0.481 -0.063 -0.608 0.363 -0.432
+ 13.651 0.383 -0.554 0.643 -0.446 -0.555 -0.452 -0.159 -0.525 -0.039 -0.453 0.216 -0.455
+ 13.951 0.269 -0.582 0.675 -0.547 -0.597 -0.389 -0.093 -0.556 -0.018 -0.410 0.147 -0.464
+ 13.870 0.196 -0.447 0.697 -0.624 -0.531 -0.389 -0.093 -0.588 -0.047 -0.357 0.013 -0.414
+ 13.723 -0.017 -0.228 0.780 -0.627 -0.517 -0.427 -0.072 -0.546 0.041 -0.321 0.024 -0.385
+ 13.144 0.091 -0.164 0.663 -0.691 -0.419 -0.227 0.029 -0.459 0.038 -0.357 -0.078 -0.367
+ 12.309 0.253 -0.109 0.529 -0.603 -0.415 -0.007 0.051 -0.395 0.045 -0.287 -0.156 -0.287
+ 11.132 0.496 0.130 0.408 -0.112 -0.309 0.078 0.027 -0.360 0.117 -0.381 -0.178 -0.307
+ 10.662 0.669 0.171 0.282 0.058 -0.460 0.187 -0.076 -0.258 0.320 -0.606 -0.129 -0.223
+ 10.956 0.578 0.223 0.224 0.062 -0.506 0.116 -0.005 -0.330 0.280 -0.627 -0.142 -0.160
+ 11.082 0.426 0.287 0.293 -0.000 -0.517 0.056 -0.035 -0.312 0.229 -0.611 -0.195 -0.117
+ 11.545 0.016 0.465 0.458 -0.347 -0.328 -0.063 -0.156 -0.299 0.173 -0.472 -0.196 -0.147
+ 12.038 -0.136 0.511 0.446 -0.743 -0.231 -0.088 -0.237 -0.273 0.328 -0.343 -0.240 -0.184
+ 12.024 -0.145 0.461 0.469 -0.973 -0.034 -0.230 -0.139 -0.414 0.294 -0.308 -0.326 -0.201
+ 11.909 -0.239 0.660 0.420 -0.937 -0.000 -0.249 -0.153 -0.412 0.148 -0.330 -0.398 -0.175
+ 11.700 -0.259 0.750 0.445 -0.868 -0.005 -0.293 -0.127 -0.458 0.096 -0.310 -0.393 -0.167
+ 11.610 -0.366 0.820 0.455 -0.805 -0.041 -0.292 -0.186 -0.494 0.099 -0.236 -0.349 -0.199
+ 11.699 -0.341 0.701 0.568 -0.804 -0.228 -0.186 -0.148 -0.532 0.074 -0.264 -0.307 -0.207
+ 11.710 0.019 0.292 0.631 -0.482 -0.573 -0.090 -0.065 -0.586 0.031 -0.257 -0.348 -0.119
+ 11.359 0.341 0.138 0.412 0.000 -0.687 -0.277 0.045 -0.634 0.007 -0.246 -0.411 -0.036
+ 10.841 0.704 -0.044 0.396 0.261 -0.627 -0.357 -0.109 -0.559 0.004 -0.271 -0.364 -0.025
+ 10.853 0.923 -0.186 0.403 0.098 -0.551 -0.352 0.005 -0.418 -0.088 -0.385 -0.313 0.003
+ 11.396 0.586 0.080 0.249 0.060 -0.583 -0.349 0.079 -0.394 -0.130 -0.319 -0.411 0.065
+ 11.617 0.620 -0.109 0.475 -0.075 -0.668 -0.289 0.093 -0.543 -0.009 -0.238 -0.357 -0.041
+ 12.185 0.344 -0.128 0.708 -0.245 -0.712 -0.221 0.064 -0.513 -0.036 -0.209 -0.214 -0.166
+ 11.976 0.231 0.079 0.654 -0.388 -0.528 -0.206 0.117 -0.476 0.022 -0.274 -0.132 -0.137
+ 10.431 0.541 0.366 0.467 0.048 -0.350 -0.167 -0.014 -0.243 0.075 -0.582 -0.075 -0.241
+ 10.222 0.523 0.480 0.452 0.115 -0.399 -0.137 -0.128 -0.005 -0.200 -0.466 0.025 -0.270
+ 10.212 0.631 0.485 0.264 0.063 -0.334 -0.022 -0.120 -0.087 -0.250 -0.475 -0.039 -0.169
+ 10.030 0.483 0.646 0.268 -0.054 -0.346 0.037 -0.087 -0.221 -0.040 -0.455 -0.089 -0.317
+ 9.480 0.587 0.481 0.277 -0.078 -0.528 0.092 -0.001 -0.056 -0.028 -0.397 -0.157 -0.270
+ 8.519 0.596 0.124 0.228 -0.003 -0.240 0.179 -0.113 0.002 -0.033 -0.275 -0.238 -0.308
+ 6.988 0.617 0.248 0.247 -0.046 -0.298 0.104 0.004 0.134 0.037 -0.326 -0.248 -0.244
+ 6.294 0.370 -0.023 0.055 -0.176 -0.306 0.210 0.173 0.246 0.079 -0.467 -0.224 -0.194
+ 5.534 0.348 0.062 -0.055 -0.306 -0.210 0.104 0.107 0.017 -0.032 -0.459 -0.186 -0.189
+ 9.752 -0.718 -0.096 0.068 -0.485 0.100 -0.365 -0.034 -0.106 -0.211 -0.045 -0.151 -0.124
+ 12.218 -1.272 0.098 -0.134 -0.384 -0.027 -0.389 -0.247 -0.082 -0.148 -0.175 -0.067 -0.247
+ 12.664 -2.094 0.546 -0.045 -0.350 -0.035 -0.383 -0.183 -0.063 -0.175 -0.066 -0.148 -0.175
+ 12.786 -2.595 0.650 0.061 -0.563 0.081 -0.106 -0.281 0.006 -0.079 0.005 -0.076 -0.174
+ 13.152 -2.483 0.546 0.229 -0.549 0.009 -0.003 -0.210 -0.139 -0.263 -0.120 -0.173 -0.124
+ 13.078 -2.295 0.435 0.337 -0.506 -0.012 -0.043 -0.285 -0.193 -0.184 -0.014 -0.130 -0.318
+ 12.850 -2.227 0.276 0.416 -0.292 -0.131 -0.010 -0.021 -0.088 -0.223 0.013 -0.047 -0.291
+ 13.181 -1.968 0.483 0.502 -0.420 -0.222 -0.017 -0.035 -0.113 -0.235 -0.005 0.044 -0.090
+ 12.628 -1.823 0.277 0.594 -0.612 -0.233 -0.090 -0.084 -0.093 -0.300 -0.190 0.155 -0.092
+ 11.327 -1.283 0.227 0.793 -0.509 -0.138 0.011 -0.078 -0.091 -0.110 -0.189 0.069 -0.173
+ 13.131 0.310 -0.354 0.280 -0.444 -0.600 -0.257 -0.221 -0.132 -0.204 -0.199 0.047 -0.238
+ 14.941 0.236 -0.752 0.212 -0.545 -0.760 -0.342 -0.124 -0.228 -0.066 -0.196 0.193 -0.285
+ 15.598 -0.116 -0.670 0.066 -0.693 -0.790 -0.472 0.091 -0.225 0.054 -0.202 0.126 -0.359
+ 15.665 -0.073 -0.809 -0.005 -0.689 -0.722 -0.612 0.234 -0.333 0.063 -0.235 0.141 -0.418
+ 15.680 -0.227 -0.765 -0.214 -0.612 -0.743 -0.488 0.411 -0.332 0.181 -0.329 0.034 -0.457
+ 15.359 -0.289 -0.724 -0.198 -0.540 -0.758 -0.489 0.403 -0.300 0.216 -0.278 0.007 -0.418
+ 15.087 -0.228 -0.707 -0.190 -0.530 -0.797 -0.451 0.374 -0.335 0.187 -0.241 -0.013 -0.384
+ 14.450 -0.012 -0.546 -0.118 -0.460 -0.912 -0.413 0.226 -0.324 0.183 -0.146 0.016 -0.366
+ 13.475 0.110 -0.210 0.032 -0.549 -1.020 -0.235 0.030 -0.285 0.160 -0.179 0.059 -0.359
+ 11.633 -0.091 0.053 0.264 -0.542 -0.990 -0.162 -0.193 -0.342 0.095 -0.101 0.070 -0.175
+ 9.012 0.123 -0.311 0.080 -0.433 -0.701 -0.070 0.228 -0.067 0.272 0.094 -0.033 -0.219
+ 7.817 0.189 -0.085 0.082 -0.674 -0.812 -0.401 0.333 -0.078 0.003 0.117 0.151 -0.366
+ 7.215 0.045 -0.120 0.120 -0.392 -0.816 -0.288 0.356 -0.124 0.070 0.138 0.130 -0.201
+ 8.064 -0.922 0.051 0.407 -0.562 -0.269 -0.610 0.113 0.030 -0.102 0.083 -0.033 -0.210
+ 8.349 -0.990 -0.102 0.185 -0.555 -0.130 -0.595 0.035 0.208 0.049 0.100 -0.159 -0.265
+ 6.279 0.065 -0.189 -0.027 -0.364 -0.633 -0.451 0.161 0.115 0.158 -0.025 -0.038 -0.159
+ 5.992 -0.041 -0.223 -0.248 -0.413 -0.535 -0.327 0.384 0.171 0.250 -0.043 -0.072 -0.127
+ 5.966 0.053 -0.205 -0.103 -0.244 -0.687 -0.515 0.422 -0.028 0.089 -0.058 0.065 -0.238
+ 10.544 -1.377 0.030 -0.244 -0.124 -0.091 -0.432 0.001 -0.054 -0.238 -0.228 0.019 -0.042
+ 11.360 -1.529 -0.078 -0.412 -0.260 -0.146 -0.504 -0.043 -0.118 -0.170 -0.142 0.056 0.011
+ 8.343 -1.546 0.326 -0.525 -0.149 -0.033 -0.341 0.114 -0.078 -0.081 -0.092 0.026 -0.038
+ 9.233 -1.185 0.812 -0.626 -0.166 0.010 -0.455 0.045 -0.187 -0.092 -0.148 -0.123 -0.108
+ 10.594 -0.646 0.971 -0.146 -0.152 -0.173 -0.383 -0.168 -0.324 -0.285 -0.111 -0.181 -0.250
+ 11.762 -0.322 0.667 0.257 -0.233 -0.478 -0.691 0.183 -0.729 -0.048 -0.239 0.009 -0.380
+ 12.624 -0.076 0.257 0.189 -0.303 -0.588 -0.656 0.077 -0.585 -0.151 -0.179 0.062 -0.253
+ 13.172 -0.035 0.093 0.108 -0.524 -0.570 -0.654 0.090 -0.418 -0.112 -0.170 0.083 -0.229
+ 13.480 0.030 -0.261 0.091 -0.475 -0.560 -0.805 0.200 -0.425 -0.001 -0.194 0.330 -0.376
+ 13.648 0.026 -0.358 -0.080 -0.445 -0.645 -0.788 0.294 -0.233 0.027 -0.246 0.337 -0.465
+ 13.587 0.047 -0.373 -0.181 -0.405 -0.625 -0.829 0.252 -0.130 0.064 -0.299 0.340 -0.382
+ 13.352 0.173 -0.274 -0.282 -0.420 -0.498 -0.803 -0.022 0.040 0.168 -0.485 0.431 -0.342
+ 12.810 -0.046 -0.175 -0.313 -0.307 -0.444 -0.514 -0.178 0.158 0.218 -0.561 0.207 -0.130
+ 12.236 -0.159 -0.272 -0.521 -0.302 -0.368 -0.509 -0.037 0.183 0.129 -0.546 -0.037 -0.083
+ 11.508 -1.263 0.493 -0.550 -0.066 -0.196 -0.354 0.092 0.159 0.002 -0.258 -0.145 -0.028
+ 11.391 -1.815 0.808 -0.657 0.121 -0.027 -0.139 -0.083 -0.019 -0.179 -0.133 -0.141 -0.040
+ 10.727 -1.874 1.047 -0.719 -0.061 -0.075 -0.102 -0.043 0.015 -0.161 -0.224 0.039 -0.008
+ 10.701 -1.847 1.013 -0.697 0.007 -0.222 -0.297 -0.104 -0.218 -0.131 -0.266 0.096 -0.020
+ 10.396 -1.788 0.956 -0.511 -0.007 -0.387 -0.207 0.020 -0.115 -0.070 -0.170 -0.048 -0.265
+ 9.283 -1.753 0.714 -0.543 0.023 -0.239 -0.251 -0.095 -0.189 -0.027 0.020 0.072 -0.059
+ 8.395 -1.099 0.662 -0.639 -0.208 -0.352 -0.411 -0.246 -0.293 -0.256 -0.152 0.103 -0.082
+ 8.441 -1.075 0.439 -0.410 -0.255 0.009 -0.484 -0.100 -0.358 -0.167 -0.351 -0.185 -0.220
+ 9.457 -1.475 0.606 -0.334 -0.384 0.094 -0.513 -0.091 -0.313 -0.251 -0.254 -0.288 -0.228
+ 10.439 -2.138 0.809 0.108 -0.561 0.110 -0.308 -0.028 -0.156 -0.103 -0.221 -0.160 -0.089
+ 12.629 -1.775 0.428 -0.271 -0.676 0.049 -0.242 -0.121 -0.187 -0.167 -0.146 -0.148 -0.196
+ 13.204 -1.404 0.136 -0.197 -0.724 -0.086 -0.336 -0.218 -0.211 -0.244 -0.192 -0.040 -0.178
+ 12.532 -0.402 0.240 0.268 -0.356 -0.311 -0.435 -0.299 -0.091 -0.168 -0.363 0.051 -0.091
+ 12.307 0.500 -0.208 0.280 -0.087 -0.539 -0.683 0.030 -0.531 0.001 -0.501 -0.010 -0.077
+ 12.206 0.424 -0.222 0.322 -0.113 -0.366 -0.996 0.363 -0.619 -0.057 -0.397 0.032 -0.097
+ 11.776 0.281 -0.251 0.563 -0.151 -0.264 -0.805 -0.005 -0.400 -0.097 -0.429 0.038 0.024
+ 9.965 0.303 -0.258 0.670 0.095 -0.378 -0.674 -0.065 -0.361 -0.137 -0.385 -0.002 0.107
+ 7.846 0.069 0.089 0.611 0.116 -0.146 -0.259 0.068 -0.026 -0.077 -0.403 -0.124 0.191
+ 7.553 -0.201 0.271 0.801 0.295 -0.076 0.002 0.002 -0.070 -0.180 -0.344 -0.331 -0.103
+ 8.471 -0.056 -0.108 0.613 -0.098 0.009 -0.209 -0.106 0.010 -0.094 -0.314 -0.087 -0.103
+ 12.650 -0.126 -0.395 0.493 -0.370 -0.268 -0.699 0.006 -0.328 -0.107 -0.365 0.159 -0.154
+ 13.149 0.064 -0.407 0.157 -0.194 -0.728 -0.648 0.014 -0.309 0.031 -0.278 0.197 -0.065
+ 13.162 0.165 -0.481 0.111 -0.156 -0.910 -0.619 -0.026 -0.310 0.131 -0.286 0.324 -0.129
+ 13.422 0.196 -0.525 0.145 -0.293 -0.909 -0.597 -0.007 -0.334 0.124 -0.240 0.265 -0.165
+ 13.577 -0.002 -0.365 0.231 -0.376 -0.856 -0.556 0.024 -0.361 0.051 -0.127 0.145 -0.113
+ 13.201 0.020 -0.302 0.372 -0.435 -0.761 -0.635 0.183 -0.502 0.040 -0.054 0.011 -0.053
+ 13.037 -0.064 -0.245 0.415 -0.380 -0.740 -0.578 0.066 -0.495 0.091 -0.150 0.056 -0.073
+ 12.731 -0.000 -0.269 0.477 -0.369 -0.735 -0.574 0.128 -0.668 0.153 -0.178 0.026 -0.099
+ 12.571 0.027 -0.275 0.447 -0.195 -0.811 -0.568 0.211 -0.780 0.106 -0.160 -0.079 -0.118
+ 12.435 0.128 -0.158 0.255 0.159 -0.822 -0.591 0.192 -0.773 0.048 -0.361 -0.063 -0.210
+ 11.801 0.628 -0.191 0.052 0.142 -0.446 -0.443 -0.137 -0.747 0.179 -0.416 -0.304 -0.200
+ 10.910 0.934 -0.023 -0.249 -0.012 -0.294 -0.163 -0.115 -0.814 0.016 -0.400 -0.044 -0.141
+ 10.367 0.968 0.227 -0.335 -0.239 -0.337 -0.063 -0.048 -0.773 -0.016 -0.440 -0.046 -0.093
+ 10.352 1.003 0.258 -0.317 -0.286 -0.372 -0.134 0.073 -0.791 -0.031 -0.426 -0.162 -0.101
+ 10.737 0.991 0.213 -0.327 -0.420 -0.365 -0.209 0.140 -0.847 -0.106 -0.398 -0.186 -0.058
+ 11.103 1.156 0.069 -0.432 -0.424 -0.358 -0.239 0.094 -1.005 -0.024 -0.264 -0.099 -0.084
+ 11.917 1.018 -0.100 -0.366 -0.389 -0.332 -0.358 -0.031 -0.864 0.033 -0.122 -0.034 -0.123
+ 12.248 1.008 -0.371 -0.447 -0.445 -0.332 -0.339 -0.202 -0.717 0.213 0.061 -0.024 -0.119
+ 12.745 0.865 -0.569 -0.466 -0.466 -0.291 -0.420 -0.314 -0.503 0.245 0.090 -0.150 -0.117
+ 13.115 0.712 -0.639 -0.439 -0.506 -0.364 -0.412 -0.380 -0.319 0.418 0.155 -0.277 -0.138
+ 13.409 0.531 -0.728 -0.285 -0.499 -0.370 -0.423 -0.391 -0.206 0.481 0.002 -0.367 -0.123
+ 13.585 0.468 -0.855 -0.285 -0.594 -0.402 -0.394 -0.224 -0.115 0.428 -0.254 -0.213 -0.073
+ 13.717 0.301 -0.745 -0.169 -0.698 -0.183 -0.617 -0.141 -0.095 0.435 -0.400 -0.143 -0.052
+ 13.375 0.319 -0.651 -0.189 -0.610 -0.229 -0.599 -0.186 -0.114 0.446 -0.376 -0.096 -0.020
+ 12.988 0.334 -0.597 -0.145 -0.639 -0.197 -0.764 -0.223 -0.180 0.617 -0.396 -0.057 0.033
+ 12.535 0.227 -0.393 -0.002 -0.577 -0.075 -0.849 -0.313 -0.460 0.648 -0.371 -0.104 0.049
+ 11.477 0.271 -0.213 0.042 -0.350 0.019 -0.613 -0.297 -0.544 0.315 -0.323 -0.235 -0.035
+ 11.818 0.215 -0.273 0.050 -0.372 0.129 -0.758 -0.247 -0.470 0.286 -0.442 -0.115 -0.042
+ 12.553 0.160 -0.348 0.058 -0.488 0.044 -0.833 -0.292 -0.349 0.401 -0.461 -0.067 0.034
+ 12.916 0.098 -0.373 0.034 -0.515 -0.094 -0.921 -0.245 -0.311 0.465 -0.478 -0.004 0.073
+ 13.169 0.076 -0.397 -0.008 -0.492 -0.238 -0.926 -0.241 -0.225 0.447 -0.432 -0.014 0.118
+ 13.244 0.175 -0.541 0.124 -0.461 -0.401 -0.839 -0.236 -0.187 0.340 -0.386 -0.111 0.101
+ 13.062 0.421 -0.653 -0.030 -0.101 -0.501 -0.850 -0.057 -0.321 0.159 -0.202 -0.149 -0.072
+ 12.504 0.822 -0.752 -0.298 0.146 -0.356 -0.976 -0.066 -0.203 -0.027 -0.219 0.061 -0.258
+ 11.701 1.095 -0.668 -0.416 0.233 -0.258 -0.963 -0.229 -0.201 -0.015 -0.307 0.140 -0.260
+ 11.096 1.342 -0.674 -0.529 0.248 -0.236 -0.826 -0.412 -0.214 0.029 -0.338 0.104 -0.163
+ 10.669 1.685 -0.674 -0.605 0.085 -0.092 -0.725 -0.451 -0.238 -0.096 -0.271 0.131 -0.152
+ 10.787 1.865 -0.760 -0.643 0.057 -0.193 -0.577 -0.362 -0.294 -0.215 -0.245 0.158 -0.177
+ 10.750 1.696 -0.623 -0.656 0.090 -0.242 -0.536 -0.249 -0.401 -0.266 -0.185 0.214 -0.187
+ 10.433 1.430 -0.544 -0.655 0.105 -0.315 -0.535 -0.300 -0.400 -0.396 -0.066 0.296 -0.209
+ 11.097 1.449 -0.575 -0.814 0.255 -0.539 -0.373 -0.278 -0.527 -0.298 -0.101 0.250 -0.299
+ 11.185 1.254 -0.438 -0.743 0.236 -0.465 -0.387 -0.209 -0.514 -0.263 0.082 0.056 -0.300
+ 10.754 1.249 -0.530 -0.658 0.187 -0.501 -0.394 -0.355 -0.510 -0.258 0.199 0.020 -0.380
+ 11.349 1.368 -0.741 -0.527 0.143 -0.610 -0.415 -0.461 -0.468 -0.141 0.183 -0.022 -0.457
+ 11.742 1.176 -0.688 -0.214 -0.008 -0.586 -0.436 -0.423 -0.371 -0.027 0.123 -0.199 -0.271
+ 12.146 0.835 -0.655 -0.071 -0.128 -0.428 -0.501 -0.499 -0.281 0.123 -0.183 -0.142 -0.144
+ 12.580 0.344 -0.459 0.004 -0.263 -0.295 -0.758 -0.376 -0.359 0.283 -0.306 -0.107 0.035
+ 12.789 0.202 -0.343 -0.029 -0.327 -0.258 -0.804 -0.304 -0.335 0.310 -0.428 -0.100 0.065
+ 12.404 0.127 -0.229 -0.019 -0.259 -0.143 -0.625 -0.291 -0.250 0.316 -0.517 -0.164 0.104
+ 11.887 -0.304 0.303 -0.221 -0.064 -0.116 -0.777 -0.112 -0.150 -0.060 -0.489 -0.114 -0.021
+ 11.184 -1.205 0.698 -0.239 0.271 -0.184 -0.685 -0.045 -0.259 -0.106 -0.461 -0.006 -0.056
+ 10.745 -1.534 1.060 -0.256 0.091 -0.157 -0.600 -0.119 -0.265 -0.106 -0.461 0.016 -0.035
+ 10.797 -1.605 1.126 -0.380 0.031 -0.147 -0.600 -0.112 -0.258 -0.100 -0.259 0.025 -0.113
+ 11.326 -1.329 0.939 -0.452 -0.076 0.023 -0.627 0.093 -0.026 -0.032 -0.367 -0.088 -0.140
+ 11.040 -1.319 0.765 -0.164 -0.243 0.176 -0.841 0.030 -0.082 -0.131 -0.277 0.103 0.102
+ 10.075 -0.726 0.486 0.265 -0.352 -0.021 -0.638 -0.150 0.242 -0.238 -0.193 0.083 0.078
+ 9.310 0.356 0.297 -0.024 -0.244 -0.319 -0.287 -0.103 0.070 0.014 -0.374 -0.084 -0.004
+ 9.182 0.409 0.273 0.171 0.302 -0.306 -0.175 -0.064 0.031 -0.244 -0.316 -0.225 -0.120
+ 9.544 0.593 0.180 0.146 0.238 -0.349 -0.076 -0.138 -0.084 -0.076 -0.254 -0.253 -0.277
+ 10.022 0.375 0.168 0.182 0.234 -0.296 -0.193 -0.110 -0.083 0.035 -0.126 -0.289 -0.280
+ 10.456 0.492 -0.153 0.368 0.311 -0.477 -0.126 -0.103 -0.192 -0.040 -0.128 -0.223 -0.244
+ 10.415 0.132 0.093 0.327 0.375 -0.364 -0.114 -0.027 -0.505 0.172 -0.203 -0.188 -0.284
+ 10.244 0.283 0.182 0.124 0.322 -0.407 -0.031 -0.020 -0.582 0.104 -0.195 -0.171 -0.143
+ 10.862 0.643 0.030 -0.197 0.158 -0.413 -0.185 -0.142 -0.473 0.133 -0.008 -0.265 -0.102
+ 11.350 0.769 -0.134 -0.293 0.079 -0.491 -0.418 -0.117 -0.610 0.274 0.017 -0.237 -0.058
+ 11.676 0.686 -0.023 -0.389 0.174 -0.414 -0.514 -0.110 -0.633 0.379 -0.079 -0.267 -0.038
+ 11.773 0.660 -0.127 -0.228 0.208 -0.472 -0.521 -0.109 -0.648 0.404 -0.087 -0.411 0.066
+ 12.067 0.521 -0.188 -0.169 0.175 -0.433 -0.531 -0.092 -0.613 0.312 -0.119 -0.397 -0.032
+ 11.773 0.569 -0.155 -0.168 0.190 -0.474 -0.492 -0.149 -0.647 0.337 -0.186 -0.357 -0.056
+ 11.621 0.673 -0.242 -0.166 0.281 -0.539 -0.488 -0.161 -0.676 0.311 -0.241 -0.363 -0.090
+ 11.638 0.697 -0.348 -0.029 0.316 -0.515 -0.491 -0.240 -0.681 0.218 -0.216 -0.380 -0.093
+ 11.801 0.665 -0.398 -0.045 0.181 -0.369 -0.494 -0.286 -0.649 0.147 -0.169 -0.507 0.026
+ 11.612 0.707 -0.307 -0.007 0.188 -0.283 -0.477 -0.113 -0.658 0.227 -0.306 -0.340 -0.064
+ 11.407 0.518 -0.194 -0.019 0.174 -0.239 -0.379 -0.188 -0.477 0.150 -0.207 -0.420 -0.094
+ 10.877 0.506 -0.224 -0.084 0.091 -0.257 -0.399 -0.104 -0.522 0.250 -0.105 -0.316 -0.091
+ 10.881 0.344 -0.229 -0.099 0.009 -0.330 -0.610 -0.099 -0.607 0.289 -0.108 -0.374 -0.076
+ 10.839 0.401 -0.430 -0.026 0.053 -0.382 -0.562 0.059 -0.382 0.213 -0.194 -0.405 -0.016
+ 11.632 0.315 -0.438 -0.049 -0.106 -0.272 -0.616 0.112 -0.489 0.200 -0.198 -0.340 -0.000
+ 11.981 0.227 -0.603 -0.123 -0.123 -0.479 -0.740 0.189 -0.511 0.218 -0.173 -0.344 0.085
+ 12.585 0.239 -0.560 -0.002 -0.127 -0.591 -0.762 0.219 -0.395 0.338 -0.108 -0.251 0.197
+ 12.855 0.230 -0.694 0.077 -0.219 -0.865 -0.623 0.178 -0.222 0.195 0.029 -0.200 0.239
+ 13.484 0.134 -0.560 0.117 -0.210 -0.851 -0.563 0.305 -0.210 0.101 0.025 -0.323 0.150
+ 13.206 0.206 -0.730 0.309 -0.393 -0.653 -0.519 0.313 -0.246 0.153 0.040 -0.169 0.051
+ 12.892 0.171 -0.787 0.486 -0.638 -0.545 -0.386 0.426 -0.341 0.272 0.006 -0.090 -0.056
+ 12.683 0.092 -0.575 0.418 -0.661 -0.603 -0.270 0.405 -0.421 0.355 -0.032 -0.148 -0.079
+ 12.343 0.280 -0.552 0.451 -0.690 -0.621 -0.166 0.361 -0.554 0.494 -0.170 -0.089 -0.145
+ 11.903 0.311 -0.300 0.241 -0.529 -0.512 0.024 0.128 -0.531 0.502 -0.220 -0.195 -0.086
+ 11.367 0.255 0.002 -0.062 -0.285 -0.436 -0.045 0.087 -0.386 0.372 -0.468 -0.104 0.017
+ 10.663 0.445 -0.127 -0.229 -0.016 -0.635 -0.111 0.150 -0.336 0.217 -0.306 -0.019 -0.066
+ 9.959 0.312 0.023 -0.110 0.203 -0.631 0.051 0.121 -0.281 0.060 -0.295 -0.016 -0.027
+ 9.032 -0.159 0.431 0.009 0.143 -0.690 0.050 0.002 -0.277 0.007 -0.382 -0.240 -0.103
+ 7.815 0.079 0.217 0.453 -0.371 -0.468 -0.299 0.163 -0.238 -0.070 -0.201 -0.173 -0.021
+ 7.406 -0.022 0.111 0.537 -0.471 -0.316 -0.156 0.188 -0.421 -0.385 -0.228 -0.087 -0.032
+ 7.195 -0.073 0.033 0.588 -0.394 -0.157 -0.163 0.086 -0.362 -0.208 -0.153 -0.101 -0.071
+ 7.153 0.040 0.121 0.675 -0.293 -0.089 -0.349 0.143 -0.420 -0.211 -0.120 -0.143 -0.027
+ 6.931 0.095 0.085 0.702 -0.222 -0.275 -0.503 -0.016 -0.343 -0.310 -0.199 -0.033 0.064
+ 6.609 0.171 0.122 0.649 -0.139 -0.169 -0.300 0.046 -0.427 -0.272 -0.348 -0.235 -0.071
+ 6.116 0.233 0.143 0.581 -0.026 -0.162 -0.340 -0.041 -0.253 -0.262 -0.305 -0.218 -0.076
+ 6.022 0.212 0.098 0.539 -0.159 -0.196 -0.426 -0.075 -0.320 -0.295 -0.167 -0.216 0.028
+ 6.255 0.334 -0.101 0.473 -0.082 -0.152 -0.382 0.045 -0.124 -0.250 -0.260 -0.077 0.060
+ 6.696 -0.094 -0.137 0.409 -0.236 0.055 -0.251 0.002 0.109 -0.189 -0.212 0.023 0.018
+ 6.713 0.065 -0.034 0.406 -0.262 -0.040 -0.365 -0.114 0.101 -0.158 -0.157 0.031 0.001
+ 6.496 0.443 0.137 0.256 -0.231 -0.091 -0.441 -0.091 -0.058 -0.360 -0.213 -0.173 0.075
+ 6.718 0.692 -0.041 0.302 -0.151 -0.134 -0.493 -0.281 0.038 -0.321 -0.350 -0.194 0.015
+ 6.449 0.841 -0.184 0.294 -0.054 -0.064 -0.719 -0.248 0.004 -0.345 -0.419 -0.297 -0.015
+ 6.566 0.659 -0.287 0.285 0.104 -0.098 -0.677 -0.285 -0.292 -0.279 -0.318 -0.208 -0.049
+ 6.563 0.635 -0.342 -0.024 -0.078 -0.074 -0.651 -0.347 -0.331 -0.062 -0.226 -0.128 -0.012
+ 6.460 0.615 -0.212 -0.259 -0.248 -0.066 -0.472 -0.093 -0.465 -0.254 -0.223 -0.133 0.055
+ 6.524 0.359 0.052 -0.020 -0.167 0.049 -0.312 0.009 -0.585 -0.157 -0.335 -0.136 -0.046
+ 6.595 0.446 0.142 0.102 -0.222 -0.143 -0.309 0.249 -0.429 -0.160 -0.253 -0.228 -0.199
+ 6.643 0.537 0.093 -0.051 -0.204 -0.135 -0.183 0.214 -0.433 -0.233 -0.298 -0.155 -0.079
+ 6.762 0.367 0.209 -0.100 -0.268 -0.024 -0.130 0.079 -0.426 -0.087 -0.307 -0.148 -0.189
+ 6.776 0.287 0.163 -0.019 -0.261 -0.054 0.044 0.108 -0.598 -0.325 -0.322 -0.123 -0.104
+ 7.054 0.291 0.146 -0.053 -0.402 -0.088 -0.089 0.046 -0.630 -0.296 -0.160 -0.019 0.017
+ 7.140 0.350 0.060 -0.351 -0.310 -0.042 -0.115 0.035 -0.465 -0.119 0.041 0.106 -0.130
+ 7.415 0.381 -0.041 -0.228 -0.353 -0.079 -0.191 -0.045 -0.329 0.028 0.030 -0.026 -0.277
+ 7.529 0.403 -0.012 -0.326 -0.229 -0.069 -0.199 -0.039 -0.422 -0.008 0.136 -0.075 -0.214
+ 7.598 0.291 -0.197 -0.224 -0.429 -0.171 -0.388 -0.037 -0.216 0.255 0.241 0.079 -0.321
+ 7.324 0.183 -0.081 -0.120 -0.330 -0.278 -0.446 0.013 -0.290 0.114 -0.051 -0.089 -0.240
+ 7.232 -0.057 -0.225 -0.127 -0.197 -0.190 -0.281 0.207 -0.311 0.081 0.020 -0.063 -0.269
+ 6.911 -0.211 0.015 -0.070 -0.106 -0.208 -0.278 0.129 -0.130 0.146 0.011 -0.153 -0.320
+ 7.492 -0.108 -0.031 0.031 -0.424 -0.268 -0.338 0.158 -0.226 0.010 0.098 0.047 -0.255
+ 7.714 -0.141 -0.232 -0.104 -0.335 -0.295 -0.353 0.192 -0.099 0.185 0.090 -0.083 -0.313
+ 7.897 -0.092 -0.251 -0.244 -0.440 -0.173 -0.319 0.142 0.028 0.290 0.048 -0.189 -0.237
+ 7.686 -0.202 -0.360 -0.367 -0.597 -0.196 -0.276 0.223 0.149 0.210 0.049 -0.030 -0.242
+ 7.890 -0.088 -0.342 -0.395 -0.489 -0.243 -0.337 0.204 0.001 0.097 0.020 0.041 -0.345
+ 8.050 -0.134 -0.297 -0.293 -0.389 -0.231 -0.366 0.286 0.048 0.001 -0.216 -0.016 -0.180
+ 7.889 -0.163 -0.268 -0.092 -0.298 -0.223 -0.454 0.239 0.284 0.057 -0.297 -0.015 -0.191
+ 7.800 -0.201 -0.177 0.051 -0.151 -0.223 -0.449 0.348 0.113 -0.038 -0.168 0.009 -0.231
+ 7.708 -0.342 -0.151 0.115 -0.174 -0.215 -0.357 0.424 0.062 0.025 -0.149 -0.011 -0.182
+ 7.794 -0.144 -0.058 -0.052 -0.310 -0.391 -0.409 0.366 0.170 0.025 -0.242 0.163 -0.061
+ 7.531 -0.300 -0.046 0.045 -0.272 -0.452 -0.391 0.319 0.056 0.014 -0.043 0.172 -0.130
+ 7.063 -0.621 -0.193 0.162 -0.219 -0.380 -0.296 0.314 -0.012 -0.032 -0.074 -0.003 -0.176
+ 6.984 -0.512 -0.321 0.165 -0.104 -0.458 -0.435 0.168 -0.118 0.110 0.031 -0.016 -0.165
+ 6.932 -0.660 -0.224 0.159 0.090 -0.367 -0.466 0.086 -0.124 0.073 0.195 0.116 -0.220
+ 6.888 -0.735 -0.212 0.007 -0.068 -0.211 -0.389 0.070 -0.063 0.008 0.178 -0.055 -0.132
+ 6.743 -0.809 -0.213 -0.075 -0.277 -0.385 -0.534 0.113 0.045 0.093 0.184 0.114 -0.114
+ 6.853 -0.796 -0.037 0.060 -0.089 -0.267 -0.210 0.216 -0.101 -0.072 0.191 0.036 -0.167
+ 6.291 -0.938 -0.015 0.121 -0.142 -0.162 -0.195 0.136 -0.141 0.068 0.241 0.116 -0.093
+ 6.490 -0.977 -0.188 0.179 -0.082 -0.331 -0.216 0.248 -0.084 0.005 0.154 0.148 -0.118
+ 6.704 -0.888 -0.105 0.135 -0.017 -0.377 -0.290 0.366 0.094 -0.055 0.205 0.018 -0.143
+ 6.522 -0.768 -0.287 0.025 -0.111 -0.231 -0.293 0.296 -0.187 -0.165 0.037 -0.014 -0.226
+ 6.466 -0.831 -0.327 -0.022 -0.166 -0.179 -0.320 0.250 -0.111 -0.076 0.044 0.199 -0.033
+ 6.375 -0.881 -0.344 0.138 -0.113 -0.289 -0.346 0.118 -0.101 -0.068 0.049 0.057 0.004
+ 6.709 -0.463 -0.258 0.082 -0.162 -0.361 -0.424 0.203 -0.154 -0.117 0.096 -0.019 -0.240
+ 7.387 -0.111 -0.162 0.055 -0.081 -0.274 -0.536 -0.020 -0.186 -0.180 -0.000 0.019 0.076
+ 7.900 0.095 -0.193 -0.272 -0.173 -0.183 -0.542 -0.189 -0.117 0.026 -0.018 -0.065 0.056
+ 8.039 0.231 -0.477 -0.386 -0.229 -0.350 -0.701 0.006 0.011 0.007 -0.017 -0.070 -0.106
+ 8.088 0.254 -0.388 -0.215 -0.380 -0.406 -0.724 -0.217 -0.003 0.096 0.150 -0.184 -0.081
+ 8.225 0.395 -0.336 -0.276 -0.327 -0.258 -0.559 -0.242 0.016 0.093 0.119 -0.085 -0.070
+ 8.426 0.192 -0.447 -0.159 -0.294 -0.273 -0.527 -0.110 -0.070 0.145 0.109 -0.021 -0.129
+ 8.488 0.347 -0.414 -0.194 -0.361 -0.332 -0.585 -0.385 -0.114 0.033 -0.093 0.040 -0.062
+ 8.585 0.391 -0.370 -0.175 -0.282 -0.316 -0.827 -0.362 -0.090 -0.078 -0.107 -0.029 -0.112
+ 8.432 0.313 -0.371 0.067 -0.285 -0.307 -0.717 -0.266 -0.042 0.034 -0.048 -0.043 -0.084
+ 8.407 0.309 -0.386 0.160 -0.169 -0.252 -0.654 -0.304 -0.156 0.049 -0.122 -0.181 -0.103
+ 8.443 0.128 -0.223 0.559 -0.283 -0.371 -0.659 -0.235 -0.037 0.032 -0.113 -0.142 -0.077
+ 8.124 0.058 -0.258 0.309 -0.394 -0.104 -0.598 -0.229 0.028 -0.013 0.051 0.063 -0.067
+ 7.723 0.354 -0.122 0.321 -0.169 -0.450 -0.560 -0.253 -0.063 0.019 -0.111 -0.024 -0.112
+ 7.079 0.052 -0.294 0.210 -0.093 -0.135 -0.518 -0.109 0.064 0.168 0.004 -0.071 -0.070
+ 7.195 0.229 -0.252 0.061 -0.130 -0.364 -0.588 -0.081 0.025 0.159 -0.002 -0.015 -0.108
+ 6.983 0.149 -0.300 0.106 -0.087 -0.202 -0.580 -0.207 -0.127 0.118 -0.242 -0.160 0.051
+ 7.173 -0.188 -0.324 0.076 0.011 -0.348 -0.454 -0.114 0.032 -0.033 -0.156 -0.070 -0.080
+ 7.451 -0.248 -0.127 0.060 0.017 -0.555 -0.546 -0.150 -0.015 -0.389 -0.175 0.013 -0.034
+ 7.419 -0.241 -0.162 0.091 -0.227 -0.370 -0.349 -0.380 0.048 -0.284 -0.376 0.020 -0.013
+ 7.305 -0.444 -0.187 0.505 -0.207 -0.230 -0.516 -0.292 -0.022 -0.257 -0.269 0.101 -0.166
+ 7.997 -0.280 -0.038 0.497 -0.382 -0.234 -0.659 -0.294 0.002 -0.297 -0.190 0.097 -0.263
+ 7.828 -0.466 -0.091 0.545 -0.414 -0.305 -0.566 -0.099 0.111 -0.220 -0.075 0.319 -0.220
+ 7.660 -0.300 0.025 0.643 -0.420 -0.313 -0.668 -0.165 -0.075 -0.131 0.033 0.297 -0.274
+ 7.686 -0.410 -0.066 0.575 -0.457 -0.273 -0.692 -0.179 -0.171 -0.178 0.049 0.289 -0.214
+ 7.851 -0.322 -0.159 0.487 -0.513 -0.226 -0.793 -0.240 -0.174 -0.209 -0.012 0.052 -0.228
+ 7.926 -0.218 -0.152 0.339 -0.650 -0.474 -0.731 -0.087 -0.228 -0.212 -0.109 0.089 -0.348
+ 7.190 -0.258 -0.177 0.328 -0.466 -0.454 -0.699 -0.062 -0.082 -0.084 -0.152 0.165 -0.144
+ 7.210 0.054 -0.136 0.218 -0.253 -0.250 -0.621 -0.009 -0.148 -0.187 -0.320 0.069 -0.233
+ 7.164 0.167 -0.150 0.262 -0.202 -0.242 -0.734 -0.078 -0.249 -0.207 -0.281 0.130 -0.223
+ 6.991 0.065 -0.104 0.425 -0.135 -0.156 -0.610 -0.118 -0.210 -0.350 -0.317 0.050 -0.173
+ 6.397 0.088 -0.158 0.273 -0.272 -0.160 -0.628 -0.160 -0.196 -0.362 -0.201 0.146 -0.259
+ 6.365 0.313 -0.182 0.169 -0.125 -0.166 -0.578 -0.195 -0.067 -0.197 -0.289 0.096 -0.092
+ 6.560 0.082 -0.174 0.275 -0.136 -0.273 -0.705 -0.135 -0.160 -0.237 -0.186 0.098 -0.180
+ 6.315 0.148 -0.115 0.279 -0.210 -0.247 -0.507 -0.140 -0.248 -0.230 -0.338 0.110 -0.179
+ 5.918 0.239 -0.189 0.162 -0.122 -0.343 -0.516 0.013 -0.221 -0.104 -0.185 -0.052 -0.085
+ 5.664 0.187 -0.175 0.168 -0.101 -0.318 -0.451 0.029 -0.199 -0.242 -0.236 0.153 -0.236
+ 5.922 0.089 -0.182 0.192 0.065 0.011 -0.698 -0.122 0.016 -0.044 -0.172 0.012 -0.222
+ 5.996 -0.031 -0.356 0.166 0.052 -0.028 -0.589 -0.139 -0.079 -0.215 -0.244 0.260 0.025
+ 5.731 0.204 -0.273 0.050 -0.164 -0.087 -0.509 -0.005 -0.026 -0.130 -0.273 -0.194 -0.169
+ 5.826 0.241 -0.282 0.046 -0.243 0.044 -0.498 -0.052 0.116 -0.012 -0.248 -0.188 -0.199
+ 6.009 0.390 -0.507 0.067 -0.290 -0.225 -0.493 0.095 0.174 0.102 -0.264 -0.283 -0.110
+ 6.077 0.299 -0.603 -0.133 -0.224 0.052 -0.626 -0.060 0.172 0.146 -0.148 -0.279 -0.199
+ 6.589 -0.009 -0.585 -0.004 -0.290 0.124 -0.684 -0.017 0.289 0.187 -0.316 -0.250 -0.055
+ 6.868 -0.031 -0.570 0.010 -0.278 0.126 -0.728 -0.022 0.300 0.293 -0.236 -0.189 0.126
+ 7.042 0.169 -0.453 0.020 -0.264 -0.044 -0.671 -0.028 0.152 0.379 -0.148 -0.022 -0.078
+ 6.390 0.362 -0.362 0.162 -0.206 -0.196 -0.687 -0.025 0.119 0.313 -0.252 -0.088 0.017
+ 6.002 0.461 -0.189 0.209 -0.065 -0.117 -0.740 -0.033 -0.048 0.082 -0.306 -0.156 -0.078
+ 5.610 0.495 -0.192 -0.036 -0.201 -0.329 -0.655 -0.142 -0.135 0.037 -0.350 -0.187 -0.177
+ 5.168 0.313 -0.417 -0.083 -0.063 -0.389 -0.487 -0.061 0.037 0.196 -0.328 -0.226 -0.096
+ 5.175 0.395 -0.230 -0.127 -0.000 -0.241 -0.238 -0.116 0.010 0.199 -0.245 -0.147 0.036
+ 5.807 -0.203 0.098 0.154 -0.141 0.048 -0.444 -0.170 -0.009 -0.025 -0.086 -0.186 -0.088
+ 5.161 0.030 0.115 0.145 -0.177 -0.085 -0.246 -0.179 -0.094 -0.085 -0.053 -0.131 -0.192
+ 4.697 -0.011 -0.023 0.175 -0.167 -0.087 -0.185 -0.268 -0.236 -0.124 -0.143 -0.125 -0.035
+ 5.004 -0.111 -0.062 0.315 -0.179 -0.039 -0.298 -0.216 -0.106 -0.033 -0.080 0.021 -0.039
+ 5.352 -0.100 0.168 0.491 -0.215 -0.069 -0.354 -0.156 -0.165 -0.184 -0.209 -0.180 0.048
+ 5.235 -0.168 -0.159 0.448 -0.029 -0.068 -0.376 -0.143 -0.244 -0.177 -0.208 -0.236 0.002
+ 5.259 -0.121 -0.253 0.234 -0.255 -0.315 -0.180 -0.115 -0.223 -0.300 -0.246 -0.138 -0.078
+ 5.420 -0.079 -0.358 0.321 -0.221 -0.107 -0.060 -0.125 -0.101 -0.338 -0.236 -0.205 -0.053
+ 5.818 -0.168 -0.418 0.285 -0.294 -0.082 -0.046 0.165 -0.112 -0.277 -0.169 -0.137 -0.144
+ 6.006 -0.159 -0.441 0.402 -0.286 -0.070 -0.079 0.096 -0.163 -0.248 -0.164 -0.334 -0.377
+ 6.363 0.024 -0.236 0.441 -0.499 -0.379 -0.200 0.188 -0.043 -0.054 -0.189 -0.338 -0.374
+ 6.651 0.060 -0.557 0.258 -0.564 -0.236 -0.346 0.113 -0.118 0.042 0.020 -0.131 -0.307
+ 6.061 0.092 -0.480 0.304 -0.532 -0.170 -0.214 0.113 -0.185 0.012 -0.081 -0.171 -0.076
+ 6.362 -0.039 -0.421 0.347 -0.712 -0.196 -0.182 0.183 -0.088 -0.021 -0.187 -0.179 -0.228
+ 6.397 -0.064 -0.406 0.274 -0.691 -0.295 0.018 0.207 -0.106 0.076 -0.182 -0.126 -0.188
+ 6.505 0.027 -0.147 0.267 -0.848 -0.277 -0.068 0.240 -0.172 -0.014 -0.251 -0.105 -0.204
+ 6.138 0.075 -0.008 0.112 -0.822 -0.098 -0.011 0.243 -0.160 -0.127 -0.353 -0.040 -0.224
+ 5.785 0.000 0.040 0.273 -0.642 -0.200 -0.099 0.022 -0.124 0.153 -0.189 -0.057 -0.133
+ 5.528 -0.106 -0.171 0.109 -0.679 -0.251 -0.033 -0.106 -0.078 0.160 -0.274 -0.099 -0.102
+ 5.320 0.101 -0.208 0.069 -0.419 -0.078 -0.048 0.027 -0.163 0.039 -0.115 -0.126 -0.116
+ 5.367 0.082 -0.320 0.335 -0.220 -0.324 -0.149 0.082 -0.036 -0.044 -0.294 -0.160 -0.120
+ 5.978 -0.364 -0.467 0.241 0.045 -0.046 0.019 0.101 -0.073 -0.105 -0.200 -0.002 -0.015
+ 6.574 -0.852 -0.237 -0.024 -0.068 -0.118 -0.151 0.047 0.063 -0.182 -0.183 0.078 -0.031
+ 7.061 -1.199 -0.174 0.109 -0.113 -0.071 -0.171 -0.239 -0.114 -0.132 -0.298 -0.031 0.009
+ 7.522 -1.284 -0.124 0.271 -0.202 -0.227 -0.183 -0.042 -0.144 -0.160 -0.191 -0.023 -0.208
+ 7.824 -1.228 -0.081 0.001 -0.237 -0.161 -0.282 0.025 0.141 -0.183 -0.123 -0.025 -0.052
+ 8.181 -1.266 -0.106 0.237 -0.030 -0.206 -0.183 -0.067 0.035 -0.040 -0.043 0.044 -0.114
+ 8.270 -1.145 -0.242 0.168 -0.092 -0.264 -0.204 -0.013 -0.053 -0.203 -0.403 0.075 0.037
+ 8.271 -0.677 -0.448 0.038 -0.037 -0.001 -0.326 0.112 -0.105 -0.108 -0.327 0.180 0.065
+ 7.692 -0.106 -0.281 -0.021 0.101 -0.055 -0.169 0.009 -0.021 0.002 -0.280 0.100 -0.017
+ 9.490 0.656 0.349 0.040 -0.182 -0.423 -0.560 -0.118 -0.020 0.166 -0.445 0.113 -0.068
+ 11.381 0.638 0.115 -0.196 -0.271 -0.350 -0.777 -0.154 -0.087 0.291 -0.401 0.139 -0.084
+ 12.162 0.634 -0.159 -0.374 -0.299 -0.281 -1.048 0.031 -0.161 0.369 -0.405 0.160 -0.191
+ 10.983 0.905 -0.189 -0.117 -0.265 -0.473 -1.138 0.136 0.177 0.247 -0.272 -0.142 -0.176
+ 11.104 0.753 -0.241 -0.025 -0.312 -0.418 -0.964 0.148 -0.037 0.330 -0.307 -0.154 -0.082
+ 11.063 0.714 -0.277 -0.243 -0.228 -0.353 -0.875 0.060 0.016 0.372 -0.210 -0.152 -0.278
+ 11.284 0.691 -0.354 -0.353 -0.233 -0.306 -0.852 0.102 -0.007 0.403 -0.186 -0.164 -0.256
+ 11.747 0.694 -0.458 -0.415 -0.320 -0.253 -0.802 0.141 -0.045 0.437 -0.221 -0.206 -0.224
+ 12.247 0.636 -0.525 -0.441 -0.318 -0.293 -0.690 0.118 -0.156 0.568 -0.341 -0.156 -0.266
+ 12.476 0.512 -0.535 -0.430 -0.353 -0.242 -0.601 -0.012 -0.077 0.535 -0.299 -0.236 -0.245
+ 12.448 0.578 -0.633 -0.388 -0.368 -0.297 -0.468 -0.062 -0.132 0.571 -0.299 -0.233 -0.266
+ 12.147 0.586 -0.573 -0.457 -0.348 -0.321 -0.413 -0.068 -0.153 0.593 -0.262 -0.227 -0.330
+ 12.035 0.551 -0.505 -0.493 -0.352 -0.325 -0.380 -0.091 -0.163 0.567 -0.206 -0.208 -0.348
+ 12.110 0.607 -0.532 -0.478 -0.394 -0.295 -0.339 -0.171 -0.137 0.538 -0.147 -0.222 -0.351
+ 12.044 0.744 -0.619 -0.383 -0.456 -0.199 -0.423 -0.103 -0.221 0.525 -0.133 -0.175 -0.395
+ 12.060 0.698 -0.518 -0.350 -0.492 -0.215 -0.331 -0.132 -0.259 0.514 -0.140 -0.111 -0.399
+ 11.845 0.784 -0.557 -0.352 -0.528 -0.260 -0.134 -0.154 -0.313 0.451 -0.116 0.024 -0.414
+ 11.590 0.739 -0.418 -0.459 -0.568 -0.285 0.029 -0.244 -0.277 0.364 -0.082 0.057 -0.301
+ 11.363 0.669 -0.336 -0.494 -0.585 -0.411 0.186 -0.191 -0.241 0.139 -0.083 0.129 -0.128
+ 10.682 0.752 -0.099 -0.424 -0.633 -0.642 0.424 -0.011 0.070 -0.339 -0.156 0.132 0.026
+ 9.739 0.487 0.361 -0.304 -0.461 -0.569 0.353 -0.093 0.154 -0.231 -0.382 0.016 -0.014
+ 8.832 -0.141 0.077 0.003 -0.185 -0.434 0.136 -0.117 0.004 0.086 -0.296 0.009 -0.166
+ 8.116 -0.266 0.054 -0.158 -0.155 -0.087 0.140 0.035 0.090 0.005 -0.328 -0.007 -0.125
+ 8.037 -0.333 0.196 -0.145 -0.148 0.071 0.010 0.172 0.105 0.144 -0.253 0.010 -0.092
+ 8.008 -0.466 0.478 0.096 -0.002 -0.132 -0.161 -0.028 -0.120 0.145 -0.141 0.116 0.071
+ 8.129 -0.640 0.527 0.158 -0.097 -0.284 -0.000 -0.052 -0.138 0.106 -0.067 0.118 -0.154
+ 8.079 -0.757 0.487 0.124 0.079 -0.225 0.207 -0.038 -0.227 0.031 -0.175 -0.147 -0.203
+ 7.901 -0.652 0.416 0.132 -0.038 -0.254 0.105 0.003 -0.162 0.178 -0.212 -0.134 -0.085
+ 7.547 -0.836 0.472 0.322 -0.158 -0.145 0.054 -0.077 -0.145 0.179 -0.182 0.102 0.013
+ 7.882 -0.558 0.605 0.188 -0.172 -0.206 0.035 0.035 -0.140 0.142 -0.252 -0.200 -0.064
+ 8.104 -0.265 0.410 -0.149 -0.310 -0.134 0.141 0.029 0.059 0.225 -0.184 -0.206 -0.096
+ 8.017 -0.124 0.252 -0.318 -0.299 -0.178 0.134 -0.087 -0.007 0.254 -0.012 -0.186 -0.103
+ 8.206 0.120 -0.184 -0.634 -0.492 -0.032 -0.021 -0.121 0.010 0.337 -0.077 -0.158 -0.065
+ 8.531 0.353 -0.262 -0.537 -0.433 -0.179 -0.223 -0.133 0.139 0.417 -0.073 -0.125 -0.147
+ 8.553 0.406 -0.328 -0.673 -0.465 -0.220 -0.239 -0.194 0.158 0.311 -0.192 -0.133 -0.111
+ 8.389 0.462 -0.284 -0.593 -0.537 -0.107 -0.170 -0.067 0.204 0.333 -0.254 0.053 -0.023
+ 8.263 0.472 -0.373 -0.450 -0.564 -0.146 -0.136 -0.136 0.126 0.330 -0.176 0.005 -0.013
+ 8.356 0.494 -0.296 -0.387 -0.511 -0.128 -0.282 -0.216 0.064 0.401 -0.121 -0.011 -0.009
+ 8.339 0.587 -0.300 -0.333 -0.536 -0.295 -0.481 -0.177 0.037 0.459 -0.126 -0.213 -0.063
+ 8.031 0.514 -0.206 -0.367 -0.595 -0.241 -0.363 -0.223 0.155 0.403 -0.157 -0.140 -0.091
+ 7.571 0.263 -0.276 -0.373 -0.516 -0.215 -0.447 -0.307 0.172 0.346 -0.139 -0.308 -0.084
+ 7.140 0.235 -0.255 -0.404 -0.449 -0.079 -0.077 -0.127 0.106 0.301 -0.174 -0.200 -0.099
+ 7.241 0.333 -0.270 -0.410 -0.435 -0.127 -0.211 -0.245 0.090 0.421 -0.060 -0.154 0.028
+ 7.488 0.466 -0.182 -0.434 -0.389 -0.085 -0.165 -0.165 0.026 0.274 0.041 -0.148 -0.096
+ 7.220 0.154 -0.286 -0.415 -0.279 -0.182 -0.189 -0.143 0.003 0.271 0.005 0.077 -0.134
+ 7.313 0.269 -0.136 -0.277 -0.163 -0.060 -0.183 -0.225 -0.117 0.139 -0.116 -0.025 -0.243
+ 7.582 0.255 -0.054 -0.116 -0.314 -0.162 -0.235 -0.194 -0.195 0.205 -0.015 -0.108 -0.178
+ 7.814 -0.010 0.071 -0.051 -0.306 -0.206 -0.331 -0.248 -0.303 0.295 -0.182 -0.037 -0.088
+ 7.978 -0.580 0.257 0.379 -0.365 -0.196 -0.439 -0.408 -0.446 0.368 -0.331 0.089 0.012
+ 8.244 -0.499 0.252 0.259 -0.753 -0.373 -0.498 -0.463 -0.395 0.466 -0.211 0.277 0.130
+ 8.666 -0.447 0.387 0.253 -0.686 -0.254 -0.396 -0.485 -0.598 0.308 -0.227 0.325 0.172
+ 9.145 -0.287 0.284 0.322 -0.802 -0.318 -0.424 -0.442 -0.538 0.331 -0.189 0.217 -0.012
+ 9.601 -0.401 0.272 0.413 -0.813 -0.274 -0.480 -0.421 -0.571 0.415 -0.175 0.224 0.067
+ 9.640 -0.471 0.280 0.208 -0.805 -0.422 -0.517 -0.325 -0.526 0.440 -0.162 0.211 0.079
+ 9.684 -0.282 0.370 0.115 -0.761 -0.433 -0.465 -0.361 -0.577 0.380 -0.249 0.128 -0.029
--- /dev/null
+ 5.445 4.866 5.182 4.222 3.622 3.989 3.585 4.087 3.504 2.488 5.713 5.596 4.862 5.476 5.112 4.736 5.000 5.725 6.217 5.842 6.497 7.063 8.006 8.840 8.430 7.825 9.400 9.372 9.797 9.713 10.279 9.907 8.844 10.395 10.035 8.038
+ 4.687 3.182 3.617 5.513 5.547 4.356 4.459 3.852 3.775 3.936 4.128 4.845 5.464 4.963 5.367 4.923 5.403 5.075 6.013 6.028 6.838 7.012 7.997 7.963 7.163 7.912 10.142 10.293 9.802 10.208 10.521 10.089 9.910 10.079 10.061 8.103
+ 4.436 4.279 4.150 5.808 5.801 4.281 6.043 5.211 4.746 4.782 5.875 6.146 4.791 4.644 5.565 5.045 5.596 5.718 5.423 5.788 7.167 7.456 8.387 7.416 6.927 8.003 10.185 9.532 9.443 10.468 10.040 9.926 10.079 10.422 9.709 7.279
+ 4.426 4.031 4.260 4.734 5.192 5.647 5.184 5.047 3.913 4.494 6.095 5.160 5.107 6.133 5.685 5.805 6.515 6.730 5.942 6.395 4.902 6.872 8.456 8.513 7.932 9.979 9.670 10.115 10.308 10.047 9.995 9.712 9.059 9.628 9.393 7.115
+ 4.782 3.675 4.222 4.435 4.793 5.097 5.611 3.973 4.906 5.536 4.398 5.258 4.983 4.811 4.458 5.609 6.298 6.571 6.049 6.502 5.943 6.851 7.820 8.709 9.611 10.163 7.587 9.405 9.727 9.170 9.185 9.230 9.501 9.173 8.745 7.368
+ 2.447 4.772 4.341 5.346 5.312 5.370 4.741 4.286 4.119 5.750 5.062 4.361 4.816 4.397 4.129 6.221 6.021 6.149 6.386 6.510 6.547 8.040 9.006 9.044 9.968 10.444 7.588 8.911 9.383 8.805 10.230 9.487 8.854 10.029 9.792 7.628
+ 3.237 4.369 4.170 5.290 4.843 3.875 4.740 4.541 3.528 5.005 5.160 5.392 5.548 5.149 4.724 5.305 5.317 5.335 5.889 6.716 6.711 8.052 8.931 7.317 10.351 10.326 8.091 7.816 7.747 9.027 10.012 9.402 9.085 9.627 9.758 7.079
+ 2.993 4.690 5.633 5.079 4.809 5.175 3.974 3.345 3.369 4.785 3.864 2.872 3.953 4.373 5.577 5.765 4.773 6.333 7.351 6.408 6.193 6.678 8.569 7.984 9.283 8.048 7.556 8.579 8.536 8.726 8.919 8.208 8.232 9.704 9.981 6.825
+ 3.828 4.192 4.773 5.132 5.035 5.223 5.383 4.251 5.298 4.827 3.755 4.707 2.821 4.834 5.399 6.185 6.088 6.540 6.909 6.752 6.352 6.711 8.005 8.525 8.206 7.619 7.910 8.739 8.520 9.169 9.033 8.873 8.204 8.612 8.422 6.687
+ 4.028 3.918 4.048 3.641 4.530 4.087 4.775 5.036 4.374 3.794 3.783 4.554 3.901 5.344 5.664 6.083 7.194 8.064 7.246 6.929 7.058 6.992 8.306 7.850 8.116 7.649 8.121 7.831 7.821 8.324 9.144 8.481 8.274 8.932 9.055 7.076
+ 2.580 2.100 4.247 5.531 4.936 4.394 4.209 4.616 3.627 3.353 4.697 5.643 4.771 5.342 5.996 6.637 5.246 6.435 5.868 6.186 6.410 6.502 7.074 7.797 8.358 7.519 6.839 7.942 8.731 8.277 8.360 7.900 8.540 8.728 9.271 7.125
+ 5.852 4.477 4.245 3.885 3.799 5.539 5.227 4.717 5.258 5.048 4.368 4.816 4.182 3.540 5.092 5.337 5.532 6.013 6.167 5.907 5.644 6.152 8.026 7.314 6.481 6.107 7.100 8.283 7.266 8.314 7.919 7.091 8.244 8.720 8.622 6.548
+ 8.666 8.620 7.728 7.142 6.015 5.399 5.248 5.307 4.860 4.196 4.058 4.497 4.549 5.901 5.395 4.036 4.623 5.389 5.146 5.134 5.188 6.303 7.120 6.745 6.757 7.870 8.349 8.042 7.063 7.821 7.756 7.073 7.237 8.310 8.967 6.665
+ 7.718 7.702 6.738 6.352 4.159 4.932 4.680 5.582 5.405 4.952 5.299 3.646 4.630 4.951 4.287 5.166 4.857 5.163 4.471 4.841 5.690 6.198 5.370 6.575 5.832 6.016 6.009 7.112 6.893 6.181 6.062 6.803 5.882 7.139 7.002 5.662
+ 6.005 6.614 6.286 4.768 4.121 4.687 4.773 5.463 5.289 5.843 4.878 3.342 4.569 5.123 5.085 4.630 5.498 5.223 4.976 4.928 5.078 5.489 5.334 5.164 6.109 7.097 6.276 5.991 6.569 6.419 6.338 7.063 6.295 7.310 7.496 5.362
+ 5.544 4.915 4.305 4.311 5.537 5.315 5.051 3.357 3.230 4.409 4.173 4.709 4.278 4.828 4.982 4.271 4.756 4.704 5.513 5.206 4.407 5.169 5.901 5.834 6.417 6.453 6.178 5.299 5.957 6.190 5.830 6.570 6.211 6.686 7.462 5.122
+ 5.700 6.386 6.452 4.715 4.360 4.942 4.709 4.289 5.068 4.350 3.846 3.252 4.033 4.937 4.836 5.368 5.730 4.997 4.706 4.480 4.234 5.076 6.440 5.898 5.242 5.086 4.323 4.776 4.332 4.523 5.544 5.667 5.198 5.548 5.921 4.100
+ 3.723 5.358 4.916 5.268 5.408 4.929 5.108 5.600 4.524 3.194 3.551 3.709 2.540 2.777 4.010 5.417 4.688 4.264 4.935 5.053 3.744 4.737 5.871 4.553 5.034 3.649 3.838 4.919 3.756 4.761 5.192 5.248 4.374 4.435 4.301 3.729
+ 4.620 4.556 3.447 2.739 3.785 5.446 5.693 3.332 3.861 4.479 3.109 3.597 3.500 3.667 5.003 5.765 5.423 3.908 4.315 4.455 4.426 3.360 5.231 3.838 3.912 3.808 3.319 3.436 3.627 3.877 4.305 3.443 3.825 2.808 3.572 2.645
+ 3.562 2.868 3.485 4.213 4.251 5.787 5.287 4.403 2.633 2.742 3.246 3.891 4.735 4.300 4.046 5.447 5.330 3.902 3.202 4.238 5.641 3.636 3.630 3.881 4.149 3.699 3.696 3.842 4.234 3.385 4.122 3.486 2.772 2.677 3.326 2.601
+ 4.118 3.532 4.910 6.078 4.566 5.197 4.912 5.128 4.551 4.571 4.374 4.714 4.071 4.925 3.857 5.271 4.607 4.402 3.614 3.030 4.234 3.789 3.983 4.037 4.283 4.537 3.953 3.958 4.197 4.177 3.861 3.164 3.754 3.367 3.280 2.281
+ 5.210 4.980 5.752 6.372 5.541 5.119 3.400 3.906 4.829 5.019 4.794 4.585 3.678 4.344 4.193 5.349 4.549 3.286 3.967 4.194 4.654 3.399 4.201 4.360 3.197 4.257 3.864 3.833 3.946 3.364 3.304 3.520 3.384 4.436 4.679 3.427
+ 5.011 4.933 6.189 6.388 5.553 6.516 5.945 4.100 3.872 2.622 4.079 4.534 1.895 3.600 4.099 4.734 5.071 4.775 3.556 4.040 3.027 3.213 4.141 4.882 3.291 3.449 3.498 3.613 3.934 4.126 3.427 2.799 3.358 2.685 2.884 2.668
+ 5.120 6.108 5.394 5.328 6.461 6.674 6.450 4.972 4.018 2.144 3.921 3.177 3.021 5.161 5.410 3.575 4.465 4.810 3.899 3.362 3.542 3.571 4.432 3.588 4.136 3.712 4.368 2.768 3.105 3.652 3.695 3.246 3.446 3.380 4.222 4.439
+ 8.050 7.389 7.308 7.689 7.281 7.472 7.174 7.355 6.806 6.380 6.416 6.105 6.414 5.724 5.967 5.909 5.360 5.450 4.891 4.289 6.191 5.925 5.502 6.485 8.043 9.436 10.000 9.025 9.015 8.857 8.529 8.611 8.509 8.654 8.559 7.711
+ 11.927 10.668 10.070 12.057 11.979 9.877 11.003 10.394 8.632 9.732 8.555 7.910 8.091 7.596 7.364 7.486 7.031 7.301 7.741 8.959 9.527 9.396 7.923 8.275 9.659 11.668 12.368 10.725 11.107 10.575 10.244 10.413 10.095 10.374 10.310 9.274
+ 12.450 12.823 12.642 13.615 14.168 13.714 12.123 11.388 11.122 10.783 9.938 8.705 8.029 8.012 8.212 8.554 8.669 9.210 9.952 11.707 13.165 12.167 10.657 9.800 10.095 11.406 12.026 10.853 10.016 10.108 11.810 11.993 10.617 8.241 9.333 9.518
+ 12.154 13.533 12.929 14.637 15.020 15.685 13.760 12.581 12.066 11.506 10.927 9.800 9.575 9.439 9.480 9.634 10.123 10.649 11.649 13.561 14.992 13.986 12.440 11.895 12.458 13.770 14.021 12.833 12.054 12.351 14.068 14.481 13.324 10.815 11.103 11.596
+ 12.724 14.196 13.436 15.054 15.830 16.934 14.894 13.207 13.523 12.861 12.591 11.226 11.389 11.099 11.033 11.050 11.190 11.707 12.760 15.012 16.745 15.169 13.651 13.282 13.910 15.289 15.187 13.646 12.759 13.501 15.585 15.782 15.128 12.957 11.366 12.268
+ 13.209 14.503 13.841 15.216 16.851 17.853 15.769 14.192 14.547 13.649 12.977 12.233 11.975 11.922 11.828 11.883 12.137 12.661 13.997 16.138 17.127 15.448 14.291 13.858 14.394 15.380 14.340 13.181 12.934 13.561 15.225 15.368 15.238 13.057 10.307 10.881
+ 13.464 14.609 14.041 15.052 17.353 18.296 16.772 15.676 15.116 14.085 13.197 13.128 12.329 12.452 12.372 12.539 12.801 13.367 14.695 16.649 17.334 16.288 14.809 14.790 15.520 15.937 14.301 13.050 13.211 13.700 14.886 15.489 15.821 13.699 9.910 10.640
+ 13.620 14.484 14.106 14.745 17.308 18.073 17.673 16.632 15.100 14.477 13.634 13.475 12.519 12.549 12.536 12.739 13.090 13.796 14.842 17.138 17.904 16.497 15.375 15.515 16.324 15.612 13.992 12.851 13.117 13.481 14.584 15.798 16.135 14.027 10.090 10.583
+ 13.712 14.386 14.118 14.870 16.861 17.286 18.071 17.180 14.774 14.680 13.994 13.663 12.779 12.550 12.731 12.907 13.395 14.082 15.282 17.328 17.496 16.237 15.646 15.951 15.478 13.811 12.379 11.711 12.422 13.456 14.517 13.992 14.147 11.597 9.368 8.579
+ 13.789 14.324 14.272 14.856 16.602 17.015 18.478 17.439 15.459 14.922 14.229 13.747 13.214 13.033 13.179 13.549 14.285 15.377 16.478 17.696 16.479 16.008 16.312 16.362 14.921 13.201 12.111 12.118 12.583 13.616 13.816 12.632 13.090 11.707 9.599 9.154
+ 13.974 14.341 14.439 14.964 16.628 17.544 18.873 17.488 15.712 15.545 14.289 13.891 13.444 13.580 13.955 14.851 14.992 17.359 16.892 16.266 15.423 15.488 16.667 16.203 14.105 12.677 12.040 12.266 13.118 14.843 14.188 12.910 13.623 12.627 10.351 6.909
+ 14.142 14.176 14.568 14.897 16.791 18.019 18.684 16.580 15.384 15.450 14.518 13.999 13.793 14.202 14.592 16.764 16.136 16.002 14.898 13.753 14.058 14.958 16.395 15.801 13.340 12.342 11.155 11.562 12.691 14.752 13.950 12.676 13.871 12.894 10.518 7.463
+ 13.996 13.962 14.406 15.329 17.078 18.053 18.130 15.480 14.974 14.861 14.467 14.244 14.312 15.741 16.640 16.242 14.125 13.334 12.759 12.466 12.872 13.906 15.940 15.295 12.810 12.003 10.678 10.264 11.519 13.992 13.065 11.702 12.655 12.062 9.801 6.553
+ 13.718 13.793 14.130 15.579 17.091 17.346 17.396 15.495 14.408 14.281 14.226 14.333 14.820 16.284 15.765 14.241 12.675 11.798 11.676 11.953 12.057 13.069 14.872 14.533 11.955 11.149 10.421 8.929 10.175 12.976 12.666 10.920 11.892 11.478 9.713 7.366
+ 13.533 13.561 14.141 15.769 17.380 16.877 16.581 15.365 14.628 14.118 13.915 14.272 15.003 16.945 15.805 13.765 12.676 11.772 11.606 12.151 12.085 13.237 14.790 13.855 11.378 10.906 10.705 8.280 9.631 12.530 12.690 10.957 11.850 11.342 9.157 4.818
+ 13.313 13.829 14.350 16.038 17.494 16.770 16.497 15.308 14.622 14.194 13.567 13.892 14.131 16.580 16.154 14.281 13.032 12.056 11.822 11.997 12.233 13.596 15.089 14.086 11.570 10.863 11.386 8.703 9.575 12.474 13.124 11.363 12.291 12.040 9.843 5.038
+ 13.817 14.018 14.493 15.789 17.581 16.760 16.350 15.072 14.482 14.030 13.176 13.722 13.670 15.048 15.870 16.321 14.274 12.794 12.365 12.289 12.766 14.088 15.485 14.181 12.012 11.298 11.463 9.482 9.760 12.688 13.792 11.876 12.380 12.352 11.503 6.134
+ 13.740 14.160 14.540 15.701 17.640 16.812 16.343 15.054 14.495 14.020 13.191 13.348 13.287 13.497 15.126 15.663 16.493 15.183 13.700 13.414 13.766 15.097 16.374 14.449 12.461 11.597 11.845 10.199 10.000 12.597 14.311 12.280 12.367 12.084 10.977 7.340
+ 14.055 14.163 14.364 15.567 17.565 16.613 16.201 14.851 14.243 13.716 13.085 12.911 12.692 12.799 13.281 14.249 15.702 16.222 16.325 15.036 14.729 15.913 17.296 15.073 13.130 12.127 12.320 11.003 10.603 12.782 14.481 13.594 13.444 13.584 11.803 8.802
+ 13.903 14.094 14.386 15.195 17.498 16.693 16.160 14.935 14.219 13.662 12.935 12.714 12.498 12.496 12.562 13.164 13.533 15.169 16.329 16.835 16.724 16.800 17.923 16.903 13.957 12.824 12.827 11.747 11.071 13.256 15.090 14.203 13.883 13.313 12.272 9.173
+ 13.772 14.079 14.303 14.968 17.417 16.786 16.332 15.149 14.454 13.772 12.900 12.983 12.474 12.333 12.382 12.482 13.027 13.671 15.291 16.835 17.866 17.503 18.099 17.988 15.985 13.989 13.502 12.625 11.996 13.986 15.868 15.022 14.540 14.229 12.992 9.851
+ 13.690 13.878 13.984 14.822 17.104 16.561 16.735 15.175 14.265 13.605 12.955 12.844 12.284 12.209 12.071 12.142 12.389 13.287 14.204 16.022 17.903 17.384 17.027 17.274 16.659 15.006 13.941 12.956 12.087 13.747 15.935 15.040 14.124 13.915 12.434 9.776
+ 13.626 13.829 13.798 14.521 16.732 16.505 17.082 15.300 14.261 13.677 13.222 12.793 12.327 12.068 11.942 12.200 12.084 13.191 13.622 15.188 17.462 17.126 15.927 16.024 16.484 15.909 14.666 13.728 12.348 13.468 15.655 14.875 13.681 14.389 12.861 10.890
+ 13.647 13.934 13.739 14.240 16.557 16.516 17.459 15.955 14.800 13.962 13.653 13.412 12.970 12.479 12.143 12.380 12.648 13.274 13.970 15.765 17.679 16.985 15.654 15.400 15.782 16.046 14.807 13.117 12.833 13.357 14.833 14.368 12.846 13.692 12.699 10.281
+ 13.492 13.766 13.638 13.961 15.999 16.408 17.640 16.116 15.307 14.375 13.985 13.494 13.066 12.817 12.345 12.433 12.847 13.143 14.176 16.069 17.540 16.525 14.919 14.509 14.503 15.333 14.311 13.080 13.369 13.514 14.621 14.012 12.928 13.558 12.842 8.159
+ 13.330 13.583 13.550 13.875 15.418 16.215 17.435 16.356 15.789 14.577 14.419 13.620 13.238 13.067 12.672 12.563 12.988 13.290 14.827 16.580 17.083 15.919 14.616 13.903 14.719 15.107 13.503 13.150 13.278 13.243 14.241 14.139 13.399 13.772 12.228 7.445
+ 13.198 13.622 13.351 13.972 15.393 15.961 17.381 16.362 16.164 14.851 14.430 13.892 13.451 13.461 13.017 13.142 13.375 14.163 15.710 17.012 16.630 15.133 14.451 13.836 14.803 14.677 13.071 13.874 13.864 13.562 13.842 13.539 12.623 12.812 11.443 7.894
+ 13.019 13.508 13.154 13.923 15.472 16.025 17.454 16.474 16.229 14.938 14.369 14.025 13.626 13.584 13.375 13.484 13.946 15.107 16.667 17.014 15.641 14.608 14.116 14.079 14.671 13.671 12.605 13.755 13.477 12.964 13.153 12.767 12.938 12.661 10.591 7.961
+ 12.856 13.215 13.060 13.716 15.486 16.185 17.369 16.296 15.771 14.716 14.132 13.733 13.424 13.326 13.359 13.673 14.325 15.756 17.116 15.929 14.398 13.816 13.296 14.074 13.989 12.479 12.254 13.367 11.993 11.819 12.991 13.309 13.627 12.745 11.428 9.545
+ 12.426 12.779 12.576 13.332 15.275 16.154 16.755 15.488 14.777 14.281 13.530 13.189 12.819 12.735 12.993 13.750 14.831 16.211 15.611 13.772 12.495 12.099 12.961 13.399 13.617 14.009 13.443 12.376 10.532 11.231 12.453 12.796 13.571 12.972 12.382 12.165
+ 12.078 12.976 12.648 13.263 14.982 15.637 16.012 15.193 14.397 13.866 12.709 12.698 12.586 12.849 13.496 14.720 15.653 14.793 12.959 12.619 11.678 10.475 11.903 12.496 13.644 14.445 13.981 13.401 13.512 13.152 12.465 13.209 14.072 13.360 11.984 12.128
+ 13.402 13.389 13.581 13.828 15.317 16.461 16.964 15.418 14.973 14.472 13.383 12.891 13.339 13.591 14.747 16.024 15.285 13.663 12.399 12.081 11.328 10.647 10.035 10.659 11.933 13.452 15.256 14.731 13.991 13.782 13.384 14.567 14.535 13.396 10.283 8.978
+ 13.643 13.456 13.939 14.008 14.998 17.044 17.564 16.723 15.661 15.164 13.971 13.839 14.280 14.658 16.456 15.826 14.037 12.904 12.235 11.530 11.152 10.312 10.487 11.107 11.908 13.039 15.187 15.019 12.717 12.838 14.822 16.364 15.403 13.059 10.030 7.753
+ 13.416 13.186 13.800 13.973 14.719 17.185 17.543 17.306 16.173 15.188 14.067 14.306 14.860 16.291 16.156 13.986 13.043 11.771 11.840 11.259 11.098 10.464 10.043 10.470 11.455 12.449 14.667 14.688 12.610 12.330 15.574 16.963 16.277 14.884 9.343 8.356
+ 13.073 13.134 13.551 13.913 15.098 17.108 17.330 17.398 15.881 14.953 14.691 15.014 16.306 16.227 15.224 12.539 11.443 11.349 10.660 10.734 10.695 10.472 10.183 9.278 9.984 10.990 13.426 13.820 12.324 11.330 14.869 16.355 15.686 14.627 8.942 8.114
+ 13.085 13.031 13.386 13.934 15.349 16.977 16.909 17.144 15.726 14.181 15.005 16.149 16.335 15.510 12.735 11.966 11.343 10.494 10.146 9.997 9.527 9.783 10.123 9.875 9.313 10.539 12.385 13.549 12.089 11.799 14.967 16.142 15.782 15.022 9.652 7.657
+ 12.901 13.032 13.363 13.988 15.430 17.035 16.343 16.535 15.852 14.685 15.278 16.030 15.482 14.370 12.752 10.855 10.394 9.836 9.569 9.304 9.318 9.258 9.075 9.477 10.397 12.175 13.702 12.567 11.752 11.778 12.864 14.288 14.517 14.020 9.056 6.830
+ 12.917 12.635 13.077 14.187 15.461 16.714 15.792 15.634 15.295 14.427 15.586 15.559 14.314 12.238 10.561 9.912 9.508 9.303 9.037 8.545 7.978 7.806 8.369 8.862 9.602 11.520 13.495 12.443 10.908 10.813 12.049 13.425 14.234 13.428 8.254 6.767
+ 12.808 12.304 12.746 14.451 15.340 16.462 14.878 14.556 14.866 14.134 15.768 14.884 13.178 10.973 9.480 8.801 9.165 8.638 8.105 7.926 7.569 6.911 7.705 8.213 8.970 10.880 13.090 11.775 10.215 10.686 11.864 13.056 14.089 13.233 7.916 6.357
+ 12.769 11.993 12.607 14.888 15.657 16.229 14.370 13.847 14.296 14.816 15.545 14.204 12.250 10.597 9.321 8.395 8.324 8.237 7.789 7.830 7.319 7.165 7.573 7.651 8.506 10.460 12.772 11.423 9.854 10.602 11.971 12.820 14.155 13.090 8.613 6.912
+ 12.415 12.076 12.715 15.034 15.675 15.981 14.493 13.807 14.339 15.239 15.233 13.550 11.434 10.292 9.306 8.453 8.120 7.749 7.326 7.533 7.382 7.386 7.458 7.459 8.237 10.254 12.700 11.458 9.914 10.365 12.046 12.941 14.548 12.714 9.028 7.241
+ 12.148 11.887 12.507 14.933 15.457 15.820 14.684 13.887 14.791 15.554 15.056 13.174 10.727 9.670 9.667 8.897 8.573 8.011 7.187 6.894 7.325 7.349 7.657 7.442 8.306 10.385 12.752 11.772 10.573 10.411 12.319 13.417 14.371 11.978 9.676 7.940
+ 12.200 11.956 12.524 14.736 15.165 16.025 15.342 14.308 14.950 15.747 15.356 13.743 10.984 10.273 9.408 8.930 9.211 8.762 8.666 7.783 7.250 8.025 8.104 8.373 9.002 10.979 13.086 12.173 11.223 10.796 13.099 13.634 13.980 12.814 10.016 8.479
+ 12.319 12.208 12.585 14.315 14.682 16.361 16.405 16.039 15.509 15.770 16.096 15.673 12.938 12.390 11.079 9.678 10.158 10.091 9.147 8.142 8.057 8.675 10.335 10.285 9.843 12.037 13.865 12.911 12.055 12.608 15.590 15.476 14.751 14.114 10.967 10.390
+ 12.378 12.076 12.347 13.586 14.243 15.888 16.818 17.521 15.975 16.017 17.056 16.637 16.440 14.656 11.977 11.562 11.198 10.572 10.585 10.285 10.253 10.324 10.175 10.266 11.081 13.011 14.671 13.385 12.511 14.093 16.282 15.730 14.641 13.942 11.558 10.794
+ 12.445 11.920 12.315 13.413 13.927 14.681 17.216 17.418 17.012 16.265 15.697 16.572 16.632 15.864 12.698 11.887 11.468 10.986 10.936 10.423 10.092 9.830 9.757 9.975 11.084 13.405 14.737 13.652 12.610 14.641 16.737 16.104 14.707 13.716 11.026 10.733
+ 12.534 11.844 12.503 12.955 13.492 14.095 16.721 17.392 17.850 16.306 16.001 16.270 16.898 16.516 12.998 12.394 11.920 11.119 11.007 10.699 10.205 10.062 9.897 10.282 10.749 12.664 14.825 14.258 12.908 15.200 17.063 16.304 15.070 13.638 11.119 10.148
+ 12.620 12.047 12.591 12.506 13.520 14.018 16.262 17.311 18.068 16.970 16.019 16.190 16.909 17.206 13.882 13.187 12.248 11.483 11.439 10.958 10.745 10.315 10.233 10.416 10.555 11.921 14.508 14.549 12.961 15.454 17.211 16.447 15.484 13.917 10.951 9.257
+ 12.802 12.277 12.695 12.723 13.362 13.951 16.015 17.122 18.187 17.488 16.281 16.108 16.923 17.530 15.366 13.735 12.599 11.865 11.598 11.383 11.054 10.720 10.635 10.572 10.592 12.685 14.391 13.851 13.027 14.897 17.047 16.274 14.991 13.431 11.074 9.515
+ 12.724 12.548 12.784 12.727 13.208 13.881 15.675 16.880 18.032 17.467 16.617 15.918 16.256 17.392 16.246 14.433 12.870 12.206 11.723 11.499 11.184 11.208 11.393 11.218 10.695 12.398 14.678 14.375 13.739 14.726 16.895 16.198 15.054 13.231 11.597 10.477
+ 12.784 12.695 12.845 12.613 13.179 13.920 15.705 16.776 17.834 17.147 16.252 15.557 16.057 17.128 16.654 15.032 13.161 12.257 11.780 11.456 11.438 11.355 11.505 11.077 10.043 11.953 14.331 13.920 13.307 13.407 15.817 15.186 13.345 11.481 10.841 10.492
+ 12.725 12.812 13.009 12.596 12.877 13.719 15.594 16.449 17.367 16.450 15.976 15.045 15.471 16.707 17.091 15.046 13.444 12.425 12.033 11.904 11.820 11.701 11.831 11.463 10.583 11.181 13.675 13.737 13.763 12.983 14.283 14.133 12.670 10.915 10.304 10.278
+ 12.754 12.424 12.784 12.224 12.451 13.380 15.361 16.064 16.534 15.566 14.868 14.134 14.633 15.656 16.651 14.250 12.668 11.940 11.527 11.600 11.571 11.436 11.613 11.397 10.456 10.107 13.117 13.430 13.901 12.408 12.538 13.251 12.700 11.346 9.922 8.970
+ 12.732 12.551 12.418 12.153 12.496 13.519 15.055 16.242 15.386 15.055 14.755 13.704 14.063 14.665 16.180 15.023 13.019 11.879 11.628 11.604 11.339 11.326 11.628 11.524 10.784 11.158 14.265 14.301 13.427 10.998 10.712 12.864 13.096 12.081 10.176 9.431
+ 12.731 12.630 12.396 12.288 12.520 13.771 14.839 16.372 14.793 14.305 14.539 12.924 12.652 13.290 15.444 15.017 14.206 12.590 11.707 11.871 11.721 11.730 12.090 12.437 12.059 12.531 14.347 14.424 13.493 10.966 9.962 12.323 13.099 12.444 9.387 7.805
+ 12.686 12.576 12.386 12.194 12.495 13.872 14.635 16.066 14.396 13.464 13.920 12.146 11.636 11.865 12.763 13.154 14.394 13.807 13.479 12.931 12.944 13.245 12.810 12.450 12.368 13.007 13.700 13.605 12.545 10.305 9.350 11.269 12.595 11.855 8.900 6.728
+ 12.664 12.430 12.496 11.926 12.275 13.869 14.271 15.000 13.134 12.802 13.015 11.485 9.999 10.377 11.200 11.137 12.535 13.641 13.641 13.777 13.923 13.572 12.402 11.358 11.715 11.951 13.894 13.655 10.977 9.977 8.379 10.652 12.289 11.515 7.522 5.349
+ 12.838 12.622 12.521 11.631 12.133 13.565 13.591 13.641 12.102 12.202 12.244 10.931 8.695 8.428 9.749 9.408 10.062 10.697 12.542 14.113 14.308 13.503 11.015 10.051 10.653 12.115 14.049 13.900 10.963 9.731 8.729 9.853 11.762 11.015 7.185 6.899
+ 12.699 12.497 12.367 11.635 12.265 12.795 12.003 11.808 11.607 11.720 11.650 10.723 7.784 8.479 9.293 8.999 9.463 10.320 11.410 12.101 12.305 12.562 11.633 9.272 9.092 9.402 10.924 11.980 11.094 10.700 9.228 9.341 11.813 11.429 9.149 10.146
+ 12.508 12.560 12.667 11.929 12.369 12.462 11.356 11.075 11.095 10.453 10.464 9.660 8.201 8.450 8.494 8.755 8.699 9.274 9.084 9.745 10.801 12.260 11.441 9.304 7.340 6.548 6.759 8.673 11.137 11.552 8.597 8.529 11.190 10.958 8.528 8.831
+ 12.164 12.176 12.586 12.070 11.831 11.753 10.301 10.081 10.233 9.770 9.909 8.730 7.504 7.718 7.367 8.206 8.635 8.964 8.548 9.242 9.708 10.910 10.190 8.097 6.984 6.069 5.682 5.617 8.721 10.381 7.968 7.647 10.085 9.303 7.019 5.558
+ 11.518 11.711 12.478 11.552 11.075 11.476 10.000 9.360 8.531 9.037 9.224 7.424 6.320 5.370 5.819 6.213 5.692 6.733 7.807 7.930 6.663 7.337 7.292 6.436 6.443 6.459 5.765 5.715 6.268 7.651 6.345 7.292 8.269 7.949 6.596 5.875
+ 10.673 11.346 11.838 10.221 10.160 10.629 8.521 8.354 8.532 8.891 8.592 8.497 5.820 5.370 6.379 5.363 6.673 6.097 6.747 7.205 5.482 6.082 5.377 6.850 7.280 6.142 5.943 5.356 4.550 5.174 6.286 6.744 7.808 8.439 9.188 9.343
+ 9.995 11.543 11.408 9.486 8.773 9.393 9.154 7.182 8.323 8.794 9.017 8.620 7.773 7.625 7.862 7.085 7.409 6.719 8.199 8.725 8.591 7.922 7.679 7.604 8.366 8.616 8.397 8.189 7.881 7.935 8.568 9.087 9.692 10.519 11.396 11.485
+ 10.529 11.119 11.768 9.937 9.378 9.567 10.049 9.289 9.712 9.558 9.214 9.418 9.364 9.125 8.732 8.991 8.441 8.311 10.525 11.151 10.050 9.718 9.537 9.507 10.925 11.087 10.592 10.020 9.866 9.776 10.350 10.560 10.912 10.881 10.647 10.106
+ 11.266 10.807 11.236 11.360 11.147 9.811 10.383 10.161 9.765 9.441 8.551 7.905 8.162 7.700 8.399 7.855 8.692 9.816 11.756 11.342 10.326 9.557 8.933 9.724 11.482 11.628 10.266 9.702 9.781 10.037 9.617 10.368 10.775 11.492 11.133 11.480
+ 11.781 11.268 11.856 13.210 13.095 12.336 12.099 12.006 11.447 10.982 9.448 8.813 8.775 9.423 9.830 9.193 10.010 11.734 11.979 12.116 11.291 9.078 9.690 10.566 12.417 12.636 10.454 9.743 10.197 11.355 10.290 10.551 12.209 12.409 11.167 10.713
+ 11.557 11.128 11.665 13.784 13.984 14.068 13.213 11.743 11.393 10.881 9.127 9.958 9.690 9.331 10.186 10.787 12.020 13.741 13.500 12.342 11.415 10.586 9.890 10.940 12.579 12.860 10.448 9.930 11.255 12.159 9.891 10.673 13.400 12.826 11.556 10.978
+ 11.651 11.354 11.361 13.724 13.718 14.231 12.746 12.260 11.164 11.008 10.350 10.237 9.601 9.854 10.488 11.075 11.965 13.225 12.638 10.330 10.087 10.393 10.106 8.869 12.074 12.418 11.098 9.351 10.363 12.375 10.091 10.130 12.415 12.455 11.163 10.451
+ 12.074 10.804 10.966 12.827 13.714 13.830 12.030 11.070 10.065 10.372 9.663 9.114 8.268 8.872 9.443 9.972 11.372 12.379 11.364 9.565 9.815 9.760 10.327 8.441 10.842 12.198 11.133 9.656 11.784 12.178 10.959 10.449 11.757 12.084 12.005 12.374
+ 12.868 11.772 11.397 10.147 10.393 10.855 8.826 8.646 9.392 9.613 9.786 9.093 8.678 8.186 8.597 9.549 9.548 10.958 11.272 10.194 10.750 10.163 10.139 10.520 11.073 12.431 11.348 11.213 12.343 13.225 12.887 13.532 13.683 14.258 14.290 14.574
+ 10.736 11.233 11.098 10.814 9.988 7.957 9.273 8.816 9.219 8.805 9.803 9.188 7.302 7.765 8.537 8.122 9.367 10.216 9.946 9.553 10.891 10.467 10.442 11.206 10.970 12.814 11.734 10.991 11.869 12.826 12.735 14.273 14.340 14.321 14.950 15.081
+ 11.918 12.295 11.810 10.583 9.013 7.555 8.678 8.627 7.512 8.829 9.151 8.266 8.075 9.076 9.848 8.871 8.500 10.497 11.157 10.618 10.235 10.528 11.610 10.250 10.883 12.648 11.837 11.559 12.180 12.394 12.770 14.481 15.288 15.637 15.318 15.058
+ 12.108 10.644 10.656 11.129 10.651 8.990 9.318 8.627 8.554 8.152 7.706 8.416 8.292 9.152 9.021 8.868 9.995 10.826 12.439 11.500 11.254 10.766 11.547 10.142 9.827 11.416 11.256 11.639 12.355 13.104 12.440 13.883 15.143 15.898 15.385 15.727
+ 11.597 11.830 10.616 10.433 10.879 10.147 8.380 9.312 9.490 8.817 9.693 9.165 8.504 9.863 9.088 9.262 10.199 10.678 11.852 11.733 11.951 11.920 11.578 10.735 10.681 12.108 11.485 11.290 11.639 13.543 13.994 13.675 14.921 16.093 16.115 15.976
+ 13.127 13.028 12.117 11.433 11.033 9.399 10.608 10.543 9.238 9.065 9.613 9.818 9.885 10.057 9.356 9.196 9.608 10.952 12.014 12.585 12.223 12.012 10.649 10.683 12.248 12.316 12.211 11.735 11.851 12.692 13.429 13.572 14.890 15.816 15.986 16.620
+ 10.227 10.925 10.078 10.559 9.964 9.463 8.664 7.923 8.058 9.105 9.305 9.222 10.035 9.706 9.228 9.207 9.466 10.508 11.624 12.542 11.982 12.225 11.814 10.483 12.574 12.134 12.390 12.398 13.023 13.449 13.458 14.232 15.288 15.784 17.133 16.415
+ 11.809 11.097 10.485 9.379 9.683 9.447 8.810 9.221 7.483 8.162 8.925 9.073 8.794 9.479 9.815 10.704 10.262 10.575 11.901 13.131 12.094 11.627 11.840 13.331 12.954 12.471 12.514 12.661 13.367 13.861 14.388 14.949 15.618 16.454 16.364 16.033
+ 11.219 9.186 9.258 9.005 8.951 8.928 9.135 9.174 7.305 7.794 9.023 8.554 7.790 9.162 8.810 9.219 8.726 9.309 11.804 12.792 14.378 13.418 13.065 13.350 12.697 11.828 11.230 12.110 12.420 12.412 12.558 13.029 13.295 14.495 15.872 15.240
+ 8.500 6.864 7.527 7.090 5.295 5.820 5.919 5.241 4.715 4.498 4.781 4.985 5.017 5.462 6.218 5.924 6.215 6.891 8.933 10.048 12.204 11.451 9.565 7.690 7.595 7.727 7.891 7.793 7.516 7.274 8.297 8.778 9.257 9.679 10.326 11.638
+ 5.437 4.640 5.408 3.936 3.459 3.864 4.095 3.682 3.165 4.092 4.316 4.266 4.005 4.082 4.523 5.861 5.623 2.980 5.252 5.507 5.791 6.058 5.407 5.684 4.267 4.300 4.585 4.247 4.266 5.016 4.976 5.698 6.481 7.791 8.259 6.877
+ 2.953 2.973 4.416 4.428 5.178 4.995 5.606 5.003 3.720 2.965 4.677 4.664 4.938 3.829 3.731 4.838 3.702 3.769 5.252 5.400 5.443 5.274 5.025 5.263 5.056 3.564 4.176 4.086 4.523 4.071 4.951 5.226 6.103 7.568 8.478 7.011
+ 7.416 7.661 7.763 9.009 9.453 9.446 10.458 10.248 10.030 9.361 8.493 7.961 7.962 7.057 5.536 6.798 7.943 8.745 7.769 7.967 9.967 10.713 11.122 11.061 11.479 11.339 11.123 10.556 9.653 9.274 9.884 9.141 8.959 9.234 9.225 7.998
+ 9.875 8.622 8.755 10.624 12.375 11.902 12.539 13.106 13.265 12.301 11.646 12.013 12.188 11.988 10.890 9.378 11.407 12.148 10.585 11.800 12.541 13.198 13.889 14.413 15.043 14.753 13.949 13.482 12.813 12.388 12.927 12.811 12.873 13.223 13.193 11.890
+ 11.697 11.542 11.882 12.661 13.858 14.085 14.423 13.121 12.149 11.998 11.238 10.806 10.323 10.892 10.792 10.568 11.069 11.748 12.304 13.674 15.242 14.875 13.892 14.803 14.312 15.172 13.495 12.941 13.862 13.521 12.300 12.143 13.151 13.848 13.018 12.462
+ 12.198 12.828 12.087 13.176 14.970 16.332 15.680 16.205 15.048 13.279 13.053 12.904 11.885 12.096 12.308 12.657 13.015 14.054 15.814 16.357 16.229 15.657 15.756 15.007 14.177 15.136 14.653 14.719 15.080 13.127 11.439 13.557 15.634 14.439 11.380 10.014
+ 12.339 11.929 12.585 12.756 13.931 15.858 16.670 17.463 15.532 14.761 13.865 13.567 12.930 12.646 12.933 13.265 14.006 15.350 16.732 16.796 15.492 15.400 16.139 15.518 13.875 15.142 14.483 14.683 15.353 12.935 12.261 14.049 16.753 15.300 11.380 8.973
+ 12.213 11.502 12.294 12.845 13.532 14.519 16.405 17.844 17.785 15.152 14.777 14.332 12.893 13.206 13.267 13.543 14.177 16.407 17.174 15.597 14.821 15.100 16.133 15.833 13.555 14.714 14.359 14.062 15.104 13.282 13.528 14.070 15.574 14.466 11.323 9.956
+ 12.143 11.782 12.290 12.700 13.590 14.561 15.571 17.472 17.959 15.611 14.833 14.364 13.128 13.329 13.460 13.860 15.037 17.166 17.043 15.321 14.690 15.047 16.017 15.569 13.493 14.219 14.674 14.185 15.280 13.797 14.786 14.593 15.940 15.117 11.253 10.004
+ 12.216 12.281 12.601 13.161 13.879 14.717 15.229 17.736 17.515 16.538 15.910 14.889 13.530 13.676 13.948 14.528 15.800 17.354 16.711 15.159 14.984 15.306 16.195 15.507 13.325 14.408 14.652 13.948 14.837 13.956 15.881 15.682 15.290 13.859 10.774 9.862
+ 12.104 12.071 12.346 13.286 14.123 14.405 15.498 17.722 17.062 16.648 15.392 13.737 13.939 13.833 13.851 14.283 16.075 16.932 16.611 14.976 14.671 15.066 15.812 15.057 12.983 15.073 15.283 14.326 14.741 14.097 16.253 16.264 16.056 14.554 9.205 9.317
+ 12.221 11.942 12.108 13.168 14.043 14.582 15.757 17.833 17.000 16.285 15.519 13.797 13.667 13.509 13.412 14.021 15.606 17.092 16.921 14.689 14.462 14.862 15.333 14.415 12.595 14.790 15.026 14.143 14.703 13.651 15.533 15.517 15.478 14.869 8.708 8.598
+ 12.079 10.999 11.875 12.513 13.437 14.460 16.411 17.694 17.009 15.702 14.581 13.759 12.804 12.734 12.600 13.335 14.632 17.118 16.758 14.375 14.147 14.361 14.664 13.170 11.945 14.574 14.431 13.210 14.067 13.147 14.331 14.645 14.593 14.302 9.190 8.340
+ 11.901 11.972 10.905 12.079 13.316 14.752 16.094 16.276 15.630 15.174 12.526 11.679 12.211 12.063 11.840 11.420 12.162 14.730 15.820 14.303 14.330 12.826 11.730 10.208 12.544 12.967 12.443 12.014 12.569 11.885 11.151 11.562 11.568 11.245 9.548 9.150
+ 11.683 10.478 11.187 10.680 11.208 11.667 12.164 12.794 12.241 11.863 11.692 11.017 10.214 9.059 8.245 8.803 9.418 11.277 12.640 12.795 11.512 10.436 10.334 12.072 13.136 12.841 12.074 10.883 13.406 12.927 10.416 11.085 11.997 10.935 9.960 10.122
+ 13.460 12.936 11.783 11.780 10.801 11.549 11.112 10.168 10.646 9.904 8.963 7.925 8.043 8.534 8.543 9.111 9.513 10.253 11.524 13.121 12.198 10.279 11.133 13.294 15.262 15.100 14.883 13.883 15.427 15.416 13.402 12.843 13.346 13.542 13.294 12.275
+ 13.979 14.108 13.412 11.497 11.340 10.740 10.515 9.111 9.430 10.329 9.908 8.691 8.842 8.421 9.099 8.986 9.107 10.400 10.735 12.231 12.011 11.384 12.843 14.375 16.331 16.988 15.780 15.072 15.740 15.177 14.190 14.633 14.869 15.234 14.407 13.632
+ 13.574 13.383 12.382 11.377 11.411 10.607 9.533 9.744 10.450 10.485 9.007 8.906 9.243 8.806 9.589 8.964 9.961 9.026 10.665 12.124 11.862 11.860 13.500 14.865 16.413 17.058 16.029 15.638 16.235 15.824 15.937 15.599 15.838 15.177 15.278 14.404
+ 11.104 10.432 10.438 10.241 9.199 8.366 8.849 10.270 10.629 10.842 9.826 9.443 8.527 9.313 8.900 9.043 10.392 10.713 10.620 13.129 12.687 12.278 14.126 15.591 17.374 17.793 16.801 15.542 16.896 16.370 16.362 15.108 15.973 16.442 16.004 14.446
+ 10.851 10.534 10.653 9.610 8.920 9.332 9.847 8.681 9.631 10.482 8.418 7.570 7.092 9.297 8.817 8.518 8.288 11.206 12.096 14.765 13.851 11.675 15.247 16.347 17.535 17.225 16.344 17.461 17.946 17.128 16.409 16.116 16.071 16.035 15.547 14.950
+ 11.001 9.866 9.228 7.705 8.277 9.250 8.080 10.578 10.839 9.778 8.782 9.494 8.624 7.415 8.361 9.427 10.249 10.210 11.312 13.328 13.121 12.927 14.383 16.333 16.968 16.129 15.804 17.081 17.374 17.461 16.013 15.533 15.486 15.263 15.564 14.707
+ 13.256 13.559 12.674 11.141 9.663 10.500 9.657 10.243 8.843 8.614 8.492 9.282 8.949 8.784 8.372 9.406 10.912 12.299 12.135 13.161 12.754 13.048 15.291 16.660 16.433 16.838 15.604 16.349 16.473 15.800 16.131 14.923 15.206 15.032 15.199 14.805
+ 13.405 14.249 13.295 9.806 10.943 10.288 10.971 10.651 9.561 9.240 9.632 9.583 8.741 7.842 7.489 8.042 9.870 11.920 11.526 13.318 12.006 12.286 14.683 16.223 15.377 14.346 14.037 14.980 14.398 13.234 13.668 13.881 14.129 14.240 13.733 13.231
+ 14.852 13.064 12.273 9.632 10.725 10.297 8.856 8.871 9.794 8.823 7.770 8.740 8.026 8.662 8.572 7.198 9.769 10.323 12.334 12.839 11.207 11.692 12.292 14.053 13.801 12.728 12.623 14.567 13.334 12.975 12.162 13.180 13.106 12.565 12.890 12.517
+ 14.877 13.025 12.765 11.295 12.410 13.182 13.861 14.188 13.744 13.356 12.939 11.842 11.278 11.091 11.669 11.684 12.027 12.797 13.046 13.145 12.374 12.285 12.191 13.231 13.941 12.818 11.744 12.376 11.077 11.712 10.901 10.911 10.972 9.632 9.571 9.405
+ 13.543 13.997 12.448 13.032 13.412 13.815 15.102 14.703 14.569 14.407 13.285 12.779 12.503 12.134 12.121 12.300 13.092 14.042 14.221 13.840 12.303 12.074 11.669 12.057 12.677 11.903 12.498 12.853 10.153 9.211 9.323 11.307 12.386 10.535 8.485 7.439
+ 13.102 13.183 12.461 12.061 12.503 14.048 14.681 15.319 13.784 13.578 13.071 12.470 10.979 11.583 11.761 12.502 13.261 13.818 14.122 12.755 12.104 11.541 11.858 12.268 12.961 13.221 12.954 12.591 11.201 10.104 9.359 11.304 12.365 10.541 8.846 7.583
+ 13.216 12.337 12.454 11.419 12.306 13.596 14.085 13.532 13.056 12.079 12.690 11.373 9.679 10.359 11.247 12.501 13.392 13.023 12.054 11.596 11.110 10.876 11.664 12.190 13.021 13.300 12.827 11.417 10.601 9.632 7.753 9.630 11.610 10.701 8.860 7.334
+ 12.962 12.609 12.648 11.250 11.798 13.001 13.030 11.938 11.044 10.566 11.710 11.019 9.432 7.425 9.268 11.381 11.305 10.510 10.178 10.268 10.568 10.299 11.599 11.979 13.220 13.655 12.091 10.739 10.864 10.303 8.863 10.902 13.078 12.275 9.803 9.051
+ 12.777 12.726 12.706 11.428 11.735 12.470 12.333 11.836 11.043 11.158 11.250 10.403 8.765 8.032 9.767 11.404 11.005 10.687 10.749 11.025 10.345 11.291 11.921 12.407 12.943 13.687 12.233 10.090 10.172 10.538 9.541 11.997 14.144 13.905 11.228 8.722
+ 12.405 12.289 12.115 10.398 11.443 12.491 13.419 12.672 11.011 10.887 10.704 9.482 9.437 10.659 11.741 13.419 14.419 13.135 12.223 12.119 12.058 11.411 10.669 11.456 12.048 12.668 10.518 9.380 11.140 11.205 10.258 10.695 13.036 12.350 9.191 7.785
+ 12.458 12.279 12.372 11.337 12.412 13.465 14.742 14.174 13.776 13.311 11.498 11.606 11.066 11.735 12.012 13.538 15.289 14.923 13.378 12.898 12.931 13.232 12.781 12.024 11.942 11.918 11.014 11.213 11.770 10.937 11.366 11.886 12.578 12.821 10.145 8.022
+ 12.185 11.780 11.883 11.810 11.886 13.464 14.771 15.569 14.563 13.599 11.739 11.936 10.755 11.574 11.905 13.122 15.280 15.617 13.569 12.331 12.467 13.205 13.113 12.050 11.557 12.168 11.833 11.766 11.892 10.704 11.064 12.567 12.843 13.070 10.214 6.233
+ 12.140 11.842 11.633 11.670 11.812 13.682 15.370 16.134 15.427 13.810 13.077 12.051 11.456 11.995 12.411 13.462 15.637 15.801 13.948 12.777 12.707 13.470 13.663 12.774 11.855 13.376 12.828 12.878 12.543 10.988 11.155 12.927 12.756 11.391 9.486 7.394
+ 12.188 11.976 12.024 12.270 12.638 14.616 15.777 15.409 15.121 13.608 13.328 12.586 12.130 12.397 12.917 14.423 15.406 14.540 13.590 12.957 12.823 13.024 13.419 13.273 13.385 12.833 12.260 12.214 10.712 9.391 10.602 12.302 12.152 11.447 9.801 8.643
+ 10.465 10.773 11.945 12.430 12.971 13.485 14.644 14.067 13.096 12.578 11.828 11.273 10.929 11.909 12.902 13.728 14.401 12.004 10.955 10.582 10.486 10.804 12.017 11.812 10.778 9.751 9.567 10.353 9.017 7.514 8.450 10.732 10.210 9.467 8.775 9.318
+ 10.089 10.336 11.112 11.424 12.831 13.591 13.286 12.346 11.779 11.105 10.698 9.532 9.990 10.797 12.861 13.321 12.032 10.190 9.582 9.339 9.287 9.684 11.551 11.657 9.256 7.729 8.264 9.240 7.898 6.264 7.046 8.923 8.498 8.176 6.625 7.467
+ 8.321 9.639 9.575 8.156 7.627 8.036 8.330 8.127 8.781 7.564 7.034 6.285 5.886 5.985 7.709 7.828 8.881 6.278 6.133 6.003 4.875 6.193 6.660 6.575 5.240 5.750 4.587 5.321 5.495 5.199 5.197 5.189 5.724 5.394 5.128 3.844
+ 7.806 9.120 8.998 7.444 7.136 7.017 7.602 8.039 8.628 7.577 6.439 5.735 5.438 5.291 7.263 7.761 7.677 5.594 5.688 5.250 4.509 5.090 5.656 5.830 5.155 6.082 5.342 5.521 5.290 4.953 5.155 3.912 4.052 4.263 3.979 3.797
+ 8.203 8.167 7.949 8.460 8.899 8.832 9.108 8.727 8.284 6.286 5.504 5.538 5.092 3.349 4.540 6.365 6.866 5.678 4.633 4.102 4.767 4.840 4.536 5.525 4.790 5.566 4.944 4.677 5.050 4.118 4.624 3.468 4.025 4.228 4.038 3.499
+ 7.478 7.746 8.037 7.944 8.139 7.872 8.061 8.220 8.136 6.128 5.986 4.335 3.634 3.712 5.079 4.750 5.202 5.453 5.105 4.463 4.439 3.977 5.310 6.145 5.826 5.286 4.746 4.333 4.449 4.848 4.694 4.979 5.432 5.375 4.755 3.753
+ 5.789 8.472 10.143 10.293 8.888 9.667 9.923 9.157 9.181 8.959 8.235 7.539 7.755 7.039 6.028 7.191 8.613 7.827 7.812 8.216 7.240 8.121 6.922 8.092 7.999 7.284 7.795 7.633 7.559 8.038 8.780 9.277 9.824 9.742 9.050 7.984
+ 11.247 9.758 9.141 8.115 9.084 8.794 9.409 9.906 10.683 9.911 8.460 8.158 8.336 8.266 8.304 8.848 9.974 10.696 8.746 8.688 8.918 8.502 9.005 9.406 9.308 8.094 8.070 7.887 8.201 8.491 8.098 8.151 8.728 8.430 8.609 8.782
+ 11.702 10.504 10.335 11.781 11.635 12.810 13.753 13.922 14.013 12.933 12.023 11.935 11.895 11.458 11.844 12.424 13.319 14.551 13.471 13.082 12.582 12.538 13.167 13.919 13.610 12.218 11.827 12.210 12.544 11.800 10.523 12.069 11.860 10.173 9.989 10.105
+ 11.672 10.910 11.277 11.982 12.307 13.817 15.612 16.784 16.214 14.443 13.161 13.136 12.196 12.340 12.392 12.937 14.293 15.870 15.146 13.744 13.285 13.282 13.956 15.564 15.276 12.998 12.597 13.181 13.919 12.792 11.284 14.096 13.538 12.035 10.349 10.663
+ 11.570 11.159 11.617 12.391 12.536 13.607 15.312 16.337 16.682 15.472 13.398 13.314 12.700 12.737 12.549 12.924 13.994 15.674 16.309 14.841 13.775 13.608 14.143 15.435 16.000 14.488 13.172 13.081 13.627 13.071 11.297 13.579 13.730 10.957 10.203 11.144
+ 11.406 11.031 11.468 12.470 12.549 13.435 15.008 16.145 16.885 16.157 13.307 13.799 12.698 13.061 12.817 13.450 14.279 15.694 16.517 15.584 14.550 14.127 14.240 15.446 16.330 15.282 13.889 13.774 14.121 13.384 12.170 14.327 13.904 11.719 10.122 10.950
+ 11.063 10.614 11.160 12.420 11.858 13.458 14.768 15.905 17.024 15.359 14.115 13.883 12.640 13.099 12.676 13.329 13.985 15.645 16.938 14.857 14.203 13.853 13.868 15.135 16.185 14.548 13.456 13.504 13.811 12.632 13.274 14.863 14.442 12.517 9.090 8.392
+ 10.728 10.491 11.379 12.281 12.330 13.189 14.238 15.862 17.121 16.673 14.281 13.975 12.975 12.925 12.795 13.516 14.256 16.561 16.977 14.947 14.227 13.945 13.998 15.553 16.355 14.706 13.385 13.612 14.134 12.445 14.492 15.854 15.578 13.895 8.825 8.372
+ 11.231 11.049 11.945 12.557 12.796 13.333 14.341 15.728 17.147 17.168 14.738 14.294 13.579 13.323 13.345 13.927 15.097 16.830 16.776 15.058 14.342 14.227 14.512 16.043 16.174 14.358 13.177 13.098 13.088 12.417 14.527 15.418 15.095 12.819 9.544 8.814
+ 11.145 10.948 11.841 12.641 12.823 13.094 14.263 15.475 16.699 17.166 14.962 15.324 13.791 13.929 13.788 14.501 15.848 16.556 16.120 14.652 14.305 14.494 14.622 15.775 15.693 14.102 12.938 12.666 12.158 12.528 15.193 15.405 14.997 12.262 9.240 9.294
+ 10.296 9.915 11.537 12.020 12.061 12.400 14.026 14.351 16.901 17.018 15.851 15.342 13.628 13.776 13.818 14.323 15.958 16.661 15.567 14.264 13.716 13.772 14.052 15.316 15.411 13.647 12.240 12.028 11.311 11.766 14.940 14.872 14.603 12.199 8.837 8.873
+ 10.579 10.154 11.518 11.618 12.415 12.616 13.957 14.741 17.141 17.248 15.767 14.973 13.643 13.418 13.706 14.497 16.209 16.384 14.923 13.841 13.504 13.669 13.864 15.384 15.596 13.572 12.370 12.282 11.430 12.648 15.625 15.272 14.813 12.531 9.497 7.920
+ 10.917 10.910 11.735 12.333 12.615 13.139 14.313 14.892 17.188 17.216 16.515 15.283 13.711 13.889 14.365 15.430 16.805 16.099 14.832 14.216 13.855 13.810 13.936 15.448 15.776 14.058 12.742 12.384 11.395 14.141 16.164 15.508 14.561 12.241 9.950 7.884
+ 10.658 10.515 11.720 12.304 12.169 13.081 14.231 14.520 17.078 16.960 16.653 15.361 13.900 13.972 14.533 15.614 16.432 15.442 14.516 14.033 13.683 13.935 14.021 15.325 15.600 13.877 12.528 12.032 11.800 14.607 16.311 15.778 14.556 12.931 10.658 9.050
+ 10.135 9.980 11.466 11.788 12.118 12.476 13.773 14.674 17.232 17.489 15.819 15.095 13.538 13.636 13.789 15.484 16.850 14.711 13.245 12.830 12.692 13.060 13.077 14.711 15.210 13.312 11.872 11.378 11.159 14.743 16.391 15.521 14.558 12.047 9.759 8.228
+ 10.558 10.936 11.784 12.182 12.868 12.932 14.262 15.333 17.396 17.236 15.676 15.180 14.212 13.954 14.398 16.286 16.854 14.698 13.282 13.002 13.028 13.407 13.345 14.784 15.603 14.002 12.298 11.827 11.572 15.440 16.936 16.106 15.123 12.657 10.135 9.053
+ 10.748 11.122 11.905 12.748 13.304 13.290 14.745 16.198 17.017 17.348 14.754 14.812 14.741 14.068 15.122 16.750 16.434 14.036 13.116 12.948 12.714 13.191 13.309 13.803 14.820 13.327 12.285 11.742 11.532 15.192 16.814 16.161 15.164 12.916 10.336 9.634
+ 10.349 10.706 11.273 12.525 13.066 13.182 14.640 16.246 16.797 16.847 14.642 13.730 13.913 13.445 14.630 16.031 15.756 12.951 12.008 11.834 11.864 11.770 11.739 12.659 13.203 12.548 11.658 11.024 10.945 14.186 15.826 15.351 14.352 12.038 9.822 10.707
+ 9.593 10.531 11.152 11.696 12.970 13.413 14.296 16.862 17.283 15.608 14.751 13.965 12.981 13.713 14.926 16.166 14.611 12.815 11.577 11.573 11.548 11.363 11.423 12.172 12.399 13.357 11.612 10.413 9.987 13.762 15.509 15.139 14.183 11.793 9.857 10.788
+ 10.087 10.782 11.094 12.373 13.343 14.136 16.099 17.490 16.670 14.626 14.803 14.155 13.133 13.919 15.229 16.232 14.074 12.459 11.319 11.426 10.769 10.673 10.966 10.683 13.514 14.358 11.480 9.843 9.374 11.311 13.734 14.183 12.516 11.827 9.250 9.784
+ 10.063 10.657 11.052 12.265 13.748 14.934 15.819 16.531 14.797 13.854 13.332 13.531 12.954 13.588 14.743 15.146 14.037 12.203 11.621 10.638 10.245 10.221 10.631 11.308 13.273 13.842 12.303 10.768 10.111 9.959 13.661 14.867 13.693 13.541 11.369 9.268
+ 9.568 9.259 9.511 10.627 11.892 14.420 15.965 14.902 13.199 11.885 11.612 11.278 11.205 11.399 13.930 14.852 12.442 10.244 9.565 8.876 8.152 8.280 8.647 9.428 12.302 13.468 10.476 8.780 8.142 7.961 12.606 14.157 12.134 12.638 10.757 9.470
+ 9.492 10.320 10.986 12.305 14.094 15.013 14.845 13.296 12.211 11.840 11.556 11.781 11.747 12.145 13.629 14.014 12.665 10.861 9.429 9.158 9.070 8.909 9.117 9.771 11.542 12.713 11.026 9.368 8.423 8.508 10.881 13.094 12.585 12.001 11.275 10.127
+ 7.059 7.390 7.250 9.821 11.839 12.247 11.097 10.312 10.405 9.056 8.844 8.377 6.977 7.328 9.742 11.022 9.124 6.452 6.466 4.948 5.273 4.376 4.823 6.036 8.389 10.093 7.377 5.298 4.401 4.582 7.427 9.875 9.417 8.361 7.880 5.274
+ 7.281 9.115 8.939 7.740 6.803 7.844 9.019 10.543 11.181 8.778 6.840 6.967 6.726 5.060 6.302 6.617 7.312 6.415 5.303 5.217 5.630 4.833 4.192 5.943 6.666 6.042 5.462 4.729 4.732 4.721 6.485 6.231 5.507 4.633 4.269 4.889
+ 7.985 9.243 9.152 7.472 6.652 8.682 9.927 9.926 9.899 9.398 6.436 5.981 6.354 5.457 5.825 6.518 6.379 6.260 5.366 5.269 4.842 3.639 5.273 5.946 6.392 5.336 5.358 4.443 4.462 4.840 6.970 6.386 5.722 3.193 4.031 3.892
+ 6.134 5.289 5.498 6.405 5.682 7.253 9.477 8.943 9.903 9.857 6.359 6.094 5.195 5.911 6.363 6.503 6.761 5.244 4.668 4.774 4.179 3.632 5.211 5.364 5.906 4.972 4.602 4.269 3.886 4.174 6.327 5.696 4.399 4.076 3.841 3.179
+ 4.165 5.528 6.101 5.828 5.339 7.269 7.942 6.802 8.820 9.392 6.043 5.971 5.391 4.705 4.861 6.142 6.900 5.682 3.688 4.682 4.517 4.851 4.826 4.509 4.090 4.374 4.192 4.218 4.514 4.970 5.956 4.586 3.909 3.826 3.583 2.523
+ 5.982 6.270 5.139 4.625 4.867 4.420 7.920 8.382 8.410 8.571 5.474 5.265 5.387 5.109 4.841 5.453 4.949 4.175 3.496 3.596 4.164 4.182 4.045 4.946 5.612 5.162 4.419 4.150 3.548 4.365 6.118 4.878 4.042 2.907 3.329 3.338
+ 4.694 6.086 6.195 5.178 7.284 7.942 8.229 8.059 7.193 7.554 8.386 8.129 6.884 5.498 5.605 5.318 4.797 6.177 6.618 6.932 7.273 7.414 8.030 8.459 8.446 7.112 7.694 7.633 6.457 5.380 5.495 5.753 6.157 6.644 5.208 4.628
+ 4.275 4.374 5.282 4.411 7.337 8.326 7.785 6.303 7.014 7.176 8.568 7.994 6.250 5.913 5.558 5.680 5.271 4.739 5.394 5.857 5.773 6.188 6.809 7.357 7.622 6.366 7.624 7.112 5.078 5.095 4.643 4.756 5.589 5.946 4.506 4.114
+ 4.799 4.468 4.170 4.092 5.129 5.174 7.555 7.753 6.476 5.588 4.744 4.473 4.985 5.142 4.205 4.571 4.531 2.967 3.493 3.870 3.708 3.999 4.836 4.854 4.890 4.809 4.956 4.664 3.918 3.262 4.318 4.272 3.497 3.669 2.988 1.872
+ 5.176 4.670 3.976 3.328 2.949 5.438 6.673 6.319 5.822 5.013 4.697 4.747 4.713 3.535 4.176 5.796 5.270 5.358 4.409 3.215 3.986 4.872 4.929 4.402 5.067 5.176 4.683 3.562 3.381 2.459 3.811 3.996 2.678 2.572 2.500 2.354
+ 4.155 4.987 3.234 3.894 4.508 5.883 6.867 7.070 5.814 4.881 4.870 4.225 4.699 4.834 6.261 5.812 3.514 3.755 3.988 4.226 4.801 4.184 2.878 4.207 4.912 5.171 4.586 4.183 3.199 3.102 3.633 3.611 3.006 3.000 3.300 3.007
+ 4.759 3.656 0.787 3.513 4.457 5.372 4.867 4.964 5.225 4.365 4.406 4.771 4.423 5.593 5.129 4.914 4.727 3.545 3.219 3.260 3.897 4.438 4.523 4.701 4.779 4.721 3.116 3.931 3.878 3.795 3.886 3.010 3.625 3.405 3.312 2.771
+ 5.288 3.583 3.525 3.788 4.007 3.942 4.785 6.387 5.472 3.955 4.394 4.779 4.523 5.728 5.201 3.987 4.769 4.263 4.675 3.919 4.623 4.063 3.485 4.256 4.249 3.752 3.136 3.726 3.686 3.223 3.313 3.230 3.385 3.250 2.525 1.962
+ 5.099 5.092 3.559 3.231 4.372 5.367 5.772 5.783 5.246 2.608 2.265 3.482 3.165 3.900 4.765 4.469 5.042 4.344 3.830 3.848 4.107 4.223 4.898 4.676 3.886 3.825 3.961 3.756 3.330 3.344 3.567 2.922 3.719 2.771 2.410 1.697
+ 2.539 3.754 3.466 2.605 4.353 5.685 5.596 4.593 5.160 3.277 3.778 2.949 3.721 4.091 5.361 4.712 4.254 4.324 3.727 2.815 3.950 4.090 4.232 3.806 4.486 4.826 2.846 2.908 3.661 3.581 2.850 3.246 3.577 2.801 2.840 1.736
+ 3.801 2.800 3.335 3.853 4.396 5.993 5.593 3.995 3.422 4.091 4.735 4.584 4.626 4.432 4.034 4.416 3.676 3.289 4.018 4.052 4.076 3.809 3.916 3.919 4.457 4.861 4.661 3.611 2.544 3.320 3.460 3.022 2.485 2.685 2.734 1.566
+ 4.091 3.656 5.192 5.082 3.457 4.926 5.589 4.005 4.595 3.792 2.596 3.699 3.446 4.952 5.058 5.469 4.091 4.589 4.502 3.216 3.615 3.723 3.103 3.814 3.455 3.704 4.840 4.698 2.630 3.298 3.339 3.400 2.686 3.355 2.359 0.969
+ 4.478 4.864 4.127 4.723 3.922 5.589 6.201 4.526 4.547 4.745 4.130 3.288 2.579 5.394 5.085 4.609 3.257 3.416 4.193 3.875 3.684 4.500 3.189 4.235 3.958 3.741 3.101 3.070 2.677 3.377 2.680 3.111 2.873 2.629 2.211 1.610
+ 2.899 4.886 5.380 4.356 4.483 5.428 4.481 5.195 5.618 2.956 3.382 2.068 3.058 4.035 3.716 4.293 4.251 4.384 3.512 3.650 3.161 4.103 3.656 4.285 4.435 4.278 2.724 3.001 3.100 3.639 2.931 2.641 2.310 1.844 2.854 2.096
+ 5.756 6.770 5.922 4.936 4.280 5.829 6.202 4.715 5.341 2.787 3.339 4.494 5.028 4.061 3.681 2.649 4.059 3.400 3.434 2.926 3.660 3.366 3.628 4.071 4.048 4.110 3.558 3.862 3.128 3.384 2.677 3.022 2.812 2.488 2.781 2.114
+ 5.115 5.583 6.202 5.295 4.109 6.086 6.461 4.194 4.443 4.275 3.940 3.589 5.143 5.866 5.518 4.357 3.520 3.949 2.919 2.273 3.009 3.455 2.889 2.757 2.653 3.374 3.347 3.796 3.829 3.100 2.729 2.403 3.074 2.651 2.318 1.584
+ 4.132 5.206 6.447 6.009 6.202 6.294 5.009 5.532 5.091 5.098 5.298 5.404 4.725 4.652 4.535 4.639 4.442 4.721 4.226 3.484 3.178 2.733 4.100 4.478 4.783 4.983 3.795 2.940 3.715 3.883 3.197 2.900 3.785 4.685 4.728 4.930
+ 6.915 8.699 9.409 9.323 8.840 7.784 6.785 7.203 7.196 7.209 8.086 7.843 5.898 4.238 5.348 5.972 5.749 6.045 6.234 5.001 3.973 3.581 5.263 6.434 7.450 6.528 5.375 3.317 4.217 6.299 4.593 3.245 6.154 7.933 6.928 7.521
+ 7.602 7.990 7.190 7.850 6.553 6.158 4.438 5.168 6.629 5.602 6.043 5.506 4.625 4.143 3.733 4.584 4.984 3.619 4.751 5.408 5.574 6.269 6.280 5.873 5.550 5.634 5.006 5.336 4.464 5.147 4.564 5.274 6.269 6.306 5.194 4.418
+ 7.319 5.765 6.753 7.459 6.249 6.327 5.533 5.123 5.522 5.833 5.985 5.400 4.416 4.566 4.622 4.949 4.330 4.863 4.284 4.878 5.605 6.337 6.611 5.059 4.750 6.686 6.077 5.604 4.952 4.543 4.003 5.269 6.354 6.439 5.324 4.718
+ 3.153 2.871 4.157 5.416 3.841 5.938 5.549 4.414 6.853 7.451 5.693 5.542 5.254 6.022 5.345 4.999 4.708 4.579 3.891 4.279 3.426 4.320 6.173 5.658 6.164 6.267 4.456 4.362 4.076 4.346 3.815 4.498 5.311 6.050 5.937 3.690
+ 4.687 4.883 5.031 5.607 5.887 6.276 6.201 4.924 5.543 6.654 8.470 7.614 5.369 4.983 5.713 5.447 4.167 4.569 5.901 5.049 4.278 4.797 5.990 5.973 6.996 5.564 4.310 4.341 3.742 3.840 3.249 4.503 5.463 4.770 4.147 3.077
+ 4.385 4.462 4.269 4.203 6.897 7.482 5.522 4.205 4.759 6.906 9.602 9.471 5.098 3.382 5.402 6.602 5.448 3.997 5.134 5.974 4.834 5.464 6.904 5.799 6.408 5.096 5.148 5.240 4.197 4.705 4.030 3.765 4.992 4.792 4.617 3.505
+ 4.427 3.697 4.143 5.784 6.965 7.868 5.825 4.989 3.737 6.345 9.008 9.144 6.119 3.409 4.606 7.410 7.185 5.577 5.976 7.654 5.756 4.930 6.417 6.944 6.759 5.833 5.890 4.742 4.355 5.391 3.681 4.360 5.506 5.439 4.354 3.553
+ 4.124 3.338 4.097 4.024 5.404 6.815 6.682 3.018 4.294 5.851 6.149 5.668 6.610 5.769 4.257 4.718 7.517 8.427 5.010 5.164 7.434 7.365 4.664 7.857 8.150 5.040 7.522 6.378 5.261 5.837 3.728 5.073 5.883 6.023 4.793 3.989
+ 5.140 4.580 4.667 4.363 5.067 6.760 6.657 2.985 2.721 3.384 3.097 5.037 6.536 4.291 3.667 3.825 8.029 8.551 3.944 3.545 8.456 7.951 4.936 9.259 9.231 5.936 8.924 7.358 7.357 7.405 5.367 5.755 7.824 7.660 6.752 5.320
+ 1.696 3.749 4.367 4.158 6.740 7.541 5.457 3.405 3.198 4.276 7.010 7.559 6.081 3.104 3.772 5.593 7.696 6.839 4.896 7.319 7.902 5.903 7.359 8.767 7.351 7.915 7.931 5.842 6.638 5.688 5.101 4.991 7.097 6.218 5.637 4.142
+ 4.170 5.494 5.793 5.666 6.366 6.796 5.696 5.656 6.877 8.200 8.566 8.133 3.696 2.651 4.575 4.875 4.887 4.727 5.677 6.211 4.642 4.816 5.885 5.737 6.389 5.935 4.713 4.319 3.639 4.466 4.143 3.613 4.127 4.093 3.157 3.016
+ 3.531 3.786 6.238 5.928 4.017 5.359 5.964 5.285 7.755 7.870 7.887 6.892 5.661 3.736 3.321 4.650 4.612 4.316 4.444 3.693 3.876 3.715 4.675 5.290 6.011 5.791 4.998 4.974 3.497 2.822 3.691 4.352 4.659 4.917 4.968 2.792
+ 4.168 3.539 5.192 5.011 3.097 4.270 3.634 4.094 6.174 6.333 6.990 5.939 3.305 4.541 4.225 3.219 3.498 3.552 2.429 4.180 4.643 3.805 4.195 4.873 4.929 5.509 4.520 3.898 3.431 2.725 3.339 4.130 5.030 4.853 4.827 3.096
+ 4.859 4.371 4.720 5.164 4.904 4.568 4.481 2.644 4.732 5.623 4.472 2.229 1.765 5.520 5.090 3.466 3.316 4.364 4.478 4.270 4.828 4.709 4.207 4.917 4.803 4.392 4.291 4.151 3.884 3.375 3.613 4.501 5.294 5.400 5.212 3.940
+ 4.518 4.671 5.201 4.206 4.676 6.221 5.750 4.176 4.130 4.412 4.123 2.940 4.372 5.015 3.983 3.249 3.078 3.832 3.497 3.658 3.831 4.612 5.295 5.688 5.149 5.471 5.261 5.348 4.847 3.521 3.732 4.811 5.397 5.924 6.223 3.946
+ 4.283 4.502 5.413 5.635 5.002 5.750 5.473 4.420 4.014 3.640 4.425 4.000 3.663 4.163 4.521 3.532 3.663 4.158 4.027 3.716 3.497 4.716 5.035 4.953 5.197 5.348 4.893 4.863 5.436 3.931 3.656 4.531 5.427 6.209 6.541 4.848
+ 5.619 5.211 4.695 5.082 5.039 4.122 5.122 4.623 3.599 4.003 4.907 4.233 2.606 4.969 4.642 3.015 3.256 3.706 4.189 3.714 4.098 5.071 4.761 5.741 5.494 4.444 4.482 4.271 4.388 4.165 3.027 4.301 5.851 5.640 5.580 4.176
+ 2.964 4.208 4.464 3.553 4.072 5.750 5.900 5.273 4.734 4.335 4.581 4.741 2.006 4.613 4.208 3.336 3.951 4.156 3.374 3.428 5.031 4.751 4.667 5.513 5.084 4.248 5.043 4.291 4.124 3.916 3.593 4.421 5.068 5.545 5.422 3.569
+ 5.062 5.670 4.247 4.254 4.866 5.992 4.949 5.047 4.399 4.349 4.090 4.196 3.697 4.091 4.303 3.907 4.221 2.908 3.366 3.504 3.954 4.133 3.699 4.833 5.040 4.237 4.767 4.355 3.419 3.381 4.127 3.915 4.391 5.038 4.830 4.080
+ 4.638 5.155 5.073 4.092 4.681 5.330 5.174 5.493 6.176 4.773 3.824 3.883 2.556 3.805 4.063 3.039 4.715 4.154 3.343 3.044 3.516 4.775 5.691 4.700 4.475 4.091 3.727 4.089 3.937 3.891 3.695 4.252 5.045 5.812 4.917 2.954
+ 4.870 3.932 3.594 2.868 4.656 6.523 5.671 5.124 6.271 5.375 4.183 4.663 3.576 4.337 3.758 3.717 4.077 4.141 3.252 3.832 3.907 4.151 5.624 5.048 4.696 3.891 3.441 3.401 3.443 3.037 2.997 3.097 4.003 4.656 4.043 2.894
+ 4.996 6.519 6.621 4.330 3.793 6.546 6.673 5.739 5.404 7.190 6.598 4.472 4.320 4.861 4.075 2.365 4.078 3.232 2.968 4.441 3.978 4.774 4.641 5.182 4.855 4.572 4.737 4.026 3.950 3.537 2.996 2.801 3.256 3.948 3.477 2.935
+ 4.219 6.415 7.118 5.533 3.960 4.999 7.037 5.519 4.182 7.664 8.815 6.634 4.073 5.326 4.217 3.270 3.752 2.799 3.252 3.344 3.276 3.992 4.152 4.521 3.972 4.827 4.138 3.779 3.292 3.673 2.955 2.805 2.880 3.430 1.398 1.237
+ 4.640 5.203 5.828 3.976 3.104 5.179 7.121 6.309 5.195 8.085 9.096 6.715 4.528 3.521 3.318 4.893 4.791 5.112 3.383 3.621 4.029 4.828 4.346 5.196 5.161 4.840 4.189 3.563 3.721 3.816 2.877 3.177 2.984 2.816 2.489 1.788
+ 4.404 5.050 4.621 2.048 3.293 5.260 5.674 3.752 6.222 8.412 7.713 4.870 4.946 2.159 3.408 3.589 5.064 5.872 3.899 3.093 4.581 4.406 4.333 5.456 5.167 4.446 4.849 3.228 3.104 2.991 3.178 3.313 3.332 3.060 2.739 1.613
+ 4.142 5.101 4.321 3.550 4.889 5.049 4.531 3.051 3.309 5.675 5.522 4.482 4.919 3.583 3.796 2.929 3.691 3.579 3.203 2.987 3.627 3.091 4.565 4.133 4.255 3.312 3.933 3.049 2.993 2.943 2.859 2.285 2.507 2.433 1.868 1.366
+ 4.770 5.219 6.006 5.559 4.160 5.534 6.590 5.604 4.555 4.413 3.539 3.255 4.604 5.199 4.688 4.636 4.675 6.311 5.287 4.080 4.333 5.675 4.910 4.340 6.003 4.598 3.402 2.727 2.232 3.051 2.666 2.047 2.393 2.994 2.760 2.176
+ 4.518 3.331 4.567 3.933 3.653 3.044 6.315 6.308 4.854 4.228 3.579 2.920 4.117 4.551 3.816 2.994 3.306 5.476 5.977 3.833 2.343 5.650 6.745 4.767 4.972 5.942 3.711 4.071 3.663 3.033 3.117 3.109 3.967 3.160 2.343 1.143
+ 4.297 4.488 4.055 4.810 4.118 3.915 5.372 4.779 3.722 3.353 3.121 3.364 3.627 4.490 4.313 3.053 2.801 3.308 3.923 3.931 3.507 4.412 5.516 4.805 3.838 3.700 2.067 2.709 3.131 3.222 3.372 2.877 3.115 3.308 2.233 1.469
+ 3.935 4.469 5.352 5.386 6.538 6.890 6.545 6.339 7.161 6.811 6.082 6.414 6.353 6.647 7.026 7.220 6.863 6.310 7.022 7.106 6.615 6.594 6.017 4.972 4.689 3.595 2.218 3.439 2.734 2.282 3.013 3.171 2.682 2.278 2.202 1.932
+ 5.019 4.195 4.263 4.157 5.123 6.423 5.395 4.389 6.008 5.419 3.961 5.197 4.959 4.915 5.389 6.426 5.355 4.963 5.646 5.655 5.240 5.488 4.812 4.842 4.682 3.642 3.725 2.792 2.775 3.087 2.690 2.848 2.297 2.294 2.302 1.504
+ 4.460 5.150 5.785 5.233 4.151 4.468 4.645 3.033 3.593 3.842 2.567 2.386 3.243 4.695 3.678 4.057 3.950 4.510 3.906 3.648 4.286 4.399 3.259 3.577 3.201 3.524 3.590 3.476 3.176 2.463 2.865 2.965 2.953 2.278 2.284 1.848
+ 4.276 4.664 5.455 5.515 5.431 5.500 4.576 5.644 3.941 4.286 4.206 4.946 4.359 5.197 4.847 3.836 3.878 3.259 3.997 3.993 4.171 4.187 3.763 3.929 4.047 3.439 2.835 2.584 2.751 3.207 3.215 2.798 2.715 2.919 2.780 1.234
+ 4.694 4.767 6.201 7.270 7.293 7.503 7.391 7.408 7.135 6.493 6.811 7.317 8.205 8.503 7.410 5.739 3.886 3.616 5.228 6.211 5.280 5.343 6.292 6.881 4.796 2.861 3.570 3.305 3.220 4.038 3.843 4.230 4.033 2.838 2.404 1.210
+ 5.031 4.962 4.424 4.027 3.793 5.255 6.001 4.575 5.065 4.303 3.767 4.023 5.875 6.373 4.897 3.587 3.942 4.189 3.036 3.812 3.795 4.585 4.428 4.649 4.742 3.850 3.868 3.901 3.497 3.262 3.397 2.950 2.914 2.372 2.468 2.615
+ 5.155 5.762 5.442 4.699 4.299 5.744 6.046 5.175 4.026 4.253 3.239 2.820 2.466 3.771 3.798 3.413 4.027 3.711 3.228 3.408 3.732 3.586 3.274 3.367 3.147 3.508 3.763 3.701 3.172 3.432 3.528 3.514 3.018 2.543 2.475 1.841
+ 4.432 3.445 3.349 2.824 4.719 4.969 4.115 3.979 4.373 4.259 4.071 3.094 3.498 4.842 4.515 3.576 3.961 4.414 3.388 2.267 3.177 3.714 4.199 4.122 3.294 4.178 3.889 3.091 2.834 3.665 3.548 3.164 3.168 2.544 2.638 1.996
+ 5.208 5.038 4.082 2.922 3.752 4.864 5.565 4.601 3.289 3.680 3.826 4.650 3.606 4.792 4.362 4.407 3.716 4.086 3.494 1.144 2.953 4.848 3.863 2.885 3.853 3.746 2.679 1.691 2.329 3.599 3.939 2.841 2.871 2.349 1.967 1.685
+ 5.808 4.799 4.291 3.067 3.406 4.601 5.527 3.452 4.240 3.005 2.894 3.122 3.204 3.200 4.257 4.186 2.803 2.971 2.877 2.653 3.403 4.779 4.437 4.322 4.276 3.882 3.826 3.225 2.749 3.018 3.539 3.331 2.824 1.443 1.842 1.635
+ 4.947 4.007 4.626 4.843 4.952 4.287 4.582 4.540 4.060 2.925 1.991 1.531 2.439 2.566 2.062 3.844 3.957 3.427 2.137 2.610 3.549 3.411 3.458 3.500 4.379 3.591 3.482 3.384 3.673 3.292 3.394 3.194 3.046 1.906 2.146 2.268
+ 5.347 5.415 4.282 5.276 5.101 5.859 4.634 4.128 4.459 3.324 2.850 1.532 2.950 4.685 4.192 3.820 3.804 3.780 2.366 2.940 3.753 3.930 4.466 3.609 4.373 3.743 3.642 3.660 2.037 3.547 3.550 2.778 1.759 2.621 2.622 1.330
+ 4.442 3.569 3.951 4.233 4.163 5.408 6.214 4.429 4.993 4.492 1.582 1.606 2.514 4.938 4.806 4.378 4.433 3.873 2.870 3.172 3.713 3.847 4.595 3.347 3.324 3.044 3.466 2.956 2.083 3.168 2.965 2.854 2.013 2.753 2.590 1.737
+ 4.787 3.622 4.016 4.204 4.118 3.559 4.582 4.055 3.223 3.774 1.496 2.079 2.780 4.252 4.320 3.594 3.350 3.444 3.763 2.878 1.913 2.977 3.754 3.494 3.745 3.618 3.487 3.728 3.018 3.262 2.514 1.971 1.881 1.998 2.006 1.733
+ 4.565 4.490 3.923 4.652 3.936 4.668 4.239 3.336 2.893 4.217 3.913 2.415 2.994 4.019 3.922 4.566 3.561 3.106 4.259 3.360 1.921 2.821 4.544 4.161 3.543 2.768 2.943 2.399 2.090 2.363 2.642 2.113 2.487 2.468 1.772 1.775
+ 2.815 3.264 3.645 3.621 4.593 4.460 5.140 3.832 3.727 4.382 3.300 3.374 3.876 4.880 4.054 3.954 3.411 3.252 4.700 4.204 3.100 3.364 4.640 3.448 4.152 3.454 1.896 2.071 2.214 2.474 3.219 2.310 2.411 2.917 1.477 1.300
+ 4.933 3.033 2.853 3.699 3.370 3.762 5.016 4.253 4.511 3.350 3.091 2.757 2.550 2.973 2.842 2.376 3.939 3.742 3.271 3.419 3.881 3.895 3.691 4.181 4.102 3.710 2.892 3.480 3.119 3.221 2.784 3.182 1.585 2.125 2.327 1.499
+ 6.065 5.114 3.426 4.367 3.485 3.589 4.049 3.957 3.679 2.530 2.554 2.649 3.706 4.072 4.141 2.301 2.831 4.314 4.012 3.527 2.978 3.293 4.577 3.853 3.331 3.214 2.881 2.391 3.155 3.014 2.056 2.713 1.489 2.391 2.488 1.390
+ 6.004 6.099 4.962 5.562 5.808 6.084 6.402 6.336 4.226 0.938 2.203 4.130 4.538 4.320 4.401 3.102 3.794 3.851 4.195 3.883 3.824 3.663 4.430 3.706 4.567 3.603 3.364 2.994 2.653 3.035 2.284 3.270 2.231 2.685 2.574 1.684
+ 9.428 9.533 9.724 9.887 10.440 9.577 9.877 9.015 8.510 7.241 7.199 6.815 6.203 6.336 6.221 6.254 6.055 5.699 5.111 5.237 5.561 5.079 5.289 4.785 4.997 4.348 3.889 4.588 4.529 4.620 4.513 4.692 4.895 4.834 4.508 3.253
+ 11.068 11.280 11.558 11.782 11.771 11.306 11.317 10.819 9.505 8.400 7.597 7.837 7.478 6.682 7.739 7.561 6.955 6.854 6.334 6.230 7.102 6.873 6.614 6.381 5.892 5.783 5.056 5.833 5.736 5.913 5.516 5.924 6.336 6.011 5.627 4.263
+ 9.798 10.270 10.577 11.027 11.094 10.784 10.611 10.519 9.214 8.246 7.475 6.206 5.945 6.318 6.836 6.814 6.101 5.804 6.489 6.335 7.513 8.010 8.303 8.264 7.764 6.449 4.168 3.907 3.810 3.994 3.627 3.752 4.172 3.820 3.256 2.406
+ 9.434 10.021 9.054 9.170 10.126 10.288 9.117 9.014 7.535 6.636 5.764 4.832 4.466 5.102 5.525 5.303 5.041 4.127 4.609 4.211 6.153 6.078 6.363 6.415 6.050 4.611 4.207 4.116 4.421 3.771 4.040 3.936 3.773 3.827 3.385 3.144
+ 8.473 7.335 7.019 7.265 8.647 9.211 7.614 5.222 4.984 5.300 4.429 2.501 2.206 5.278 5.067 4.219 3.535 3.486 3.279 3.205 3.748 4.148 4.591 4.469 5.050 4.630 5.008 5.171 5.728 4.868 5.148 4.867 4.536 3.937 3.349 2.513
+ 4.086 4.843 4.055 4.461 6.465 6.945 6.855 4.597 4.060 4.200 4.225 3.081 3.273 3.815 3.786 3.350 3.673 3.402 2.382 2.293 2.533 2.427 3.079 3.817 3.438 3.078 3.946 3.722 4.349 3.630 3.297 3.101 2.970 2.601 3.398 2.406
+ 5.714 4.317 5.257 7.238 6.916 6.683 6.615 7.539 5.675 6.916 6.253 6.137 5.268 4.747 5.163 4.815 4.693 4.510 4.971 5.021 5.157 5.477 6.080 6.464 6.382 5.899 5.491 5.226 5.195 4.936 4.223 4.426 4.660 4.659 4.005 3.939
+ 8.223 8.550 8.465 8.550 8.066 7.880 8.641 9.383 9.773 10.485 10.447 9.511 7.960 6.901 7.772 8.137 7.855 7.658 7.489 7.944 8.327 8.657 9.407 9.954 9.920 9.173 8.742 8.124 8.096 8.222 6.607 7.243 7.958 7.738 6.597 6.121
+ 6.121 7.146 7.008 5.906 4.795 5.932 4.892 5.767 6.764 8.252 8.369 6.753 4.295 4.151 5.337 4.969 4.206 4.835 4.639 4.840 5.004 5.201 6.118 6.930 6.904 6.515 6.667 5.077 5.216 5.509 4.119 4.783 5.645 5.815 6.216 5.491
+ 3.114 2.977 4.377 4.270 4.373 4.133 3.598 4.572 2.469 4.953 5.387 4.154 3.166 3.793 4.092 3.591 3.457 4.146 3.864 5.204 5.718 5.054 6.052 6.391 6.214 6.250 7.182 5.976 5.606 4.953 5.329 5.623 6.332 6.853 6.839 6.937
+ 3.821 4.354 4.098 3.965 4.648 4.675 6.119 5.297 4.336 5.102 6.064 4.156 3.486 3.671 4.181 4.413 5.975 5.857 5.642 6.443 6.737 5.256 6.515 6.166 6.593 6.559 6.652 6.603 6.490 6.783 5.599 6.834 7.485 7.290 7.031 7.059
+ 3.331 2.665 2.846 3.961 2.495 4.621 6.069 6.799 6.415 5.347 6.949 5.854 4.243 3.673 3.624 4.686 6.512 7.535 7.439 7.010 7.157 6.810 5.948 7.000 5.824 6.772 8.518 6.510 6.600 6.272 6.255 6.115 7.132 8.286 8.022 6.252
+ 4.430 3.882 4.162 4.635 4.865 4.230 5.768 6.273 6.179 8.032 8.448 6.940 3.668 3.708 4.872 4.444 5.662 7.634 7.829 7.205 7.774 6.918 5.899 7.288 6.817 6.176 7.750 6.746 6.204 5.957 6.158 6.716 7.525 7.344 7.302 6.888
+ 2.342 3.194 4.598 4.749 4.182 4.042 5.140 5.869 6.244 6.964 6.270 4.945 3.782 4.125 4.790 4.890 5.102 6.150 5.847 5.999 6.214 5.880 5.411 6.696 7.144 4.933 7.005 6.046 4.624 4.043 4.538 5.617 5.898 6.170 5.869 5.432
+ 4.400 5.016 4.712 3.131 3.885 4.923 5.115 4.913 5.842 6.165 6.088 6.252 5.034 5.455 5.016 3.418 3.256 4.015 4.767 4.005 4.903 4.806 5.471 5.099 4.482 4.684 5.130 4.611 4.449 5.047 4.601 4.951 4.675 5.259 4.587 4.346
+ 4.763 6.456 7.064 6.150 5.004 5.944 5.875 4.684 4.857 4.191 5.851 4.870 2.754 4.581 4.546 4.265 4.191 3.543 4.040 3.807 4.092 4.059 5.088 4.343 4.502 3.795 3.702 3.985 4.413 4.164 4.567 4.432 3.761 4.177 3.903 3.145
+ 5.244 5.905 5.178 5.596 5.559 4.382 5.296 4.366 4.522 4.276 4.124 4.817 3.668 4.634 4.357 4.279 4.177 4.271 3.886 4.220 4.039 4.749 4.856 3.571 3.247 2.964 3.232 4.211 3.772 3.211 3.790 3.734 3.686 3.381 3.046 2.555
+ 4.840 4.570 4.415 3.570 4.755 4.791 4.114 4.068 3.740 4.683 5.071 4.477 3.060 4.844 4.239 4.307 2.982 3.240 4.208 3.186 4.159 3.656 3.294 3.746 3.251 2.291 3.184 3.562 3.713 3.354 2.881 3.318 4.221 3.700 2.904 1.649
+ 4.268 4.386 5.235 4.717 5.428 5.290 4.965 3.219 4.112 3.604 4.402 3.711 3.507 4.013 4.062 4.891 4.609 3.669 3.114 3.400 4.142 4.025 4.433 4.790 4.076 4.412 3.564 3.173 3.495 3.553 3.163 2.453 3.366 2.763 2.734 2.207
+ 4.693 4.226 4.993 4.901 4.973 5.268 5.338 3.371 4.177 3.820 5.126 5.096 4.453 4.464 4.012 3.179 3.808 3.832 2.682 3.579 4.286 4.184 4.380 4.462 4.150 3.472 3.082 4.474 3.751 3.383 2.769 2.984 2.805 2.797 2.522 2.279
+ 5.493 5.076 5.025 4.181 3.376 5.051 4.563 4.642 4.371 3.992 4.744 4.332 3.403 3.525 3.617 2.415 2.971 3.475 3.321 3.844 3.749 3.406 4.309 4.762 4.789 4.084 3.889 5.200 5.183 4.195 3.742 4.150 4.399 4.783 3.883 3.550
+ 6.404 6.149 6.194 5.669 6.217 6.183 6.171 6.246 5.511 6.323 6.449 5.952 5.233 3.834 5.131 5.895 5.228 5.339 5.476 5.849 6.131 6.332 6.550 7.060 7.313 7.602 7.870 8.946 8.026 6.783 4.296 5.300 6.000 8.059 7.845 7.596
+ 4.884 5.194 4.994 5.059 5.095 6.216 5.492 5.172 3.992 4.496 5.116 5.923 4.215 4.060 4.722 4.235 3.498 4.210 3.640 4.093 4.412 4.762 4.805 5.477 5.624 5.789 6.218 8.230 6.859 5.343 3.340 3.992 5.733 7.518 6.200 6.297
+ 6.252 7.233 7.539 6.706 6.565 7.076 6.852 6.338 6.472 6.861 7.281 6.849 5.264 3.780 4.318 5.298 4.546 4.624 5.146 5.186 4.968 4.410 5.710 5.690 5.552 5.407 5.751 6.908 6.255 4.665 3.971 3.795 4.004 4.945 4.090 4.203
+ 5.502 6.433 6.703 5.514 4.112 6.234 5.074 4.992 3.683 4.795 5.950 6.225 4.278 3.542 3.662 3.762 4.597 5.250 4.032 4.262 4.569 4.224 5.053 5.037 4.477 3.826 4.514 5.842 5.797 4.666 2.650 2.994 3.208 4.810 4.870 4.032
+ 3.887 4.924 5.919 5.753 6.135 5.814 5.474 3.697 3.909 5.777 6.025 5.443 3.263 4.697 4.905 3.512 3.958 4.945 4.082 4.232 4.136 5.155 4.859 4.203 5.114 5.572 4.742 4.812 5.457 5.122 3.264 2.482 3.341 4.101 4.502 3.925
+ 7.629 6.949 7.345 6.973 6.445 7.337 6.929 5.392 6.376 8.102 8.364 7.624 5.027 4.436 4.583 5.149 4.711 5.441 5.917 4.775 4.944 5.008 4.513 4.463 4.742 5.009 4.932 4.398 6.452 5.783 3.338 3.818 4.300 4.779 3.732 3.871
+ 6.676 6.841 7.196 6.937 6.531 5.962 4.730 4.280 5.389 6.754 6.243 6.594 3.910 3.900 4.607 4.873 4.945 4.705 5.287 5.105 4.585 4.999 4.424 5.042 5.018 5.185 5.115 4.960 5.943 5.093 4.207 4.196 5.016 5.261 4.298 3.815
+ 6.856 5.760 6.110 5.358 4.150 5.513 5.920 6.768 7.252 6.385 6.440 5.165 5.546 5.141 5.429 4.602 4.521 5.208 4.834 5.062 5.168 6.080 6.244 6.106 5.573 4.881 5.263 5.333 5.603 5.659 4.599 6.145 6.930 6.087 4.664 4.206
+ 6.065 4.124 5.813 5.877 5.159 6.088 4.900 5.215 5.592 6.151 6.430 6.606 6.139 4.951 4.928 4.616 4.735 5.446 5.318 4.201 5.306 5.946 5.771 6.801 6.220 5.482 4.907 6.406 6.449 5.593 5.250 6.111 7.565 7.137 6.398 5.670
+ 5.589 6.615 6.655 4.722 5.433 6.238 5.689 5.644 4.675 6.156 6.539 6.928 6.331 5.574 4.529 5.812 5.978 6.322 6.184 5.927 4.989 5.326 5.810 6.474 6.352 6.789 5.911 6.068 6.366 6.237 5.629 5.872 7.381 7.233 6.615 5.900
+ 5.629 4.813 6.188 5.803 5.219 4.377 5.259 6.604 6.163 5.939 6.415 7.978 6.915 5.802 5.327 6.535 6.476 5.697 4.831 5.714 5.795 6.124 6.502 6.960 6.627 6.921 5.861 6.142 6.430 6.370 5.643 6.295 6.811 6.766 7.424 6.349
+ 3.965 2.320 3.328 2.718 2.786 4.237 5.969 6.780 6.668 7.247 6.786 5.888 6.635 5.608 4.942 5.306 6.616 6.343 5.300 5.776 6.083 5.308 6.603 7.527 7.084 6.526 5.373 5.364 6.724 6.581 4.965 6.385 7.033 6.961 7.302 6.415
+ 1.958 3.464 3.929 2.837 3.216 4.287 5.107 4.015 5.743 4.443 5.193 5.018 4.665 4.977 4.789 4.523 5.273 5.698 5.319 4.616 4.412 5.778 6.091 7.069 6.604 6.483 5.296 5.874 5.963 5.827 5.004 5.932 6.447 6.095 6.497 6.040
+ 3.466 2.647 3.642 3.329 5.459 6.451 5.352 2.653 5.251 4.895 5.696 4.948 5.315 4.378 4.683 3.931 5.332 5.877 5.533 4.499 3.000 5.081 5.917 6.239 5.692 6.320 5.144 5.488 5.344 5.323 4.341 5.278 5.873 5.645 6.213 5.371
+ 4.874 3.366 3.075 4.439 4.031 5.118 4.842 5.278 4.613 4.237 6.805 6.426 4.844 4.750 4.128 3.844 3.818 4.445 5.098 4.990 4.401 3.428 5.221 4.824 4.415 4.440 3.768 4.413 5.076 4.338 3.751 4.952 5.013 4.706 4.769 4.415
+ 2.897 4.493 4.490 5.407 5.262 5.694 5.297 4.600 5.424 5.569 6.447 5.482 2.598 5.271 5.253 5.109 4.855 4.569 4.214 3.084 4.117 3.560 3.814 3.835 3.949 3.786 3.317 3.213 3.987 4.059 2.951 3.437 4.211 4.229 3.774 2.916
+ 5.163 4.526 2.917 2.336 3.007 4.959 4.162 2.371 1.668 3.451 4.289 2.956 0.846 3.979 4.527 4.515 4.250 3.534 4.219 3.945 4.041 3.684 3.921 4.463 3.992 3.737 3.671 2.517 2.920 3.439 2.824 2.867 3.170 3.518 2.487 1.936
+ 3.949 3.657 3.577 4.000 3.720 4.133 4.807 3.856 2.643 3.765 4.175 2.071 1.808 3.683 3.676 2.812 3.097 2.683 3.738 3.522 4.074 3.832 3.877 4.198 2.960 2.789 3.355 2.977 3.081 3.663 3.596 3.255 3.141 2.338 2.856 1.917
+ 3.825 4.602 4.780 3.951 3.432 4.236 4.641 2.494 3.563 3.823 4.911 3.784 2.403 4.181 4.605 4.666 3.596 2.492 3.636 3.545 4.131 2.825 3.979 4.206 3.865 4.220 3.898 3.027 3.062 2.656 3.224 3.319 3.160 2.897 3.394 2.684
+ 3.849 4.751 3.528 4.158 4.902 4.372 3.893 2.006 2.770 3.948 4.337 2.945 3.664 5.049 4.256 3.804 5.243 4.232 3.498 3.769 4.854 4.832 3.124 3.783 3.850 4.412 5.218 4.707 5.320 5.276 5.614 5.860 5.738 5.601 6.108 5.790
+ 4.694 4.632 2.716 2.195 4.534 5.166 5.017 3.484 4.622 4.415 3.446 3.747 3.019 3.835 4.073 3.910 4.384 4.282 4.529 4.540 4.431 4.953 4.908 4.152 4.059 3.950 4.858 4.281 4.925 4.891 5.490 5.616 5.253 5.063 5.818 5.566
+ 1.017 3.473 2.739 2.778 3.720 2.893 3.699 3.389 3.047 2.480 3.695 3.957 3.679 4.053 4.450 5.339 4.872 4.020 4.199 4.427 4.524 4.776 4.784 3.677 3.474 3.185 3.045 2.288 3.395 3.330 3.698 3.391 2.792 2.818 2.567 1.301
+ 4.103 3.434 3.049 3.342 3.988 3.815 3.290 2.926 3.443 3.080 3.298 4.878 3.513 4.766 4.506 5.077 5.141 4.680 3.462 3.515 3.106 4.645 4.863 3.164 3.029 3.401 3.620 2.899 3.767 3.340 3.308 3.417 2.766 2.614 2.751 2.120
+ 4.977 5.103 4.576 3.021 3.130 4.883 4.876 3.391 0.971 2.538 3.074 3.485 2.270 5.137 4.505 4.845 4.425 3.914 3.017 3.649 4.175 4.029 4.069 2.991 4.348 3.674 3.855 3.866 3.227 2.884 3.037 2.965 2.898 2.310 2.014 2.355
+ 4.569 3.344 2.508 4.705 5.043 4.200 4.255 3.612 4.779 4.972 3.467 3.359 3.337 4.617 4.112 2.526 3.843 4.305 3.926 4.577 3.579 2.721 3.367 3.989 4.487 3.751 3.576 3.866 3.993 4.061 3.173 2.174 3.010 2.725 3.025 2.187
+ 5.527 5.175 4.814 4.449 4.171 3.899 5.378 5.180 3.833 2.796 2.165 3.259 4.208 4.114 4.752 3.676 3.995 3.891 3.618 2.965 2.958 2.198 4.203 4.344 3.021 3.025 4.398 3.999 3.678 4.093 3.930 3.011 3.032 3.090 2.792 1.963
+ 6.221 5.435 4.216 4.060 4.994 5.193 3.829 3.951 4.693 3.197 1.884 3.452 3.774 4.264 4.506 4.061 4.232 3.736 4.316 3.875 3.571 4.204 3.963 3.193 3.887 3.219 3.556 3.119 3.282 2.677 3.972 3.917 3.084 2.250 2.346 2.203
+ 5.341 4.318 4.606 4.311 4.500 5.153 5.229 3.737 3.787 3.306 2.987 3.431 3.427 6.077 5.548 4.143 3.990 3.392 4.002 3.916 4.326 4.535 3.470 3.380 3.961 3.552 3.381 2.347 3.164 3.867 3.025 3.536 3.126 2.999 2.156 2.059
+ 4.452 3.967 3.953 2.274 3.709 6.059 6.020 4.585 4.802 4.481 4.652 4.093 3.303 5.389 5.733 3.620 3.658 3.352 2.944 4.155 4.637 3.131 3.733 3.825 3.863 3.519 3.757 3.001 3.222 2.697 3.151 2.956 2.367 2.954 2.504 1.798
+ 3.542 3.038 2.929 2.596 2.419 3.621 5.213 4.944 3.036 2.623 3.713 3.731 2.022 3.419 4.962 4.719 4.687 4.462 3.907 4.189 3.239 2.794 2.920 3.521 3.275 3.401 3.436 3.121 2.657 2.834 2.400 2.441 3.554 3.817 3.078 2.548
+ 4.002 4.693 3.700 4.706 4.623 4.846 6.065 4.768 3.472 4.055 3.386 3.005 3.365 2.881 4.947 4.381 3.337 3.289 3.563 3.761 3.348 2.925 3.462 2.811 2.821 3.273 3.826 3.799 3.650 3.784 3.404 2.514 2.586 2.861 3.236 1.792
+ 1.955 4.203 4.147 4.204 5.252 5.486 5.524 3.606 4.702 3.489 0.889 1.948 2.842 4.944 4.599 3.468 4.271 4.176 3.658 3.446 3.441 4.718 4.393 3.896 3.599 3.287 3.480 2.653 2.773 4.009 3.371 2.073 2.632 3.353 2.951 2.026
+ 2.746 3.191 2.848 4.592 4.858 4.537 4.539 4.379 3.993 3.236 3.689 3.198 2.577 4.508 5.445 4.162 4.729 4.923 4.994 3.067 3.745 4.358 3.461 3.060 3.391 4.024 4.796 4.029 2.646 2.921 2.380 1.934 2.319 3.299 2.362 0.494
+ 5.145 4.448 4.183 3.662 3.780 3.033 2.671 3.478 3.463 3.825 2.864 2.478 2.010 3.781 4.727 4.655 4.393 4.627 3.881 3.965 3.770 3.393 2.969 3.206 3.913 4.360 4.035 3.559 3.839 3.511 2.711 2.158 2.638 2.737 1.887 0.880
+ 5.282 6.293 5.745 4.028 4.083 6.322 6.180 3.439 3.884 4.253 3.651 1.998 2.792 4.734 4.399 4.053 3.641 4.193 3.463 3.977 4.699 4.435 3.740 3.305 4.095 3.993 3.366 3.601 3.978 3.805 2.518 2.647 2.807 2.695 2.738 2.376
+ 3.083 5.981 5.756 4.990 4.760 6.258 6.554 4.951 3.319 3.596 2.735 2.389 2.247 4.314 4.665 5.073 4.811 4.483 3.789 3.456 3.676 3.954 2.974 3.458 3.391 2.768 3.873 3.530 3.341 3.625 2.082 2.925 3.202 3.197 3.007 2.489
+ 4.088 5.431 6.304 4.694 5.133 5.061 5.206 5.465 4.402 4.904 4.659 5.175 4.591 4.955 5.310 5.500 5.412 6.562 7.313 7.600 6.656 6.071 5.484 5.195 4.921 4.787 4.559 6.373 6.715 6.599 6.388 6.001 5.828 5.505 5.376 4.633
+ 5.974 5.380 6.416 6.907 6.287 6.180 7.124 7.169 6.963 6.901 6.361 7.115 6.616 5.800 5.820 5.912 6.434 8.804 10.087 10.762 8.947 8.093 7.479 7.288 6.840 6.272 6.519 9.109 9.274 8.935 8.557 8.017 7.840 7.559 7.389 6.602
+ 3.399 3.647 3.431 4.211 3.899 4.735 4.631 3.258 3.169 3.740 3.175 4.494 3.009 4.937 5.566 4.761 4.680 5.354 7.409 8.935 6.844 5.269 5.158 5.260 3.779 4.050 4.374 6.360 6.839 6.364 6.452 4.111 4.331 4.146 4.005 3.038
+ 1.767 2.468 1.561 2.019 3.962 3.787 2.833 2.247 1.934 2.932 2.533 1.666 3.150 4.910 4.764 3.407 3.252 3.436 3.415 6.514 6.039 4.055 3.910 4.523 3.065 2.963 3.100 4.249 4.185 3.106 3.396 2.777 3.874 4.074 2.921 2.365
+ 2.606 4.092 3.863 2.798 2.829 3.148 3.597 2.627 3.246 3.109 3.688 3.736 3.871 5.460 4.932 4.670 3.920 4.570 4.441 4.028 4.476 4.407 4.783 4.840 3.652 3.526 3.935 4.299 3.785 3.817 4.627 4.719 3.934 3.864 4.028 2.902
+ 3.753 4.769 4.312 3.130 4.168 4.343 5.597 6.519 5.148 5.198 5.881 6.236 6.267 6.567 7.641 6.833 4.190 5.937 5.685 7.324 8.775 7.910 6.487 7.125 6.601 5.963 7.344 7.570 6.276 6.535 7.123 7.044 5.897 5.972 6.163 5.349
+ 2.984 3.191 3.147 4.714 4.803 4.914 4.892 7.080 8.288 7.540 7.034 7.542 8.175 8.035 8.153 7.559 6.990 8.484 9.233 10.984 12.022 10.955 8.486 8.151 8.086 8.341 8.661 8.850 8.405 6.810 7.748 8.033 7.727 5.815 5.889 5.664
+ 6.290 5.734 4.577 5.354 6.745 8.016 7.431 6.803 8.914 9.093 8.320 8.455 8.953 10.834 10.775 10.100 9.619 10.310 11.027 11.196 12.511 12.721 11.025 9.687 9.426 9.633 9.720 10.888 8.851 8.191 8.877 9.213 9.125 9.915 8.904 7.229
+ 8.004 8.121 8.007 7.321 7.601 9.069 7.886 8.731 9.818 10.933 11.581 11.319 11.236 11.708 12.119 10.755 11.642 12.173 12.240 13.304 13.518 12.614 12.485 12.194 11.839 10.449 9.832 11.137 10.197 8.631 9.097 9.024 10.972 11.669 10.319 9.414
+ 10.760 9.988 11.737 11.217 12.127 11.981 12.791 12.916 13.605 13.543 14.293 14.021 14.287 13.948 13.609 13.559 13.524 12.939 13.941 14.797 13.254 13.051 12.679 13.375 12.896 11.682 10.662 10.194 9.142 8.390 9.828 9.461 11.885 12.836 10.183 9.330
+ 11.484 12.988 13.042 12.386 12.915 13.831 14.197 14.971 15.793 16.516 16.043 15.796 15.603 15.220 15.365 15.097 15.174 15.935 16.498 16.433 15.011 13.988 14.148 14.272 13.234 12.028 11.489 10.485 10.119 10.650 11.072 9.837 10.796 11.212 9.089 7.458
+ 11.651 13.436 13.131 12.136 11.750 13.709 13.687 14.694 16.164 17.523 17.529 16.944 16.441 15.770 15.869 16.050 16.721 17.762 18.320 17.560 16.456 16.099 16.662 16.752 15.360 13.779 13.343 12.183 12.109 12.982 12.775 10.865 11.676 10.907 9.335 8.327
+ 10.714 13.279 12.655 11.239 11.701 13.791 13.351 14.074 16.491 17.384 17.453 17.178 16.795 15.703 16.101 15.993 16.870 18.032 18.488 17.236 16.154 16.080 16.515 16.543 14.941 13.174 12.974 12.663 11.674 12.495 12.558 11.166 10.336 10.111 9.320 8.852
+ 11.523 13.556 12.799 11.967 11.745 14.029 13.441 14.698 16.547 17.406 17.672 17.294 16.977 16.008 15.834 16.243 17.301 18.509 18.081 17.135 16.297 16.182 16.823 16.960 15.550 13.676 13.647 13.707 12.584 13.287 13.957 12.484 11.547 9.644 8.995 8.936
+ 11.619 13.692 13.134 12.150 12.612 14.020 14.075 15.294 16.866 17.597 18.077 17.398 16.932 16.431 16.249 16.917 17.929 18.369 17.248 16.215 15.865 15.822 16.629 16.977 15.642 13.783 13.634 14.150 13.714 13.190 14.460 13.887 12.334 10.458 8.628 8.521
+ 12.555 14.193 13.139 13.218 13.104 14.350 14.856 15.873 17.575 17.845 18.674 17.333 16.846 16.824 17.829 17.943 17.870 16.945 15.850 15.154 15.241 15.167 16.103 16.750 15.414 13.400 13.118 13.705 13.985 12.278 13.859 14.263 12.712 10.805 7.530 7.406
+ 13.213 14.424 13.550 13.717 14.018 15.556 16.371 16.553 17.417 17.812 17.909 16.646 16.697 16.748 17.661 17.443 15.837 14.471 14.036 14.134 14.030 14.074 14.947 16.030 14.655 11.906 11.121 11.982 12.882 11.159 10.874 12.609 11.314 10.246 7.056 6.677
+ 13.640 14.257 13.529 12.946 12.269 14.532 15.551 15.765 15.297 14.790 15.032 15.188 15.978 15.534 14.237 13.247 12.738 13.157 12.810 12.922 12.648 13.058 14.144 15.045 14.782 13.061 11.349 10.607 10.129 8.892 9.372 11.376 10.780 9.435 7.571 6.724
+ 13.872 14.690 13.018 12.920 12.424 12.574 10.872 10.113 11.456 11.583 13.491 14.553 14.884 12.444 11.696 11.915 11.618 12.734 11.590 11.845 11.985 12.159 13.385 14.666 14.723 13.272 10.974 9.769 8.399 6.872 8.743 10.988 11.727 10.672 8.698 5.816
+ 13.957 14.400 12.917 12.865 12.457 11.952 11.244 11.002 11.318 11.361 13.835 14.642 14.446 12.025 11.544 11.359 12.015 12.000 11.591 11.964 12.009 11.846 12.900 14.466 14.716 13.600 10.995 9.588 7.799 7.474 9.313 10.265 10.374 10.697 8.961 6.468
+ 13.918 14.162 12.948 12.833 12.556 12.006 11.142 9.386 10.215 11.359 13.515 14.946 14.271 12.225 10.820 11.370 12.059 11.644 12.037 11.850 11.701 11.781 12.815 14.424 14.629 13.209 10.951 9.473 7.963 9.468 10.174 10.358 11.509 10.986 9.133 6.596
+ 13.856 14.043 13.041 12.922 12.646 11.860 10.884 8.958 9.440 10.514 13.179 14.856 14.171 12.243 10.324 10.586 11.388 11.366 11.526 11.460 11.399 11.721 13.013 14.509 14.436 12.491 10.219 8.857 7.184 9.404 9.620 9.913 11.579 10.720 8.789 5.416
+ 13.777 13.947 13.124 13.003 12.647 11.768 10.434 9.634 10.627 11.692 13.000 14.315 13.653 12.241 9.638 10.854 10.505 10.753 11.060 11.409 11.364 11.532 12.837 14.248 13.811 11.395 9.323 7.660 7.589 9.879 9.456 9.547 10.396 9.561 6.493 4.819
+ 13.552 13.869 12.853 13.755 13.370 14.638 15.353 15.265 14.037 13.009 13.071 14.237 14.859 15.089 14.146 11.271 11.431 12.188 12.032 12.084 11.696 11.732 12.839 13.860 12.754 10.300 8.851 9.330 9.497 11.245 11.195 10.278 10.537 9.766 8.227 7.136
+ 13.377 13.223 12.860 13.105 14.112 15.286 16.690 16.863 17.270 16.020 14.807 15.439 16.051 16.872 17.011 16.588 15.593 13.665 13.760 13.372 13.578 13.349 14.300 15.048 13.841 11.759 11.687 10.775 10.349 12.632 12.898 11.874 11.288 10.203 7.982 7.143
+ 12.109 12.243 13.520 13.350 13.857 15.044 15.933 17.807 18.081 17.646 15.173 15.493 15.327 15.685 17.456 18.227 17.593 15.309 14.942 14.255 14.382 14.103 15.271 15.987 14.504 12.901 12.967 12.012 11.076 13.254 13.585 12.285 11.594 9.667 8.059 7.013
+ 13.038 12.733 12.880 13.132 13.999 14.791 16.258 17.628 17.966 17.247 15.019 14.963 14.435 14.735 15.790 17.548 18.732 17.229 15.856 14.611 14.213 14.254 15.665 16.564 14.430 13.409 13.529 12.249 10.825 12.592 12.714 11.743 11.009 10.255 10.338 8.624
+ 13.654 13.345 11.881 13.223 13.990 14.813 16.795 17.416 17.020 15.745 14.641 13.866 13.700 13.907 14.435 15.267 16.997 17.911 16.907 14.620 13.383 13.269 14.306 15.944 14.376 12.879 12.828 11.306 9.167 9.024 10.944 12.288 11.643 11.703 12.608 9.229
+ 13.157 12.934 11.950 13.248 13.585 13.872 15.247 14.432 13.754 13.925 12.572 11.206 11.093 10.026 10.569 10.823 12.349 14.496 14.866 14.537 13.944 12.875 13.576 13.447 12.786 14.259 12.328 11.069 11.639 11.177 10.340 11.246 10.318 11.542 11.309 9.232
+ 11.375 11.308 9.501 10.144 9.165 10.312 12.168 12.112 11.394 10.624 8.640 9.465 7.854 8.279 8.681 9.975 10.551 10.296 11.425 10.778 10.558 8.645 9.423 10.232 10.443 11.961 10.185 10.171 11.036 10.510 9.802 10.369 9.688 9.081 8.958 7.083
+ 9.061 7.411 8.779 8.553 8.448 8.679 9.871 10.174 11.787 10.680 10.103 9.919 8.308 6.247 8.697 9.834 10.588 10.626 9.060 7.313 8.770 9.206 9.134 9.389 9.648 10.133 8.755 6.721 7.148 7.759 5.686 5.916 6.790 6.691 7.419 6.311
+ 7.550 7.209 7.704 6.843 6.352 7.168 8.452 9.680 11.089 12.408 11.036 7.985 7.571 8.038 7.989 9.347 11.040 11.262 8.210 8.915 8.592 9.067 10.139 10.014 10.776 10.378 10.031 9.618 8.818 8.861 7.449 7.846 8.614 8.824 8.656 8.088
+ 6.987 7.145 7.008 6.345 6.143 7.083 9.408 9.477 9.894 10.813 10.225 8.007 6.795 6.728 7.601 8.400 9.363 8.837 7.577 8.081 7.611 6.138 7.697 8.530 10.047 9.437 7.049 7.034 7.426 6.998 6.118 6.766 7.773 7.432 7.304 7.408
+ 7.600 7.436 7.761 8.021 9.339 9.848 9.484 9.246 10.331 10.846 11.002 11.095 10.415 8.909 10.039 10.937 10.987 10.285 10.487 10.495 11.507 12.056 11.440 12.241 13.525 13.793 15.413 15.506 15.063 14.987 12.814 12.247 11.867 12.004 11.240 10.607
+ 6.495 6.296 7.748 8.665 8.827 9.508 9.848 9.707 9.689 10.169 10.626 10.682 9.907 9.083 10.031 10.169 9.960 9.425 9.917 10.761 11.612 11.832 12.789 13.981 14.294 14.781 16.118 15.622 15.903 15.348 13.924 13.824 12.921 13.513 12.776 12.789
+ 7.248 7.248 7.529 7.155 7.944 7.067 7.269 8.187 8.292 7.933 7.781 8.272 7.139 7.722 8.489 8.741 9.606 10.435 12.010 11.722 12.332 12.602 14.643 16.126 15.442 15.634 15.642 14.823 15.292 15.906 15.335 15.078 15.099 15.132 15.424 14.788
+ 9.049 7.062 7.876 8.437 10.768 11.471 10.754 10.217 10.086 10.483 11.269 10.723 10.323 10.971 11.345 11.322 12.583 12.565 13.624 14.630 15.018 13.824 14.485 15.115 15.251 15.612 14.546 14.431 14.985 15.539 15.207 14.792 15.153 15.039 15.756 14.315
+ 11.197 11.789 11.332 11.180 11.193 11.825 9.987 8.766 9.428 8.168 9.715 9.054 9.323 9.977 10.391 11.229 12.134 13.894 13.849 14.395 14.197 14.248 14.929 13.720 14.608 13.860 13.261 13.591 14.419 15.364 13.484 13.602 13.644 13.645 12.931 12.553
+ 15.325 13.974 14.067 14.691 13.591 11.919 9.521 7.805 9.115 9.916 9.721 10.194 10.803 10.481 12.517 13.117 13.169 13.953 14.483 13.430 12.370 13.336 12.701 11.303 11.533 12.159 12.167 12.262 11.720 12.340 11.059 11.796 12.300 12.849 12.459 12.364
+ 14.812 14.167 14.061 13.415 13.278 13.199 12.685 12.266 12.111 11.938 10.215 10.515 10.666 11.107 13.434 13.984 13.090 13.527 12.973 12.485 13.009 12.633 12.285 11.641 10.571 10.471 11.203 11.305 11.140 10.901 10.203 11.161 11.190 12.649 11.521 10.731
+ 17.104 16.680 15.788 14.984 14.340 12.911 13.004 13.243 12.100 11.698 11.582 10.727 11.582 10.893 13.082 13.731 12.319 12.533 12.849 11.652 11.608 11.429 12.617 12.546 10.321 10.479 9.880 10.875 10.180 10.177 10.073 9.709 9.505 11.017 10.702 9.009
+ 16.650 17.130 15.649 14.880 14.411 13.368 13.134 12.821 11.773 10.931 11.180 10.787 10.909 11.209 12.886 12.595 12.307 11.769 12.040 12.008 11.032 11.168 10.601 11.150 11.059 11.207 11.036 10.523 9.591 9.763 9.718 9.717 9.131 9.691 9.176 7.654
+ 17.832 17.076 14.509 15.326 14.410 13.798 14.023 13.674 11.420 12.194 12.862 12.046 11.204 10.797 11.515 12.168 11.864 12.281 12.332 10.724 11.032 10.922 10.262 10.418 10.486 10.625 11.080 11.004 9.518 9.889 9.738 9.598 9.371 8.230 8.634 7.718
+ 15.798 15.383 15.100 15.398 14.526 12.356 12.546 12.055 10.920 11.111 11.127 11.110 11.201 10.857 11.517 11.062 10.893 10.153 9.673 10.058 10.318 10.187 9.627 9.558 8.811 9.752 10.167 9.494 8.410 9.096 9.341 9.144 8.371 8.005 7.976 6.558
+ 14.350 13.771 13.139 13.061 11.129 11.492 10.489 8.681 8.893 8.949 10.115 11.436 12.830 11.389 10.312 11.101 9.764 9.569 9.398 10.755 11.116 10.771 9.254 9.260 9.015 9.633 9.370 9.458 9.310 8.833 9.039 8.499 7.625 8.557 8.274 7.176
+ 14.734 13.225 11.352 12.479 12.038 9.741 9.841 9.381 9.271 8.290 9.481 11.505 13.697 13.313 11.865 10.831 10.638 9.836 10.412 10.958 11.129 11.083 10.684 10.102 9.081 9.673 8.900 9.674 9.493 8.249 8.826 8.352 7.881 8.187 8.021 7.439
+ 11.833 9.136 10.082 10.608 10.579 8.950 8.618 7.703 7.119 7.371 8.260 10.448 11.824 14.417 13.949 11.000 9.941 10.766 9.563 8.832 8.775 9.192 9.742 10.303 9.083 8.068 8.915 9.363 8.373 8.205 8.917 8.134 6.681 6.747 7.624 6.820
+ 11.227 9.504 10.080 11.150 11.416 11.100 10.133 8.623 7.729 7.540 8.078 6.934 9.142 11.339 10.916 9.651 8.828 8.506 8.243 8.849 8.141 7.370 7.631 8.975 8.610 7.950 8.408 7.655 7.598 6.963 6.862 5.992 6.244 6.592 6.797 5.281
+ 7.590 7.194 7.425 6.868 9.132 9.617 7.396 5.965 6.715 5.707 4.959 4.975 6.523 7.603 8.587 9.669 8.413 5.383 6.741 6.120 6.251 5.509 6.819 6.813 5.399 5.887 5.666 5.439 5.663 6.049 5.382 5.062 5.237 6.146 6.021 4.835
+ 6.475 5.989 6.734 7.016 6.467 6.477 5.638 5.492 5.487 3.914 4.761 5.814 5.576 6.026 6.779 7.353 7.219 6.784 5.614 4.834 6.212 6.260 8.202 6.684 5.328 4.451 4.922 4.825 4.577 5.346 5.032 4.939 4.725 5.160 6.276 4.767
+ 5.578 3.747 5.376 5.648 5.953 6.096 4.627 4.635 3.721 4.325 4.245 4.547 5.182 5.936 4.996 6.892 6.875 7.568 8.063 5.775 6.954 6.591 7.649 7.899 7.098 6.194 7.307 6.443 6.290 6.776 5.527 3.841 4.398 4.541 4.783 3.711
+ 5.637 5.160 5.456 4.232 5.858 7.095 6.918 6.675 5.183 5.132 4.328 5.405 5.409 5.519 5.546 6.891 7.148 8.437 9.385 7.798 8.393 8.294 8.473 8.785 7.646 6.614 8.081 7.635 7.287 8.204 6.086 4.802 4.299 3.792 5.652 5.264
+ 5.543 5.323 5.129 3.271 5.582 7.007 7.112 7.744 7.102 6.493 6.353 6.062 5.937 7.098 7.399 7.028 7.747 7.668 9.219 8.974 8.608 9.499 9.311 9.194 9.688 8.264 9.371 9.608 8.741 8.336 8.682 6.823 4.843 5.077 6.568 7.198
+ 5.505 6.793 5.764 4.516 5.989 5.790 7.632 8.081 7.636 8.325 8.717 8.795 8.488 9.073 7.542 8.143 9.348 10.413 11.101 11.111 11.086 10.449 10.255 9.483 9.660 8.585 9.905 10.033 9.414 8.502 9.312 7.261 5.801 6.529 7.634 7.832
+ 8.346 8.935 8.905 8.611 8.187 9.337 10.238 10.791 10.837 10.126 9.560 10.147 10.528 8.616 9.383 10.415 11.417 12.055 11.229 13.300 13.608 10.482 10.383 10.067 10.103 10.006 9.870 9.806 9.042 9.473 10.925 10.511 8.356 7.609 8.732 7.440
+ 7.040 7.458 7.570 8.009 7.141 8.047 8.751 8.273 10.899 10.437 10.994 12.224 12.392 10.543 11.093 10.925 11.266 12.167 12.796 13.851 13.740 12.961 10.534 11.377 11.613 10.107 11.525 11.563 10.546 9.914 11.760 12.138 10.505 9.090 10.104 9.055
+ 8.283 8.307 7.565 7.420 6.886 9.146 9.369 9.167 11.170 11.891 13.228 14.048 13.548 12.260 12.106 11.262 12.568 13.073 14.262 15.950 15.768 14.239 12.547 11.907 11.574 10.955 12.399 12.330 11.074 9.364 10.534 11.971 10.987 10.388 11.693 10.430
+ 8.452 8.969 7.754 7.476 8.864 10.614 11.085 10.631 10.680 11.920 12.553 13.009 13.930 13.231 13.148 12.374 12.602 13.694 13.948 16.656 16.751 14.432 13.878 13.002 13.445 12.567 11.446 12.704 12.361 9.677 10.057 10.880 11.313 12.611 13.043 10.196
+ 8.595 9.019 8.808 9.557 9.409 9.702 10.237 9.208 10.925 12.056 13.646 13.616 13.969 12.972 12.962 13.173 14.494 14.518 13.916 15.321 16.105 15.653 14.461 13.509 13.868 13.345 11.890 12.203 12.192 11.045 10.577 11.763 11.840 12.951 12.590 9.974
+ 10.221 9.266 8.922 10.512 10.780 8.973 8.934 11.363 11.071 10.127 13.847 14.952 14.401 13.405 13.370 13.428 14.755 14.681 14.199 15.767 16.003 13.810 13.025 12.769 13.634 14.012 12.121 11.979 12.255 11.850 11.026 11.822 13.309 13.199 12.196 10.340
+ 10.875 11.838 12.327 11.403 12.831 12.531 13.050 13.021 14.418 14.315 14.608 15.514 15.100 13.703 14.309 13.797 14.763 15.266 16.105 16.320 14.589 13.747 13.767 13.150 13.462 13.652 11.326 10.703 12.313 12.570 11.260 11.385 13.578 14.249 10.629 9.318
+ 11.375 12.828 13.457 11.499 13.333 13.576 15.034 14.637 16.314 16.619 17.511 17.218 16.586 16.243 16.049 15.851 16.174 16.806 17.377 17.634 16.176 15.524 15.265 14.356 12.971 13.410 12.109 11.270 11.751 12.526 11.679 10.688 13.766 13.586 11.201 8.897
+ 11.325 13.011 13.595 11.719 13.009 13.271 15.035 14.687 16.838 17.762 18.372 17.187 16.526 16.868 16.624 16.771 17.358 18.257 18.831 18.369 17.156 16.851 17.071 15.991 13.391 14.257 13.282 12.129 13.553 13.779 13.224 12.153 14.047 13.361 9.966 8.949
+ 10.744 13.173 13.425 11.991 13.122 13.835 14.846 15.484 16.534 18.505 18.260 17.806 16.581 16.370 16.315 16.354 17.320 18.396 19.087 17.708 16.285 16.608 17.107 16.351 13.597 13.930 13.454 12.181 12.759 13.696 13.931 12.629 12.771 12.225 10.158 9.718
+ 11.558 13.676 13.370 13.005 13.390 14.521 14.896 16.157 16.968 18.680 17.775 17.780 16.188 15.846 15.943 16.468 17.612 18.520 18.615 17.108 16.228 16.857 17.791 16.559 13.725 13.602 13.697 12.851 12.810 14.026 15.078 14.314 14.440 13.568 9.290 9.835
+ 11.503 13.929 13.707 13.330 13.652 14.855 15.170 17.086 17.816 19.026 17.373 17.271 16.305 16.168 16.529 17.478 18.752 18.753 17.056 16.440 15.736 16.620 17.502 16.310 13.377 12.838 13.141 12.592 12.548 13.219 14.420 14.593 14.704 14.089 10.595 9.720
+ 11.437 14.279 14.077 13.925 14.420 15.052 16.011 18.241 18.325 19.154 16.964 16.427 15.234 16.593 17.521 18.423 18.345 18.068 15.713 15.535 15.203 15.681 16.753 16.052 13.805 12.574 12.026 11.577 11.361 11.731 12.459 14.096 14.477 13.372 10.670 8.012
+ 11.824 14.711 14.338 14.750 14.971 15.839 17.140 19.108 18.285 18.284 17.714 17.385 16.947 16.193 18.547 17.809 16.694 15.823 14.640 14.037 14.259 14.491 15.848 15.754 14.064 12.295 11.522 10.804 10.903 11.759 13.390 14.573 15.136 13.829 11.840 8.549
+ 12.080 14.854 14.736 15.129 15.637 17.484 18.116 19.087 17.765 15.641 16.848 17.176 17.712 17.524 17.994 16.753 14.062 13.677 13.712 12.973 12.776 12.879 14.388 14.945 13.418 12.496 12.054 10.857 10.439 11.290 13.382 13.655 14.338 14.454 13.019 8.487
+ 11.777 14.929 14.879 15.626 16.402 18.252 17.974 17.243 16.969 15.604 14.658 16.099 17.705 17.407 15.692 14.037 12.716 12.849 12.938 12.131 11.792 11.397 12.529 12.401 13.046 13.260 12.154 10.942 10.650 11.439 14.020 13.641 14.424 15.318 14.303 6.552
+ 11.584 14.946 14.828 16.436 16.980 18.075 17.810 15.170 15.655 14.335 15.114 16.306 17.975 16.239 13.256 12.876 12.876 11.364 10.992 10.861 10.737 11.054 11.026 11.026 12.786 13.036 11.205 10.272 10.265 10.973 13.440 13.140 14.269 15.971 14.934 7.395
+ 11.538 14.704 14.714 16.805 17.201 16.538 16.556 15.520 15.448 15.189 14.251 15.755 16.835 15.391 13.284 12.153 11.483 11.953 10.898 9.944 9.837 10.293 10.231 11.021 12.292 12.299 10.085 9.237 9.120 9.950 12.470 12.781 13.741 15.453 14.256 7.694
+ 11.779 14.496 14.617 17.055 17.288 14.940 15.111 14.830 14.814 15.232 14.090 14.303 15.484 15.553 13.711 11.937 10.703 11.266 10.424 10.151 8.811 9.387 10.050 10.805 11.375 11.449 8.777 7.970 7.957 8.534 11.505 12.032 12.450 13.971 13.024 7.948
+ 11.641 14.140 14.385 17.122 16.987 13.821 13.655 13.539 13.503 14.241 13.099 12.864 15.145 15.676 14.911 12.514 11.392 10.864 9.894 9.626 9.376 9.354 10.173 11.284 10.291 8.975 7.427 5.757 5.737 6.132 8.231 10.361 10.814 12.053 11.911 7.814
+ 11.708 13.618 14.331 16.942 16.359 13.763 12.570 12.690 12.715 12.473 11.910 11.546 11.773 14.109 14.093 13.726 13.460 12.308 11.780 10.641 10.712 10.694 11.638 13.003 12.062 7.986 7.148 6.335 6.585 6.434 7.361 9.820 8.768 10.968 11.490 9.073
+ 12.163 12.836 14.960 16.233 15.576 13.647 12.731 12.463 12.710 12.807 10.894 10.378 9.992 10.760 11.894 12.732 12.762 13.993 14.138 12.828 12.004 12.704 13.285 14.793 13.094 9.538 8.161 7.950 7.693 7.667 8.837 10.807 9.315 10.178 10.383 8.447
+ 11.579 13.149 14.576 14.821 14.344 13.504 12.452 11.825 11.413 11.510 10.775 10.011 10.115 10.394 10.394 10.879 11.125 11.207 12.007 13.277 13.759 14.724 14.764 15.883 14.418 10.955 9.802 9.539 8.698 9.080 10.199 10.931 9.232 12.021 11.611 8.774
+ 11.483 13.338 14.562 15.045 13.502 12.367 11.064 9.735 9.860 10.567 9.938 9.059 8.319 9.607 9.781 9.916 9.796 9.797 10.592 10.851 11.040 13.057 14.842 14.843 14.641 14.035 13.307 12.125 11.126 10.864 12.234 12.352 10.673 14.097 13.289 8.952
+ 11.761 13.495 13.509 14.484 13.377 12.284 11.107 9.500 10.451 10.707 9.615 8.107 9.042 8.285 8.411 8.680 8.802 9.778 9.132 9.084 10.231 11.144 13.960 13.958 12.159 12.133 12.121 11.526 12.180 11.634 12.214 13.446 12.005 13.901 13.739 9.318
+ 12.688 13.454 14.451 14.985 13.076 11.730 10.558 9.671 9.758 10.828 8.569 8.125 8.155 8.415 8.610 8.760 9.181 9.027 9.192 9.370 9.960 11.482 13.519 13.643 11.613 11.202 11.633 11.578 12.406 12.452 12.873 13.985 12.979 14.656 13.943 10.662
+ 12.381 14.970 14.566 14.321 13.939 11.909 11.096 11.025 10.646 10.742 9.317 8.995 9.372 8.779 8.229 9.022 9.317 9.373 9.681 9.698 10.567 11.451 14.253 14.113 12.538 12.469 12.713 12.832 14.425 14.663 14.918 15.926 15.310 15.565 14.284 10.343
+ 12.512 15.309 15.061 13.462 13.767 12.210 11.974 11.499 10.999 10.019 8.762 8.667 8.582 8.207 9.070 9.523 9.900 10.479 10.934 11.228 11.644 12.578 14.788 15.232 13.615 13.423 13.702 13.655 15.167 16.041 16.099 17.231 16.898 16.426 15.419 11.394
+ 12.501 15.477 15.255 13.712 13.564 12.359 11.994 11.087 10.534 9.619 9.598 9.452 8.454 8.874 9.130 8.995 9.413 9.645 9.654 10.601 11.162 12.883 15.372 16.013 13.410 13.239 13.559 13.857 15.633 16.431 16.516 17.835 17.576 16.641 15.708 11.527
+ 13.043 15.710 15.319 13.963 13.547 12.788 12.192 10.701 9.969 10.283 9.883 9.556 8.544 9.956 9.129 9.258 9.353 9.534 10.188 10.464 11.268 12.714 15.411 15.996 13.920 13.188 13.380 13.859 15.701 16.567 16.698 18.043 17.629 15.983 14.891 11.151
+ 13.132 15.704 15.177 14.016 13.465 13.187 12.398 10.789 10.532 11.033 10.161 9.640 8.773 9.767 8.734 9.322 9.173 10.122 10.289 10.914 11.515 12.458 14.572 15.645 14.079 13.151 13.225 13.976 15.691 16.230 16.365 17.999 17.482 14.826 13.649 11.323
+ 13.015 15.629 15.055 14.106 13.655 13.526 12.859 10.974 10.675 11.183 9.714 9.380 8.466 9.150 9.034 9.430 9.618 10.316 10.098 11.044 11.171 12.702 15.046 15.621 13.920 12.911 13.073 13.971 15.500 15.356 15.648 17.217 16.530 13.495 12.252 11.072
+ 12.663 15.492 15.100 14.332 14.251 13.583 13.347 11.077 10.435 11.033 8.833 9.092 9.721 9.491 9.714 9.459 10.152 10.477 10.328 10.647 11.136 12.764 15.308 16.085 14.394 12.625 13.277 14.426 15.359 14.957 15.712 17.593 16.692 13.693 11.919 10.413
+ 12.140 15.251 15.001 14.582 14.805 13.370 13.317 10.937 10.108 10.421 8.549 8.849 10.006 9.826 9.491 9.432 9.965 10.324 10.424 10.921 11.452 12.840 15.430 15.682 14.006 12.668 14.077 14.803 13.647 13.415 14.930 17.294 16.185 13.361 11.246 10.715
+ 12.022 15.019 14.783 14.779 15.353 13.337 13.346 10.832 9.502 9.766 8.470 8.551 9.665 9.173 9.373 9.448 9.840 10.265 10.816 11.039 11.651 13.474 15.844 15.837 13.661 14.302 15.360 14.963 13.107 12.856 14.381 16.768 15.195 13.060 12.348 12.435
+ 11.916 14.705 14.534 14.970 15.571 13.041 12.625 10.941 9.030 9.707 9.175 10.247 11.217 11.016 10.425 9.846 9.746 9.559 10.288 10.916 11.741 14.478 15.955 15.036 12.775 13.917 16.395 15.990 14.389 12.674 14.465 17.033 15.369 14.354 13.530 12.263
+ 12.180 14.216 13.981 15.012 15.478 13.344 12.184 11.410 10.711 10.521 10.050 9.953 10.073 10.453 10.272 10.829 10.955 10.950 10.934 11.175 13.204 15.424 15.504 14.103 12.926 14.179 15.517 14.476 13.088 12.724 13.855 16.593 14.694 14.674 15.159 13.738
+ 11.102 13.589 13.112 14.133 14.537 12.761 13.308 10.952 10.612 11.042 10.291 10.102 9.227 10.372 10.047 9.906 10.354 11.265 12.130 12.647 14.334 15.958 13.962 13.343 12.269 15.458 16.610 14.429 12.548 11.671 12.963 14.746 13.839 14.190 15.049 14.362
+ 10.482 13.492 13.327 14.312 14.606 13.262 13.143 10.280 10.987 11.133 10.769 10.210 9.598 10.443 10.538 10.522 10.617 10.701 11.806 12.562 14.623 15.527 13.771 12.633 11.895 14.141 15.342 13.294 12.257 11.867 13.346 14.949 14.015 14.723 15.208 15.567
+ 10.212 13.372 13.196 14.293 14.599 13.412 13.467 10.318 8.844 11.260 11.171 11.486 9.960 10.145 10.714 10.355 10.226 11.202 11.876 12.044 14.478 15.036 13.521 12.305 12.242 13.671 14.997 13.639 12.948 12.547 14.753 16.628 14.653 15.495 15.950 16.027
+ 10.930 13.952 13.822 14.506 14.976 13.547 13.131 10.693 11.945 12.104 10.781 10.840 11.300 10.877 10.219 10.265 10.711 11.208 12.226 13.028 14.370 15.157 14.460 12.789 11.903 13.732 15.156 14.210 12.850 12.164 13.826 15.679 14.515 14.692 16.734 16.589
+ 10.737 14.054 14.129 15.418 15.547 12.951 12.975 12.144 11.463 10.923 10.949 11.430 10.976 10.982 11.377 11.180 11.060 11.899 12.126 13.376 14.596 15.353 14.492 13.118 12.371 13.251 14.652 14.226 13.015 13.224 14.075 16.360 14.901 15.251 15.311 14.805
+ 12.178 14.517 14.154 15.791 15.685 12.207 12.603 12.319 11.236 11.137 10.922 9.949 11.047 11.368 11.084 10.539 10.643 11.485 12.025 12.958 14.537 16.030 15.567 14.275 13.454 14.559 15.711 14.756 13.737 13.738 14.607 16.677 14.499 14.729 15.828 14.652
+ 12.064 14.908 14.577 15.809 15.804 13.776 12.803 11.303 11.972 12.238 10.769 10.997 10.946 11.146 11.271 11.056 10.905 11.735 12.456 13.068 13.875 16.201 16.125 14.147 13.244 13.472 14.943 14.069 14.230 14.653 15.469 15.186 13.491 15.148 14.331 13.080
+ 12.956 15.286 14.705 15.840 15.620 13.894 12.831 11.739 11.724 12.020 11.575 10.396 9.620 10.787 9.736 10.615 10.457 10.938 11.323 11.945 13.642 16.043 16.872 15.421 14.120 14.551 15.033 13.886 13.859 14.672 16.316 16.125 13.999 14.622 14.010 12.902
+ 13.445 15.402 14.647 15.852 15.193 13.622 12.229 11.728 11.268 11.270 11.532 10.026 9.995 10.533 9.808 10.122 10.444 10.901 11.580 12.230 13.307 15.576 16.684 16.148 14.948 15.351 15.745 14.060 14.083 15.175 16.768 15.878 14.380 14.434 13.246 8.859
+ 13.653 15.234 14.449 15.730 14.621 13.525 11.918 11.451 10.711 10.763 11.028 9.297 9.869 10.030 10.090 10.310 10.489 11.321 11.517 12.446 13.438 15.272 16.329 16.126 15.256 15.494 14.775 13.626 13.628 14.971 16.858 15.913 14.639 14.858 14.109 9.324
+ 13.871 15.047 14.323 15.388 13.936 13.243 12.147 11.622 10.739 11.077 10.827 9.198 10.044 10.044 9.862 10.700 10.149 11.601 11.676 12.767 13.598 15.133 15.887 16.064 15.455 14.336 13.419 12.515 12.604 13.964 16.155 15.440 14.461 14.906 14.355 9.507
+ 14.005 14.881 14.338 15.078 13.454 12.861 12.301 11.457 10.766 11.303 10.383 9.306 10.004 10.081 9.839 10.706 10.182 11.994 11.986 13.828 14.115 15.041 15.282 15.565 14.832 13.626 12.115 11.490 11.796 13.213 15.496 14.904 14.170 14.571 14.152 8.978
+ 13.940 14.666 14.145 14.640 13.213 12.700 12.318 11.053 10.675 11.217 9.772 9.209 9.891 9.996 10.094 10.780 10.935 12.304 12.739 14.465 13.937 13.890 14.531 15.188 13.768 11.939 10.920 10.439 10.961 12.576 15.381 14.844 13.910 13.877 13.973 9.292
+ 13.868 14.271 14.036 14.150 13.145 12.591 12.059 10.509 10.115 10.728 8.475 9.904 10.013 9.942 10.513 10.566 11.710 12.080 13.347 13.548 12.334 12.258 13.273 14.756 12.747 10.379 9.430 9.071 9.818 11.645 14.654 14.117 13.371 13.205 13.283 8.580
+ 13.778 14.021 13.754 13.519 13.214 12.463 11.913 9.910 9.544 9.920 8.475 10.493 10.196 9.971 10.421 10.737 12.578 12.033 12.912 11.454 10.987 10.989 12.312 14.688 12.604 9.996 8.869 8.515 8.919 10.540 13.767 13.574 12.963 12.679 12.465 8.176
+ 13.662 13.907 13.569 13.382 13.134 12.313 11.742 9.524 9.713 9.983 8.470 10.277 9.733 10.087 10.560 11.090 13.540 12.529 11.856 10.353 10.298 10.276 12.063 14.015 11.696 9.545 8.953 8.251 8.779 9.881 13.293 13.374 13.008 12.205 11.331 8.195
+ 13.563 13.753 13.629 13.573 13.117 12.131 11.768 9.693 10.131 10.455 7.805 10.078 9.831 9.813 11.027 11.341 13.726 12.268 11.215 10.417 10.168 10.218 11.834 12.817 11.244 9.300 8.860 8.047 8.886 10.081 13.441 13.630 13.318 12.394 11.268 8.804
+ 13.498 13.759 13.798 13.964 13.355 12.243 11.821 9.949 10.346 10.594 8.304 10.147 10.087 10.109 11.104 11.341 13.837 12.969 11.781 10.847 10.837 10.841 12.447 13.481 11.501 9.791 9.149 7.728 8.820 10.433 13.806 13.990 13.911 13.364 10.485 8.209
+ 13.558 13.775 14.160 14.322 13.538 12.411 12.266 10.360 10.733 10.862 9.098 9.722 10.120 9.990 11.057 10.949 13.013 13.585 12.735 11.619 11.159 10.971 12.451 13.593 12.013 9.824 9.815 7.813 8.614 10.381 13.518 13.628 14.164 13.670 10.019 8.116
+ 13.605 13.791 14.515 14.546 13.651 12.660 12.666 10.713 11.054 10.972 10.095 9.561 10.271 9.730 10.962 11.048 12.229 13.747 13.535 13.102 11.788 11.634 12.901 14.325 13.079 10.478 10.487 8.469 8.877 10.420 13.281 13.137 13.500 13.026 8.718 8.127
+ 13.455 13.727 14.761 14.619 13.631 12.761 12.625 10.394 11.219 11.056 10.478 9.384 10.445 9.582 10.594 10.764 11.680 12.826 14.257 14.288 12.580 12.130 13.177 14.136 12.918 10.320 10.396 9.394 8.349 9.764 11.759 11.522 12.567 12.015 8.689 8.167
+ 13.406 13.736 14.725 14.109 13.352 12.806 12.362 10.107 11.122 10.845 10.264 8.860 10.179 9.181 10.205 10.382 11.450 12.252 13.901 14.894 13.096 12.151 13.743 15.225 12.967 10.127 10.113 9.133 8.808 9.437 12.284 11.999 12.846 12.609 9.663 8.746
+ 13.321 13.709 14.549 13.646 13.171 12.781 12.154 10.036 11.121 10.829 10.233 9.438 10.174 9.406 9.964 10.044 10.837 11.372 12.792 14.219 13.200 12.578 14.003 15.299 12.698 10.215 9.361 7.988 8.974 10.590 13.016 12.209 13.163 12.703 8.981 8.459
+ 13.236 13.447 14.221 13.089 12.951 12.535 11.843 9.633 10.918 10.727 10.098 9.103 9.412 8.943 10.023 9.727 10.524 10.486 11.784 12.944 13.351 12.845 13.891 14.164 12.041 9.999 9.626 6.922 7.304 9.549 11.842 12.018 13.887 13.063 8.530 7.252
+ 12.951 12.968 13.775 12.669 12.751 12.114 11.244 8.506 10.261 10.413 9.979 9.498 9.062 8.848 9.768 9.302 10.105 10.111 11.816 13.201 12.914 12.492 13.674 13.867 11.526 9.813 9.146 7.613 8.206 9.984 11.518 10.964 12.709 11.751 8.715 8.306
+ 13.376 12.588 13.664 13.204 13.247 11.919 10.142 9.159 10.492 10.146 10.119 10.171 8.501 8.811 8.579 10.076 10.197 11.170 12.220 12.699 11.719 11.414 12.468 13.899 12.026 9.635 9.380 8.095 8.842 11.119 12.736 11.210 11.861 11.326 9.975 9.890
+ 12.433 14.347 14.881 13.968 14.040 11.649 10.306 10.433 11.345 10.851 10.868 9.377 8.816 9.632 9.879 10.564 12.372 13.354 12.173 11.553 10.076 10.715 12.284 13.403 10.426 9.269 8.473 8.288 8.421 10.768 12.571 10.609 11.616 11.208 9.459 9.456
+ 14.430 13.746 14.243 13.834 13.188 11.664 11.065 10.926 11.868 10.962 9.733 9.744 9.582 10.110 10.662 11.856 12.588 13.261 11.176 10.464 9.622 10.096 11.801 13.365 11.004 7.687 6.861 6.988 7.795 10.288 11.066 9.881 11.459 11.418 9.790 9.922
+ 15.255 14.922 12.647 12.718 13.331 13.357 12.756 11.271 12.408 11.381 9.943 10.261 10.577 11.261 11.581 12.767 11.727 10.483 9.993 9.508 9.037 9.263 10.080 11.784 10.419 6.484 6.566 6.844 8.439 10.370 11.394 10.068 11.810 12.441 10.016 10.167
+ 13.680 13.375 14.495 14.502 14.775 14.025 13.655 11.779 12.318 12.100 11.450 11.410 11.396 12.485 13.662 11.800 11.315 10.239 9.702 9.071 9.009 9.062 10.033 10.662 9.432 6.455 5.241 6.151 7.553 10.781 11.228 9.205 10.740 11.321 10.529 10.723
+ 14.305 14.044 14.045 13.500 13.771 14.538 14.667 12.288 13.012 12.859 12.421 12.068 13.172 14.014 14.432 11.973 10.866 10.648 9.812 9.398 9.678 8.979 10.231 11.474 10.013 7.291 6.240 7.050 7.726 9.516 8.963 8.340 8.955 9.612 9.523 10.041
+ 13.759 14.264 14.008 13.470 13.714 15.415 15.876 13.250 13.700 13.691 13.270 12.710 14.435 13.231 12.739 11.598 10.877 10.876 9.659 9.569 9.956 9.371 10.160 11.881 11.042 8.718 6.866 8.077 9.299 9.306 7.320 6.329 9.211 9.914 11.488 11.760
+ 13.857 13.903 13.767 13.542 13.396 15.891 16.635 14.452 14.440 14.456 14.179 13.876 15.765 13.537 12.270 11.605 11.043 11.277 9.796 9.835 9.406 9.209 10.117 11.325 11.650 9.694 7.684 8.947 10.912 10.957 7.283 8.095 9.815 8.882 11.170 11.210
+ 13.794 13.861 13.798 13.413 12.667 16.014 16.688 14.846 15.125 14.989 14.728 15.155 16.004 13.183 11.561 10.810 10.790 10.967 9.925 9.954 9.690 9.492 10.280 11.186 12.561 11.386 9.705 11.207 12.587 11.008 7.572 9.543 10.335 8.286 9.737 10.316
+ 13.526 13.464 13.415 12.569 12.281 15.556 15.607 15.559 15.763 15.229 14.927 15.389 15.019 12.531 11.024 10.346 10.502 10.546 10.166 9.675 10.153 9.473 10.455 10.884 12.234 11.212 10.991 12.288 12.786 10.782 8.410 9.037 9.423 9.126 11.494 11.440
+ 13.434 13.172 13.221 12.219 12.394 14.897 15.090 16.094 15.829 15.145 15.245 15.884 13.733 11.643 11.590 10.725 10.490 9.917 10.155 9.569 10.221 9.531 9.806 10.212 10.259 10.398 11.239 12.919 11.954 9.812 7.157 6.996 7.832 8.317 9.940 10.026
+ 13.441 13.199 13.088 12.502 12.430 14.720 15.059 16.475 16.259 15.590 15.181 16.696 15.996 13.261 12.654 11.560 11.310 10.705 10.002 9.636 9.859 9.592 10.132 10.074 10.488 10.371 11.113 13.069 12.596 10.981 7.868 8.772 9.897 8.884 8.318 8.547
+ 13.438 13.164 13.179 12.542 12.050 14.248 14.864 16.555 16.412 16.099 15.051 15.702 17.029 15.964 13.991 12.807 12.308 11.574 10.251 9.888 9.811 10.362 10.437 11.335 10.649 10.833 12.224 13.272 12.712 10.436 9.001 9.588 10.590 9.642 8.627 8.435
+ 13.355 13.095 13.391 12.824 11.977 13.905 14.598 16.238 16.959 16.638 15.154 14.853 16.893 16.132 15.141 13.893 12.443 12.257 10.821 11.086 9.879 10.287 10.672 10.487 10.034 10.765 11.610 12.669 11.474 9.117 9.156 9.553 10.742 9.840 8.326 7.875
+ 13.345 12.984 13.530 12.732 11.762 13.783 14.370 15.744 17.175 16.362 14.655 14.552 15.277 15.540 16.730 15.105 13.253 12.549 11.557 11.137 11.091 10.655 11.319 11.415 11.820 12.775 13.519 13.048 11.300 8.668 9.475 9.664 10.712 11.289 9.656 7.945
+ 13.190 12.874 13.591 12.383 11.893 13.759 14.313 15.241 16.946 15.769 14.038 14.231 14.505 14.536 16.329 16.135 14.205 12.820 12.298 11.310 11.195 11.364 11.165 11.329 11.683 12.683 13.715 12.686 10.731 8.273 8.711 8.725 9.772 10.460 7.916 6.319
+ 12.974 12.773 13.379 12.227 11.973 13.438 14.733 15.904 16.315 14.864 13.782 13.736 13.739 13.831 15.418 16.285 14.929 13.144 12.225 11.759 11.666 11.264 10.019 10.253 10.814 12.517 13.237 11.752 10.569 9.278 8.701 9.258 10.993 9.885 7.230 6.455
+ 13.101 12.893 12.729 11.388 11.626 13.034 12.102 12.380 13.009 11.296 11.727 11.470 11.082 11.306 12.232 13.195 11.783 11.906 11.340 10.632 9.551 8.403 8.997 8.892 10.386 12.279 11.764 10.393 9.942 9.732 7.314 8.907 10.011 9.556 7.075 6.108
+ 13.600 13.393 13.141 12.381 12.508 13.723 12.850 12.190 12.703 11.195 11.521 11.102 9.973 9.801 11.010 11.704 10.933 10.754 10.160 10.997 9.606 8.346 9.262 9.893 11.448 12.312 11.612 9.963 9.411 8.981 7.558 9.352 9.854 9.137 7.215 6.002
+ 13.678 13.215 13.007 12.181 12.689 13.867 12.777 12.105 12.399 11.348 11.238 11.393 9.783 10.337 11.033 11.605 11.266 11.088 11.130 10.859 10.578 10.124 10.102 11.202 12.610 12.885 11.515 9.901 9.605 9.019 8.127 9.491 9.695 9.187 7.793 6.719
+ 13.645 13.334 13.015 12.239 11.982 14.241 15.385 15.626 15.125 13.909 13.363 13.234 12.563 12.522 13.478 15.638 16.522 15.610 14.613 14.703 14.949 15.556 15.084 12.862 13.099 13.573 12.901 10.989 9.235 11.357 11.984 13.818 13.812 11.770 9.591 6.673
+ 13.407 13.065 12.994 12.766 12.593 14.384 15.001 16.678 15.987 14.967 13.782 13.883 13.205 13.079 13.875 15.200 16.254 16.029 14.770 13.478 13.718 14.510 14.472 12.436 12.297 13.233 13.433 10.990 9.707 11.808 11.532 13.092 12.814 11.140 8.907 5.562
+ 13.305 12.888 13.344 12.327 12.463 14.134 15.338 16.083 17.100 15.435 13.859 13.933 13.417 12.810 13.330 13.488 15.186 15.785 14.895 12.939 12.485 12.733 13.658 12.878 11.729 13.151 13.562 11.991 11.073 12.176 10.823 11.806 11.921 10.957 8.346 5.055
+ 13.441 12.805 13.409 12.175 12.550 14.303 15.397 16.225 17.103 15.139 14.048 13.780 13.320 12.700 13.274 13.074 14.403 15.735 15.949 13.736 12.749 12.913 12.928 12.016 12.788 12.807 12.898 12.829 11.898 11.550 10.415 11.312 11.211 10.028 7.600 4.994
+ 13.535 12.943 13.479 12.298 12.914 14.458 16.051 16.429 16.261 14.280 12.858 12.906 12.610 12.086 12.566 12.949 13.896 14.919 15.162 12.328 11.797 12.372 12.001 11.629 12.857 12.265 12.039 13.007 12.277 10.300 10.172 11.124 10.239 8.814 7.024 5.957
+ 13.438 13.163 13.568 12.630 13.635 15.186 15.907 15.327 14.484 13.559 12.943 12.155 11.649 11.686 12.070 13.091 14.565 14.232 13.257 11.688 11.472 11.822 12.214 12.489 11.848 10.553 10.767 11.602 11.186 9.117 9.269 10.644 10.709 9.000 6.389 5.945
+ 13.633 13.633 13.209 12.637 13.113 11.916 12.407 11.576 11.398 9.675 11.151 10.682 7.376 8.317 10.030 11.828 11.622 11.148 9.185 9.083 8.711 9.706 11.061 9.858 8.349 6.631 7.377 9.141 9.155 8.096 6.423 8.680 9.548 9.109 7.014 5.903
+ 13.806 13.404 12.900 12.754 12.953 12.170 11.230 9.472 10.856 9.689 11.060 10.838 8.214 6.928 9.352 11.629 11.011 11.262 10.167 9.586 8.758 9.713 10.990 10.391 9.101 7.325 6.467 7.483 10.176 10.110 7.212 7.904 9.050 8.383 6.619 6.490
+ 13.808 13.213 12.615 12.497 12.776 12.113 11.400 10.667 10.828 9.262 11.090 10.757 7.946 6.612 8.404 11.456 10.687 11.386 9.588 9.404 9.687 10.455 11.227 11.533 9.641 7.605 5.073 6.204 9.225 10.442 8.033 8.821 10.019 9.048 7.564 7.171
+ 13.821 13.077 12.447 12.288 12.684 12.031 10.859 10.834 10.600 9.279 11.135 10.438 7.425 6.916 8.576 11.228 10.584 11.024 9.538 9.689 9.930 10.003 10.882 12.021 9.927 8.356 5.399 6.124 9.035 10.118 8.912 8.656 10.253 9.493 7.760 7.112
+ 13.840 13.078 12.345 12.103 12.596 11.947 10.901 10.470 10.345 9.109 10.955 10.393 7.404 6.562 8.010 11.076 10.549 11.096 9.236 9.050 9.256 9.401 10.727 12.332 10.734 8.905 4.793 5.873 8.606 10.322 8.974 8.625 10.098 9.599 8.697 8.347
+ 13.891 13.253 12.474 11.947 12.562 11.830 10.871 10.099 10.370 8.905 10.635 10.385 7.916 7.801 9.143 11.536 10.589 10.919 9.773 9.128 9.336 9.755 10.914 12.313 10.819 8.905 6.312 5.798 7.990 9.886 9.014 9.938 10.704 9.525 8.381 8.453
+ 13.879 14.006 12.714 12.700 13.227 13.230 14.042 13.687 13.574 12.726 10.937 12.004 10.850 10.909 11.510 12.378 13.159 13.395 14.259 14.279 13.814 11.598 11.698 13.600 13.189 11.329 10.391 10.223 10.421 12.088 13.073 12.184 11.620 10.439 9.626 9.617
+ 13.406 12.782 13.222 12.534 12.803 15.052 16.012 16.068 14.387 13.106 12.255 11.832 11.383 11.325 11.677 11.733 12.221 12.082 12.956 13.852 14.839 14.410 13.277 13.661 14.373 13.719 11.493 11.580 11.683 13.156 15.115 13.874 12.307 10.797 10.413 10.565
+ 13.222 13.001 13.387 12.692 12.872 14.984 16.087 16.642 15.180 13.631 12.766 11.933 11.769 11.471 11.593 11.473 12.027 11.771 12.229 12.625 13.362 15.082 14.237 14.313 15.506 15.445 13.292 12.445 12.401 13.267 15.220 15.156 13.431 11.783 9.799 9.521
+ 13.102 12.932 13.405 12.776 13.217 15.099 16.415 16.807 15.306 14.209 12.727 11.992 11.975 11.345 11.704 11.563 12.321 12.011 12.374 12.461 13.626 16.030 15.467 14.543 15.110 15.858 13.557 12.796 12.735 13.983 14.993 15.319 14.579 13.016 9.939 9.513
+ 13.033 13.037 13.448 12.862 13.476 15.286 16.687 16.699 15.039 14.276 12.919 12.121 11.914 11.531 11.699 11.860 12.436 12.256 12.564 12.659 13.283 15.192 14.841 14.619 14.779 15.382 14.575 13.392 13.330 14.390 16.239 16.817 15.984 14.502 10.973 7.699
+ 13.141 12.940 13.313 12.814 13.869 15.582 16.590 16.474 14.606 13.936 12.459 12.091 12.192 11.185 11.780 11.328 12.123 11.529 11.797 11.526 12.217 14.113 14.860 14.803 14.169 15.121 14.240 13.583 13.738 14.455 15.872 16.432 15.708 14.536 11.886 8.166
+ 13.221 13.059 13.273 12.671 14.137 16.038 16.065 16.071 14.335 13.331 11.891 11.834 11.842 10.570 11.435 10.954 11.795 11.203 11.755 11.241 12.069 13.707 15.175 14.627 14.310 14.505 14.708 14.393 14.222 14.525 15.943 16.737 15.998 14.730 12.102 8.700
+ 13.308 13.102 13.316 13.031 14.384 16.372 15.701 14.966 14.058 13.232 11.703 11.343 11.497 10.247 11.145 10.504 11.189 10.718 11.242 10.699 11.468 12.827 14.583 14.993 14.477 14.752 15.170 14.479 14.181 14.651 15.878 16.605 15.613 14.759 12.876 9.507
+ 13.250 13.107 13.244 13.434 14.559 15.943 15.227 13.476 12.863 12.278 10.706 11.174 10.541 9.950 10.683 9.881 10.899 10.331 10.550 10.303 10.563 11.768 13.783 14.271 14.049 14.140 14.574 13.994 13.526 13.682 15.188 16.347 14.896 14.094 11.813 9.657
+ 12.662 12.519 12.119 14.213 14.925 14.461 13.340 12.921 11.607 12.022 10.210 10.092 9.223 9.616 9.023 8.931 9.699 8.820 9.310 9.138 9.793 11.030 13.697 14.637 13.770 13.501 13.785 13.338 12.898 12.603 14.117 15.884 14.434 13.260 10.634 9.815
+ 11.507 11.021 9.998 11.912 11.190 10.598 11.893 11.207 8.449 8.992 8.550 8.086 7.193 7.281 6.139 6.838 7.665 7.832 8.025 7.923 8.238 8.927 11.651 12.577 12.101 11.538 12.037 11.779 11.299 11.231 12.607 14.095 12.503 10.553 10.074 9.358
+ 9.699 10.191 10.871 9.154 8.572 6.955 8.544 8.878 6.718 8.053 8.465 7.191 4.336 4.942 6.083 6.090 6.206 5.865 5.473 6.112 6.376 7.047 7.925 8.346 8.406 8.998 9.761 9.431 8.335 7.231 8.147 9.672 8.664 8.011 9.551 9.870
+ 7.568 9.795 10.154 8.816 8.867 8.105 8.055 8.604 5.567 5.199 4.675 3.470 4.139 5.007 5.666 4.815 4.892 4.910 4.631 4.749 5.054 6.047 5.368 6.177 5.782 7.116 8.837 9.024 7.106 5.368 7.299 8.371 7.478 7.134 9.208 9.624
+ 5.519 7.028 7.509 8.210 8.030 9.109 8.407 8.742 6.778 5.375 5.147 4.093 3.708 3.706 5.168 5.018 6.285 4.276 4.523 4.623 3.220 4.485 5.187 5.605 5.254 4.974 4.870 5.559 4.371 5.070 6.970 7.364 5.754 5.753 4.561 3.480
+ 6.115 6.016 7.663 7.811 7.600 8.396 8.332 8.559 6.613 5.281 3.296 4.594 4.508 4.499 4.932 5.146 4.868 4.211 4.391 4.352 5.085 5.121 5.260 5.604 4.079 5.256 5.489 4.872 5.256 4.999 6.134 7.107 6.031 5.868 3.849 2.787
+ 5.672 5.660 6.772 6.918 7.483 8.607 7.662 7.584 7.200 6.091 5.670 5.741 6.021 6.063 5.954 5.409 5.451 5.677 6.027 6.058 6.023 6.390 6.368 6.317 7.201 7.966 8.249 8.157 7.712 7.015 6.920 6.717 6.580 6.583 5.644 4.288
+ 8.472 8.144 7.464 8.402 7.854 7.870 8.980 9.617 10.865 10.561 9.606 9.537 9.770 9.772 10.522 11.231 11.843 10.874 11.008 11.127 10.971 11.862 11.742 12.688 12.784 13.063 14.348 15.021 13.782 11.527 12.928 12.372 11.652 11.869 11.967 10.743
+ 7.009 7.378 7.670 9.760 10.677 10.577 10.779 9.617 11.128 12.330 11.468 12.045 10.447 11.143 11.484 12.559 12.316 12.389 12.718 12.488 11.805 13.467 13.761 14.487 14.362 15.324 15.463 16.620 16.208 14.505 14.140 14.588 13.786 13.350 13.529 12.639
+ 11.676 11.976 11.437 13.085 13.799 13.211 12.293 11.946 10.399 10.865 10.573 10.787 10.232 10.177 10.556 10.589 9.850 9.962 9.928 9.083 9.448 10.894 12.340 12.634 12.057 12.255 13.747 14.631 14.527 14.136 15.354 16.265 15.230 13.232 12.881 13.290
+ 12.365 13.318 13.235 14.409 14.468 16.036 15.195 13.192 11.320 11.319 11.397 10.707 9.668 9.532 9.308 8.710 9.472 9.545 10.173 10.314 11.158 12.707 11.916 11.315 10.980 11.342 11.925 12.647 12.507 12.691 14.829 15.833 14.157 12.107 11.095 11.947
+ 12.799 13.014 13.794 13.630 15.175 16.083 16.380 14.581 12.351 11.413 11.950 11.684 10.457 9.914 10.417 9.638 9.828 10.209 10.464 12.164 14.039 14.442 12.289 11.645 10.896 10.970 12.437 12.960 12.027 11.762 13.244 13.821 12.948 12.097 10.145 8.822
+ 12.430 12.270 13.212 13.108 14.563 16.330 15.469 14.183 12.763 12.462 11.759 11.246 11.079 10.668 10.685 11.096 10.666 11.265 11.509 13.411 14.685 14.228 11.948 11.448 11.013 11.902 13.536 12.949 11.849 11.124 12.678 13.460 12.510 12.296 10.562 7.634
+ 11.253 12.067 12.251 12.779 14.944 16.223 15.593 13.634 12.475 12.193 11.374 10.928 10.855 10.947 10.772 10.870 11.149 11.246 12.386 13.990 14.710 13.350 11.986 11.371 11.743 12.508 13.727 13.564 12.410 12.054 12.909 13.624 12.474 11.913 10.434 6.681
+ 11.295 11.906 12.639 13.380 13.614 13.627 14.279 12.905 11.475 11.339 10.928 10.330 10.665 11.107 10.720 10.909 11.410 11.598 13.549 14.597 14.199 12.631 11.908 11.761 12.358 12.688 13.441 13.510 12.007 11.634 12.459 13.487 12.043 11.033 10.057 6.140
+ 9.432 9.179 8.288 9.416 10.498 9.851 10.559 9.685 8.384 6.686 5.073 6.321 6.300 6.509 6.566 6.538 7.063 7.827 10.389 11.409 9.457 8.018 7.547 7.757 8.239 8.684 10.269 9.758 9.546 9.701 9.611 9.964 9.119 8.038 7.108 6.312
+ 10.040 10.581 9.728 7.668 7.716 8.742 9.696 8.852 6.972 6.377 6.100 4.846 5.478 5.810 6.456 5.682 6.427 7.247 9.962 8.964 7.504 8.199 7.574 7.648 7.639 7.623 8.867 8.932 9.193 9.713 9.291 8.904 7.554 6.754 5.788 4.866
+ 8.004 7.625 7.779 7.190 6.787 6.677 9.426 8.609 6.051 6.591 6.220 6.078 6.662 6.960 7.436 7.507 7.571 7.672 8.493 8.191 8.039 7.468 6.965 7.133 7.058 6.249 6.552 7.000 6.249 5.636 5.769 6.544 5.635 5.230 4.803 2.927
+ 5.100 5.069 6.548 8.626 9.456 9.194 9.819 9.463 7.703 9.734 10.495 11.074 11.247 10.093 10.942 12.298 12.611 11.585 10.681 11.870 11.555 9.552 10.680 9.460 9.124 8.946 7.836 8.855 8.409 8.103 6.960 7.133 6.403 7.004 6.260 5.552
+ 5.152 6.181 6.779 7.817 8.731 8.043 7.802 8.138 8.029 8.416 8.203 9.172 9.637 7.593 8.757 10.444 10.962 10.186 9.682 10.131 10.348 9.759 9.941 9.036 9.599 9.051 8.321 10.009 10.742 10.901 10.439 9.291 9.400 9.250 9.863 9.372
+ 5.591 7.365 8.258 7.589 7.296 8.373 9.246 8.920 9.271 8.752 8.229 8.871 9.015 8.379 7.989 7.765 8.358 9.233 9.055 8.331 8.149 8.902 9.287 8.988 9.284 8.867 8.421 9.481 9.788 10.173 10.466 10.543 10.230 10.041 9.539 8.658
+ 8.714 8.162 7.535 8.809 7.885 7.227 9.282 9.209 9.360 8.820 9.373 9.568 10.000 9.311 9.072 9.570 9.208 10.272 11.387 11.310 10.912 10.688 10.723 11.086 10.946 10.968 11.236 12.024 10.863 10.817 11.372 11.274 11.306 10.598 10.662 9.544
+ 9.199 10.240 9.804 9.940 9.735 8.823 10.013 10.171 11.324 11.100 11.380 12.283 11.539 10.943 10.069 11.065 12.874 13.100 13.473 13.045 12.262 12.878 13.570 13.222 12.006 12.468 12.854 13.600 12.789 11.946 12.200 12.951 12.584 11.673 11.754 10.724
+ 13.004 12.105 10.608 11.167 11.211 9.884 11.308 10.623 10.962 11.652 11.950 12.087 11.206 10.677 11.384 12.690 13.767 13.019 13.290 12.296 11.517 12.926 13.541 12.904 11.650 12.318 12.878 12.638 12.447 12.231 12.077 12.840 12.107 11.831 11.534 11.129
+ 14.099 13.913 14.296 14.208 13.860 12.616 12.597 12.906 11.819 11.220 11.943 12.764 11.175 9.669 11.676 13.453 13.939 13.408 13.813 13.105 12.794 12.524 12.023 12.117 13.142 12.231 12.266 12.201 11.910 11.878 12.601 11.789 11.449 11.555 12.084 11.891
+ 14.661 15.991 16.951 16.708 15.919 14.709 13.964 13.312 12.953 12.716 12.129 12.236 9.948 10.129 13.348 13.943 14.975 14.041 12.490 13.566 14.145 13.059 12.666 12.888 13.575 13.875 13.538 13.389 13.550 13.611 12.671 12.468 12.215 12.079 12.565 11.628
+ 14.988 14.862 15.720 13.987 14.278 13.268 12.081 10.973 11.958 11.261 11.885 11.641 10.298 11.071 12.530 12.733 14.756 14.516 13.429 12.035 12.986 13.383 12.999 11.949 12.620 13.270 13.527 13.153 13.311 13.035 13.448 13.419 11.902 11.717 11.704 10.838
+ 13.276 13.845 14.923 14.528 13.906 13.514 12.976 10.483 10.431 10.727 11.276 10.204 10.662 10.722 12.595 13.522 14.171 13.554 13.315 12.982 12.137 12.602 13.471 11.534 10.928 11.204 11.354 11.517 12.146 12.771 12.106 11.070 9.364 10.003 10.846 9.997
+ 12.986 11.772 12.676 13.994 14.726 15.609 15.018 14.083 14.007 13.667 13.195 13.537 13.355 13.962 14.909 15.728 15.366 14.413 14.008 13.767 12.518 11.326 11.919 10.075 9.883 9.612 10.613 10.686 10.966 11.106 10.241 10.025 9.575 9.211 8.227 8.591
+ 14.184 14.156 13.574 14.046 15.500 15.918 15.167 14.537 13.765 12.854 12.708 13.455 13.118 14.139 14.961 15.937 14.712 13.808 13.697 13.178 10.828 9.327 9.036 9.721 9.490 9.015 9.712 9.538 9.488 8.698 8.019 8.192 7.386 6.960 6.637 5.891
+ 14.216 15.545 14.657 13.770 14.412 14.896 13.402 12.818 12.428 12.880 11.665 12.603 11.835 13.066 13.821 14.251 12.250 11.988 11.999 10.736 9.328 7.876 7.149 7.198 7.366 6.894 7.614 7.646 8.252 8.186 6.936 6.694 5.958 5.554 6.637 5.903
+ 14.560 13.189 13.041 11.870 10.223 11.389 11.667 11.127 11.309 10.510 8.444 9.487 9.324 9.672 8.990 8.961 8.344 8.239 8.030 7.540 6.851 5.967 5.183 5.375 5.259 5.171 5.059 5.643 5.301 5.896 4.944 5.395 5.568 4.884 5.330 4.355
+ 10.225 10.397 9.722 8.025 7.626 7.664 8.290 7.697 6.666 4.914 5.240 5.384 7.359 7.268 6.946 7.498 6.743 6.373 6.108 4.984 4.396 3.949 4.706 4.924 4.054 3.540 5.143 5.002 4.392 4.387 4.175 4.433 3.309 4.608 4.264 2.610
+ 7.893 8.262 8.374 6.145 6.207 7.333 8.254 6.944 5.606 5.565 5.734 5.504 6.338 6.320 6.271 7.609 5.594 5.866 5.039 4.673 5.197 3.705 5.007 3.987 3.941 4.252 4.798 4.823 4.295 3.336 3.790 4.373 3.293 3.625 3.911 3.228
+ 6.754 6.086 5.473 4.499 6.316 8.067 8.426 7.601 5.265 5.143 5.156 5.284 4.109 5.228 6.140 7.569 5.915 4.989 5.781 5.048 4.605 4.007 4.624 5.267 4.674 4.611 3.396 4.377 4.780 4.401 4.117 4.458 3.584 3.748 3.637 3.085
+ 6.316 6.130 4.191 6.121 6.815 6.732 5.848 6.433 4.936 5.065 4.357 4.228 4.508 4.813 5.711 6.271 6.037 5.662 4.407 5.145 5.263 4.515 3.403 3.464 4.058 4.635 4.191 2.993 4.298 5.233 4.662 3.775 3.778 4.073 4.405 3.889
+ 5.612 6.434 6.581 5.644 6.083 7.585 7.028 5.326 4.377 5.821 4.883 4.663 4.360 6.282 5.854 6.192 6.371 5.730 5.102 3.745 4.296 4.808 4.371 4.539 4.971 4.806 4.292 3.826 3.496 3.547 4.235 4.793 4.939 4.370 3.640 3.144
+ 7.644 7.232 6.095 6.696 7.403 7.956 7.413 6.162 5.015 5.698 5.888 5.671 5.860 5.925 6.200 6.555 7.662 8.100 7.956 8.223 8.551 8.433 8.773 8.671 7.700 7.153 8.339 9.057 9.654 9.885 9.852 9.149 8.435 8.226 8.799 8.870
+ 14.296 14.708 15.349 15.200 15.107 14.830 13.835 13.885 13.677 12.745 13.066 13.193 12.953 12.182 11.362 10.356 10.436 11.442 11.030 11.083 12.185 12.223 12.067 12.809 12.301 11.456 11.792 12.072 12.499 12.673 12.753 11.807 10.896 10.741 11.616 11.707
+ 18.721 18.586 17.912 17.084 17.800 17.247 16.107 15.927 14.401 14.512 15.358 15.270 14.343 13.751 12.662 12.347 11.391 11.974 11.608 12.044 13.977 14.124 13.978 14.775 14.835 13.714 13.000 12.685 11.496 10.801 11.330 10.650 9.760 10.652 11.088 10.462
+ 16.588 16.170 15.417 14.746 15.440 15.237 14.441 13.981 13.074 13.161 13.053 12.014 10.398 10.464 9.913 9.126 9.515 9.290 9.858 10.105 11.108 12.179 11.837 11.571 14.404 13.705 11.340 10.200 10.853 9.917 10.620 9.961 9.384 9.770 9.470 9.777
+ 13.537 12.293 12.555 13.719 13.543 11.871 11.153 9.965 7.833 9.166 9.725 8.963 8.390 8.170 8.953 7.960 7.387 7.717 8.631 8.511 9.916 12.069 12.899 11.512 12.540 13.601 11.403 10.394 9.806 9.573 10.875 11.205 10.891 11.047 11.287 11.158
+ 11.804 11.930 12.375 14.403 14.244 13.612 11.757 11.749 10.715 10.930 10.767 9.884 10.076 9.573 9.878 9.379 9.401 9.206 9.769 10.259 10.745 11.551 12.527 12.217 11.813 14.001 13.398 11.793 11.424 11.564 12.575 12.725 9.540 10.394 11.531 10.486
+ 13.543 13.512 14.031 14.512 15.030 14.310 12.976 11.237 11.293 11.067 9.592 10.435 9.887 9.788 9.705 9.371 10.182 10.235 10.979 11.668 12.520 14.312 15.297 13.944 13.015 13.289 12.881 11.711 11.329 12.228 14.212 14.072 11.553 10.851 11.341 10.207
+ 13.478 13.753 14.408 14.292 15.419 14.300 12.979 9.802 11.397 10.901 9.541 10.288 10.450 10.092 10.663 9.752 10.454 10.144 10.795 10.929 12.105 14.030 15.240 14.171 14.196 14.764 13.516 12.059 11.943 12.209 14.812 15.155 13.890 11.540 11.237 10.449
+ 13.494 13.539 14.119 14.284 15.182 13.758 12.448 9.047 11.221 10.641 9.416 9.822 10.185 9.879 9.994 9.377 9.022 9.730 9.874 10.865 11.985 14.589 16.328 15.049 14.841 13.806 12.346 11.208 11.195 11.831 14.410 14.801 13.195 11.610 12.025 10.693
+ 12.603 12.386 13.301 14.190 14.574 12.894 11.481 7.874 10.299 9.368 9.316 9.646 9.862 9.946 9.567 9.272 9.515 10.060 11.724 12.721 12.960 15.238 15.376 14.424 12.773 11.316 9.840 9.045 9.447 10.530 13.721 13.913 12.130 11.396 10.363 8.967
+ 13.961 13.718 13.858 13.213 12.713 10.940 10.507 9.581 9.932 9.012 8.189 7.961 9.015 8.563 8.923 8.746 8.634 9.542 11.363 12.067 11.729 12.553 13.264 12.840 8.523 7.597 6.691 6.404 7.458 8.796 11.897 11.727 10.696 9.713 8.380 6.845
+ 12.992 11.585 10.665 9.910 8.835 8.306 8.713 7.772 7.842 8.065 7.081 6.418 7.248 7.388 7.909 7.272 6.954 6.643 7.337 7.013 6.722 7.527 7.697 7.741 6.754 6.452 5.276 5.452 5.890 7.890 8.585 8.390 7.629 7.786 7.621 6.823
+ 10.691 10.759 10.519 8.938 9.193 7.571 7.389 6.945 7.321 7.388 7.042 7.887 7.029 6.153 6.085 6.292 7.902 9.917 11.301 11.569 10.165 9.172 10.637 9.835 10.275 11.065 9.922 10.145 9.532 8.752 9.763 12.114 12.548 12.261 12.370 13.013
+ 9.785 10.023 8.303 8.694 9.215 7.318 6.149 6.063 7.395 7.197 6.364 8.081 8.079 7.094 6.665 6.015 8.469 9.621 11.433 11.886 10.292 10.135 11.389 10.244 11.239 12.558 12.064 11.727 10.629 9.406 9.852 12.031 12.138 11.949 12.556 12.757
+ 8.427 8.538 7.347 7.552 7.947 6.346 5.898 6.078 5.522 6.626 7.336 8.374 8.055 6.763 6.586 7.096 7.823 9.240 9.630 10.026 9.812 9.511 8.775 9.239 10.709 10.721 10.371 10.777 9.458 8.852 9.320 10.242 9.620 9.400 10.910 10.407
+ 14.135 13.311 11.715 11.301 12.132 11.725 10.981 10.886 10.572 9.904 10.693 11.457 10.967 11.139 11.205 11.214 10.954 11.534 11.513 12.154 12.037 12.292 11.991 12.435 12.986 12.943 12.820 12.867 12.948 12.600 13.209 12.879 12.648 12.950 12.458 12.240
+ 17.403 16.644 14.429 15.094 15.294 15.857 16.372 15.693 14.174 14.173 14.990 15.190 14.526 13.894 11.973 10.756 11.903 12.713 11.821 11.627 11.910 11.559 10.971 11.349 11.449 11.303 11.143 11.304 11.519 11.427 11.592 11.533 10.804 10.951 10.763 10.855
+ 15.891 17.255 15.969 16.770 15.444 16.382 16.093 15.479 13.378 13.313 14.488 13.893 13.992 13.143 11.054 11.569 12.396 11.907 11.072 11.033 11.567 11.272 10.450 11.010 11.463 11.696 12.201 11.131 11.614 12.939 12.155 11.421 10.256 10.486 11.050 10.312
+ 17.020 17.302 16.366 15.912 15.149 14.662 15.241 15.042 13.644 13.786 14.166 14.486 13.992 12.563 11.002 11.410 10.930 10.329 10.323 10.297 9.584 9.465 10.231 9.364 10.285 11.628 12.370 10.789 11.908 13.345 11.595 10.290 9.057 10.585 10.511 10.221
+ 14.481 15.200 15.537 15.065 14.942 15.814 15.828 14.689 14.363 13.235 14.941 15.343 14.674 12.414 10.779 9.820 10.029 9.187 8.415 7.845 8.348 9.494 9.935 9.249 9.474 12.038 13.472 11.468 11.831 13.270 11.938 10.217 8.802 10.217 11.467 11.844
+ 15.662 14.496 13.363 13.351 14.934 16.086 15.334 14.231 14.077 12.867 14.280 14.910 14.525 12.203 10.337 10.014 9.376 9.492 7.890 6.924 7.361 8.022 7.548 7.746 8.138 9.708 11.698 11.121 9.557 12.094 11.510 9.884 8.779 11.350 11.942 11.711
+ 12.746 12.843 12.415 13.498 13.233 14.358 13.160 13.280 12.962 11.923 13.054 13.311 12.591 11.961 10.896 9.109 8.211 8.230 8.180 7.780 8.296 8.400 7.490 6.906 8.999 9.566 11.723 11.046 9.248 11.883 12.074 11.408 11.883 13.171 12.659 10.572
+ 12.719 11.968 11.017 10.373 10.363 11.204 9.649 8.945 9.876 9.504 9.499 10.921 9.849 7.363 7.219 6.862 5.963 5.745 6.634 5.970 5.995 6.587 6.854 6.213 7.355 8.822 8.741 8.054 7.527 8.967 9.454 9.418 10.237 9.420 8.586 7.368
+ 10.273 10.033 9.914 9.153 7.952 9.205 8.275 7.670 7.788 6.875 5.880 5.709 5.808 5.240 4.166 4.977 5.252 5.426 4.891 4.774 5.097 5.548 5.537 5.630 7.155 7.881 6.515 6.598 6.657 5.925 6.569 7.232 6.812 7.102 7.222 6.148
+ 8.782 9.305 9.239 7.216 7.871 7.922 6.928 7.865 5.837 5.190 4.779 5.745 6.549 5.842 4.976 5.249 4.764 4.554 5.262 5.577 4.889 4.871 4.581 5.017 6.231 6.907 6.417 6.616 5.969 5.782 4.726 5.614 6.057 6.428 7.045 6.235
+ 9.309 9.102 7.818 8.110 7.685 7.798 8.751 8.893 8.808 8.820 8.637 8.271 6.698 6.151 8.013 9.205 9.501 9.560 9.408 9.139 9.445 9.979 10.089 9.837 10.377 11.312 11.900 12.279 12.220 12.084 12.254 11.997 10.845 9.671 10.280 9.453
+ 10.553 10.482 9.668 8.362 9.617 10.073 9.873 10.782 10.740 11.224 10.827 9.893 8.961 7.757 10.586 11.542 11.492 11.396 11.186 10.600 11.050 11.838 12.013 11.366 12.028 13.215 13.825 14.241 14.106 14.234 14.442 14.450 13.751 12.525 12.897 12.018
+ 9.217 9.974 11.616 12.365 12.343 12.068 11.430 10.593 10.702 9.335 8.826 8.696 9.623 8.988 9.370 10.195 8.548 8.031 8.790 8.188 9.333 9.506 9.327 9.438 9.879 11.268 13.121 11.406 11.294 13.696 13.773 13.092 12.830 13.764 11.930 10.956
+ 14.329 13.572 13.724 13.769 13.398 13.606 12.520 11.992 10.994 8.749 9.968 11.533 12.275 13.008 12.839 11.732 10.509 8.511 8.445 9.413 9.750 9.859 10.035 10.640 10.402 11.997 12.453 11.128 12.498 11.738 11.808 11.104 11.725 12.217 11.790 8.799
+ 13.811 13.097 12.305 12.701 11.898 12.160 11.481 10.919 9.994 8.087 7.015 9.660 10.225 12.178 12.242 10.129 8.461 6.464 7.535 7.020 5.773 6.212 6.142 6.413 7.399 7.630 7.981 9.270 10.726 9.093 8.533 8.439 9.294 9.096 9.416 7.726
+ 9.990 10.545 10.718 9.970 9.371 7.527 6.981 6.106 6.548 7.169 5.730 6.229 7.425 8.783 7.389 6.507 6.332 5.104 4.495 3.887 5.228 5.378 5.813 6.297 6.718 5.401 4.719 5.331 6.694 5.913 5.480 5.511 4.796 4.983 5.457 5.798
+ 10.674 11.364 10.959 9.022 8.788 7.823 6.432 5.969 6.032 7.193 5.873 7.416 8.704 7.883 5.931 5.259 4.212 4.308 3.811 3.901 4.535 4.466 3.365 4.296 5.813 5.037 3.930 5.007 5.155 5.343 5.432 5.771 5.708 5.407 6.669 5.730
+ 10.088 11.090 10.845 8.944 7.961 8.243 7.999 6.147 6.287 6.886 6.250 7.675 7.210 6.659 6.839 6.257 5.466 5.108 4.340 4.894 3.297 5.105 4.840 4.207 5.308 5.552 3.954 4.075 4.947 5.735 5.250 4.942 4.782 4.618 5.722 5.198
+ 10.483 11.214 10.349 8.748 8.569 7.269 8.086 7.595 6.403 6.064 6.204 7.751 7.162 7.696 6.665 4.615 4.382 4.186 4.110 5.810 4.767 5.448 5.603 5.618 5.705 6.384 5.192 5.504 4.601 5.330 5.253 5.550 4.366 4.457 4.310 4.999
+ 9.750 10.544 9.451 6.598 7.071 6.087 6.599 6.203 5.275 6.369 5.786 5.602 3.881 5.695 5.369 5.161 3.827 3.515 4.124 5.245 5.424 5.166 4.933 5.333 4.481 5.603 5.135 4.699 3.940 4.569 4.643 4.988 4.831 4.869 5.237 4.839
+ 9.125 9.945 8.110 6.936 6.170 5.882 6.203 5.659 5.205 5.939 6.015 4.273 4.193 5.602 5.258 4.106 4.739 5.066 4.821 4.697 4.142 3.905 3.294 3.881 4.458 5.005 4.080 3.466 3.399 4.504 4.331 4.625 4.901 4.869 4.387 4.835
+ 9.209 9.594 8.778 6.738 4.262 4.804 4.763 2.892 3.776 4.604 4.085 4.173 4.575 5.294 4.989 5.374 5.327 4.444 3.919 4.231 4.977 3.864 4.888 5.112 3.969 3.711 2.765 3.287 3.155 4.096 3.967 4.006 4.159 4.267 4.288 3.527
+ 13.795 14.092 14.168 13.857 13.287 12.846 12.408 11.129 9.506 9.966 9.044 10.061 8.973 9.603 10.350 9.989 9.285 8.782 9.408 10.463 9.890 8.603 8.917 9.850 9.141 8.042 9.316 10.079 9.885 11.131 11.096 9.697 9.911 9.931 10.381 9.930
+ 17.761 16.727 17.184 17.268 17.083 16.212 15.251 13.431 13.578 13.846 12.836 12.540 11.944 11.341 11.767 10.852 10.364 10.398 11.059 11.407 10.911 9.600 9.804 10.521 9.436 8.881 10.111 10.891 11.378 12.579 11.792 10.734 10.449 10.672 11.211 10.950
+ 17.472 15.759 16.004 14.440 15.107 14.215 13.529 12.846 12.787 11.978 10.493 10.045 9.647 10.545 10.827 9.722 10.000 9.579 9.027 9.013 9.499 8.390 7.709 8.286 8.963 8.938 8.761 9.756 10.768 11.600 11.135 10.073 9.487 9.815 9.948 9.805
+ 13.422 13.566 13.639 12.941 11.147 10.827 11.770 11.581 11.020 10.224 8.229 8.322 8.636 8.031 8.247 7.770 8.338 8.319 7.733 5.814 8.155 8.276 7.756 7.685 8.551 8.350 7.728 8.508 9.454 8.972 11.150 10.025 9.351 9.006 8.519 9.384
+ 10.416 9.856 11.494 13.170 13.776 13.088 12.352 12.568 11.965 12.634 11.401 10.035 9.178 7.287 7.741 7.839 6.825 6.612 6.192 5.080 6.037 6.310 5.357 5.825 6.404 7.910 8.807 7.334 7.441 8.156 10.526 11.013 11.314 10.117 9.227 8.998
+ 10.426 11.384 12.353 13.888 13.744 13.077 13.587 12.856 12.878 13.720 11.389 10.609 9.027 8.408 7.914 7.589 8.045 7.697 6.655 6.484 6.910 6.073 5.768 6.967 7.684 10.263 11.078 8.939 9.175 10.525 11.644 12.732 12.752 10.404 9.589 9.661
+ 9.327 11.270 12.542 13.759 14.443 11.627 12.607 13.485 13.434 13.792 13.497 11.503 10.414 10.413 9.253 6.648 6.108 6.478 6.465 6.787 6.613 6.346 7.650 7.427 8.367 10.084 11.548 10.150 10.615 11.900 12.251 11.894 11.602 10.214 11.113 11.600
+ 10.414 10.916 12.841 13.656 14.957 13.511 12.126 12.205 13.192 13.233 13.506 13.563 12.846 10.446 9.362 9.708 10.457 10.396 8.943 8.946 9.341 8.882 9.619 9.017 9.925 13.167 13.168 13.636 12.741 12.095 11.782 10.461 10.295 10.870 11.138 10.041
+ 12.792 12.350 13.325 13.972 15.550 14.105 12.300 12.044 12.576 12.074 11.435 13.217 12.865 12.556 13.197 13.404 12.783 11.151 11.028 10.553 9.879 8.299 8.971 10.855 12.782 14.508 13.265 12.580 12.607 11.200 9.528 9.724 9.921 9.644 9.900 10.382
+ 13.407 13.471 13.903 14.321 15.976 14.976 12.789 12.332 12.601 12.256 9.884 11.531 10.786 12.013 12.786 13.764 13.364 13.461 13.346 13.965 13.045 11.818 12.091 12.541 14.600 15.501 12.894 11.658 12.982 12.256 9.907 9.209 9.003 8.886 8.582 8.587
+ 13.360 13.409 13.969 14.793 16.262 14.830 12.391 12.734 12.059 11.715 9.600 10.666 9.600 10.627 10.541 11.040 11.554 12.581 13.567 14.735 14.110 14.160 14.458 13.835 15.296 15.868 13.578 11.687 11.997 13.246 12.834 11.175 10.480 9.888 9.010 8.597
+ 13.240 13.112 13.931 14.812 15.596 13.530 12.000 11.760 11.134 10.681 9.209 9.949 8.741 9.443 9.435 9.916 10.321 10.759 11.025 12.154 13.048 14.569 15.382 14.341 14.507 15.427 13.838 11.247 9.320 10.276 13.004 13.098 12.504 12.246 10.261 8.345
+ 13.247 13.251 13.859 14.085 14.382 12.568 11.573 10.654 10.482 9.695 8.593 8.825 8.416 8.802 9.424 9.696 10.233 10.642 10.702 11.057 11.345 12.154 14.372 14.516 12.845 12.909 12.831 12.484 11.459 11.217 13.619 14.090 13.241 13.726 12.020 8.723
+ 13.175 13.220 13.823 13.475 13.363 12.440 11.365 9.856 10.254 8.688 8.856 8.482 8.230 8.549 8.916 8.925 9.438 9.202 9.939 10.437 10.787 11.943 14.759 15.235 12.873 12.285 13.416 13.746 12.436 11.686 12.035 12.255 11.533 11.466 10.068 7.054
+ 13.112 13.225 13.779 13.287 13.003 12.362 11.110 9.719 9.690 7.656 7.952 8.842 8.759 9.056 8.759 8.282 8.846 9.279 9.422 9.772 10.195 11.522 14.433 15.237 12.663 12.029 12.099 11.836 11.398 11.154 12.047 12.656 12.031 12.281 10.547 8.337
+ 13.077 13.102 13.552 12.597 12.750 12.407 10.978 10.080 9.723 8.384 9.039 8.656 7.970 8.708 8.359 7.827 9.186 9.899 10.157 10.822 11.032 12.064 15.301 15.852 13.043 12.147 12.261 12.570 12.171 11.562 13.626 14.328 13.619 13.616 11.045 8.768
+ 12.742 12.385 12.880 12.044 12.498 11.844 10.114 9.386 9.805 8.507 7.961 7.422 7.484 8.819 8.862 9.043 9.305 9.875 9.883 11.779 12.943 13.979 15.510 15.986 14.096 12.334 10.817 10.375 10.208 11.003 13.269 12.900 11.700 12.386 9.885 6.050
+ 11.588 11.228 11.469 11.871 10.332 8.825 7.754 7.486 7.465 8.407 8.688 8.259 6.147 7.408 6.850 6.835 7.461 7.401 8.027 10.262 11.564 11.920 12.202 12.440 10.765 8.294 7.425 7.004 7.230 8.386 10.800 10.053 9.551 10.001 6.750 3.696
+ 10.957 10.901 10.434 9.199 7.995 5.723 6.671 6.551 7.048 5.029 7.078 7.893 6.518 5.997 5.679 3.650 4.474 4.916 4.241 5.111 5.120 4.941 7.349 7.999 5.895 4.634 5.466 4.287 4.592 4.977 5.360 5.469 4.946 5.351 3.516 2.970
+ 10.211 9.996 8.634 8.539 8.302 5.736 6.583 7.469 7.111 5.952 6.027 5.935 4.904 4.915 5.665 4.766 3.634 4.035 4.592 4.558 5.637 6.166 8.353 8.912 6.949 5.485 4.954 4.197 3.820 4.570 4.572 4.123 4.356 4.269 3.678 3.083
+ 9.271 9.087 8.898 7.191 7.079 5.732 6.294 5.719 4.895 4.339 4.548 3.966 4.184 5.987 5.654 2.929 3.733 5.237 4.623 4.708 5.100 5.452 7.283 7.786 5.331 5.541 3.688 3.708 2.745 3.266 5.176 5.339 4.410 4.161 3.623 2.539
+ 6.641 5.995 6.836 7.469 6.755 5.134 5.745 4.379 5.182 3.654 3.764 3.652 4.038 6.325 5.730 3.035 4.165 4.192 5.332 5.164 4.914 4.925 5.984 6.911 5.378 4.850 4.562 3.266 3.081 3.495 4.696 4.903 3.835 3.889 3.345 2.608
+ 5.478 4.932 5.808 4.696 4.614 4.665 4.386 4.770 4.645 2.574 2.359 3.903 4.105 5.919 5.898 4.187 3.587 3.537 4.205 4.658 4.501 4.770 5.389 5.350 4.495 5.131 2.677 2.355 2.961 2.366 3.335 3.263 4.096 3.072 2.491 1.770
+ 8.013 7.280 7.390 6.627 6.700 6.165 6.046 6.039 4.946 5.884 6.112 6.041 5.884 7.100 6.983 5.918 6.691 7.108 7.396 7.286 7.864 7.865 7.712 7.566 7.499 7.879 8.150 8.406 8.182 7.850 8.235 8.315 8.106 7.827 8.306 7.584
+ 15.852 16.372 16.405 15.617 15.086 14.745 15.017 15.638 15.483 15.157 14.337 13.031 11.556 12.054 12.687 12.190 11.668 12.922 13.089 12.647 12.367 11.954 11.987 10.897 10.919 12.130 11.966 12.029 11.744 10.666 11.517 12.017 11.332 10.976 11.798 10.937
+ 17.781 18.061 17.962 15.816 16.698 16.424 15.195 16.280 15.703 15.173 14.149 13.597 12.729 11.752 12.787 12.350 12.573 13.098 13.333 12.963 13.108 11.964 12.060 11.066 10.871 13.226 12.448 12.424 11.598 10.630 10.910 12.530 10.667 10.133 10.900 10.975
+ 18.431 16.470 16.043 15.662 14.320 14.121 13.513 13.191 13.470 12.996 12.397 10.734 11.235 9.906 9.101 9.550 9.577 9.300 10.507 11.107 10.127 9.841 10.686 10.112 8.844 11.968 11.564 11.403 10.861 10.778 9.998 12.082 11.492 10.699 10.817 10.174
+ 16.746 14.927 13.618 11.760 11.089 10.550 10.398 10.134 9.602 9.318 8.732 9.535 7.841 8.362 8.748 7.883 7.766 8.243 8.698 10.290 9.506 9.362 10.447 9.374 8.870 11.154 11.656 10.314 10.196 10.440 10.097 10.467 10.775 10.533 10.847 10.365
+ 12.151 10.974 11.103 9.528 8.114 8.232 8.352 7.877 7.732 7.856 8.350 8.103 7.983 7.633 7.335 6.969 6.987 7.769 8.036 8.047 7.994 8.936 8.984 8.389 8.616 9.016 10.451 10.622 9.659 9.991 10.791 10.606 10.026 10.356 10.359 9.234
+ 10.671 9.020 8.661 7.703 9.272 8.396 7.330 6.942 7.283 6.910 6.906 5.999 5.252 6.824 5.289 5.735 8.262 9.505 8.635 8.617 8.609 9.054 8.882 8.481 8.709 9.954 10.067 9.528 9.257 9.860 10.093 10.425 10.286 10.720 11.076 10.668
+ 11.280 11.004 9.572 9.124 9.625 9.429 8.425 7.329 8.271 8.718 8.181 8.880 7.396 7.957 7.517 6.732 8.487 9.427 9.688 9.575 9.552 9.701 9.075 9.580 9.176 10.869 10.056 9.960 9.812 10.398 10.138 11.214 9.748 10.343 10.953 10.031
+ 12.748 12.239 11.609 10.792 10.758 10.776 9.713 9.168 9.956 10.567 10.110 10.246 10.049 9.600 7.983 7.874 9.263 11.085 11.247 11.051 11.011 11.043 9.450 10.075 9.757 11.518 11.821 11.020 10.888 11.358 10.234 10.640 10.713 11.626 11.626 11.218
+ 9.707 10.826 10.656 9.747 9.310 9.974 9.671 9.718 9.099 9.126 8.401 8.680 7.057 7.370 8.276 8.529 8.413 9.718 9.050 10.529 9.915 8.794 8.296 8.670 9.759 11.721 11.231 9.260 9.703 9.780 10.616 11.325 11.093 11.229 10.977 10.129
+ 8.999 10.543 11.164 10.207 11.803 11.974 12.542 11.838 12.201 10.967 10.017 8.034 8.601 9.109 9.097 9.480 10.100 10.321 11.189 11.780 10.934 10.633 10.995 11.197 12.019 13.239 12.178 10.101 9.286 10.051 11.243 11.840 9.666 9.831 9.439 8.077
+ 11.788 12.696 11.670 11.550 12.532 14.117 13.949 15.192 14.739 13.761 13.251 12.263 10.548 11.530 11.308 11.824 12.285 13.220 14.205 14.715 13.680 12.183 11.257 11.133 11.813 13.643 13.065 10.875 10.385 10.557 13.246 13.963 12.234 10.274 9.358 6.809
+ 12.855 12.188 12.889 11.224 12.289 13.805 15.252 16.428 16.350 14.018 13.159 11.994 10.787 11.450 11.336 11.571 12.047 13.078 14.522 15.558 14.206 12.108 11.024 10.648 9.963 11.857 13.455 12.680 11.568 11.583 13.997 14.627 12.521 10.523 9.305 6.363
+ 13.101 12.660 13.331 11.512 11.867 13.500 14.653 15.480 15.907 13.635 12.406 11.875 10.906 11.113 11.025 11.021 11.056 11.429 12.225 13.737 14.100 12.730 11.332 11.209 11.069 12.663 15.263 14.085 12.500 12.770 14.145 13.792 11.608 10.171 9.189 5.612
+ 13.166 13.097 13.574 12.038 12.071 13.605 14.846 15.523 15.651 13.899 12.668 12.495 11.321 11.486 11.583 11.486 11.612 11.762 12.193 13.338 14.368 14.392 11.985 10.857 10.461 11.083 13.999 13.355 12.309 13.434 15.241 14.979 13.692 11.800 9.960 5.951
+ 13.229 13.411 13.777 12.152 12.044 13.559 14.584 14.929 15.361 13.799 11.595 12.202 11.293 10.872 11.238 11.319 11.479 11.460 11.441 12.070 13.552 15.410 14.161 12.689 12.157 12.376 13.927 13.710 12.775 14.202 15.714 14.757 13.589 11.984 10.784 7.443
+ 13.202 13.345 13.665 11.704 11.979 13.337 14.342 14.276 14.688 13.398 11.060 12.009 11.059 10.176 10.451 10.830 10.933 10.844 10.243 9.836 11.832 13.871 14.021 13.097 12.220 13.282 14.106 14.168 13.659 14.313 15.108 13.918 13.357 12.232 11.283 8.751
+ 13.046 12.788 13.180 10.657 11.759 12.548 13.616 13.737 13.502 12.453 10.418 11.994 10.306 9.306 9.733 9.954 9.828 10.944 9.630 9.088 9.502 11.468 13.412 13.691 12.892 13.771 13.945 13.092 12.924 13.297 13.971 12.496 12.567 11.771 11.427 9.184
+ 13.007 12.511 12.874 10.712 11.717 12.124 12.901 12.663 12.127 11.605 10.987 11.898 9.812 8.667 9.229 9.817 9.770 10.945 10.026 10.604 10.099 10.334 11.814 11.603 11.295 10.921 10.697 10.707 11.712 12.256 12.108 11.356 12.177 12.029 12.437 11.206
+ 13.215 12.965 13.162 11.423 11.365 12.348 12.838 12.478 11.865 11.080 10.988 11.675 10.426 8.106 8.955 9.647 10.000 11.150 10.375 10.733 10.526 10.678 11.617 11.434 10.352 8.066 7.795 8.055 10.169 11.092 10.639 10.533 12.078 11.817 12.223 10.757
+ 13.153 13.104 13.136 11.685 11.534 12.567 12.919 12.530 12.019 11.307 11.362 11.795 10.368 8.418 9.346 9.738 10.211 10.892 10.326 10.460 10.620 10.666 11.632 12.197 9.689 7.704 6.242 7.299 9.331 10.425 10.891 11.072 12.381 11.987 11.127 9.744
+ 13.140 13.046 12.968 11.646 11.797 12.369 12.684 12.008 10.775 10.954 11.745 11.736 9.872 8.214 9.209 9.564 10.114 10.281 10.150 10.033 10.752 10.818 11.114 11.677 10.163 8.162 5.566 5.973 8.738 10.095 10.614 11.089 12.359 11.945 11.429 9.626
+ 12.853 12.336 12.253 11.405 11.586 11.707 12.166 11.485 10.368 11.572 11.633 10.693 9.639 7.854 8.233 7.696 8.559 8.489 8.619 8.675 8.904 9.878 12.238 12.042 10.753 8.529 5.990 6.288 7.882 9.002 9.533 9.549 10.634 10.925 11.269 10.121
+ 12.562 11.422 11.620 11.691 10.721 12.052 11.694 10.171 10.419 10.675 9.661 10.417 8.763 6.217 6.604 6.416 7.849 8.616 8.664 8.933 9.692 10.527 11.949 11.912 10.075 8.194 6.731 6.164 7.176 8.611 9.078 8.897 9.860 10.059 11.390 10.167
+ 12.537 12.048 10.268 11.344 10.724 10.843 11.963 11.135 10.806 10.475 10.181 9.140 6.839 7.170 7.363 7.697 9.553 9.580 10.468 10.463 10.411 10.748 12.162 12.135 10.867 8.639 7.831 7.304 8.052 9.239 9.969 8.372 8.267 8.087 9.007 8.068
+ 11.159 10.944 11.874 11.104 11.189 12.363 12.070 10.940 9.994 10.499 10.051 7.965 7.676 9.045 10.038 10.803 11.590 12.063 12.994 12.352 10.455 10.009 11.652 11.779 11.507 8.652 8.424 7.905 8.435 8.635 10.381 8.714 8.820 9.645 9.564 9.148
+ 9.631 10.967 11.483 9.975 11.027 11.144 12.100 10.793 11.383 10.569 10.181 8.323 8.526 8.853 8.562 9.468 10.894 12.062 13.424 12.482 10.348 10.525 9.965 10.904 11.513 9.386 8.937 9.278 9.855 9.314 9.758 10.234 10.390 11.325 11.608 11.314
+ 7.815 10.111 9.811 9.005 9.005 9.315 9.898 9.586 9.473 9.021 8.891 8.003 7.726 7.830 7.482 6.831 7.838 10.322 11.371 10.346 10.018 9.794 9.152 10.710 10.852 9.517 9.459 10.081 10.408 10.497 11.039 11.149 11.237 11.814 12.725 13.167
+ 8.528 7.657 7.829 8.763 8.297 8.544 8.728 8.611 6.792 6.410 6.281 7.822 7.641 6.774 7.392 7.304 8.787 9.998 9.932 9.622 9.194 9.728 9.515 9.687 9.708 10.817 10.639 10.295 10.292 11.391 12.000 11.812 11.375 12.798 13.144 12.793
+ 7.857 7.022 7.676 8.192 7.762 8.298 7.203 8.632 8.525 7.549 8.550 8.526 8.820 8.336 9.408 8.598 9.100 10.218 10.187 9.571 10.250 9.880 9.742 8.723 9.126 10.023 10.373 10.454 8.803 11.513 11.715 12.384 12.483 13.243 13.536 13.489
+ 5.141 7.924 8.299 6.757 6.117 7.627 7.654 7.556 8.625 7.583 8.028 8.321 8.210 7.707 8.732 9.796 9.526 9.319 9.895 9.865 9.773 10.331 9.607 10.166 9.278 11.104 10.196 10.920 10.534 11.233 12.958 13.055 12.826 13.964 14.157 13.788
+ 7.830 7.275 5.836 7.225 7.520 6.817 7.335 8.547 8.746 8.471 8.246 8.932 8.951 9.091 9.341 9.531 10.085 10.614 11.360 10.528 9.657 11.270 10.981 10.522 10.209 11.575 10.279 11.263 11.317 11.837 12.449 12.903 13.335 14.420 14.873 14.397
+ 9.646 9.516 9.348 9.730 8.760 9.421 9.318 8.838 9.358 9.540 8.106 6.623 8.731 9.343 8.959 9.545 10.020 11.121 12.565 11.975 10.938 10.235 10.767 11.371 10.304 12.601 11.692 11.549 11.917 12.397 12.749 13.046 13.625 13.965 13.791 14.801
+ 9.894 11.168 11.467 11.741 12.242 12.953 12.835 12.309 11.510 11.533 9.836 9.267 9.069 9.701 10.519 11.143 11.238 10.901 12.223 11.437 10.899 10.921 11.941 12.512 11.503 12.929 11.839 11.091 11.684 11.141 11.653 13.976 14.500 13.384 13.464 13.910
+ 12.086 12.087 11.705 13.035 13.812 14.719 15.763 15.495 13.932 13.647 12.121 12.313 11.653 11.691 10.727 10.672 11.932 12.727 12.867 12.127 11.300 10.992 10.685 11.216 13.003 14.067 12.743 11.278 10.156 9.717 10.583 10.725 11.712 12.359 11.447 10.437
+ 12.903 12.679 12.218 12.309 13.402 15.224 15.967 16.508 15.619 13.616 14.032 13.511 11.741 13.029 12.333 12.830 13.249 14.455 14.617 13.197 12.575 11.837 11.116 11.555 12.866 14.290 12.534 10.854 8.857 9.273 10.580 9.775 9.986 11.936 10.341 8.543
+ 12.950 12.337 12.509 12.113 13.040 14.388 15.136 16.057 16.607 15.221 13.940 14.298 13.455 12.938 13.324 12.854 14.148 15.262 16.054 14.562 14.431 13.104 13.035 12.761 13.419 14.038 12.957 11.949 11.898 11.628 12.089 12.001 10.731 11.898 10.940 9.675
+ 12.701 12.028 12.447 11.930 12.993 14.136 14.584 16.736 17.219 14.954 14.666 14.381 12.975 12.958 12.925 12.669 13.391 14.672 17.193 16.510 15.420 13.952 13.731 13.242 14.043 14.350 13.684 12.411 11.988 11.990 13.164 13.585 11.737 12.613 11.273 9.985
+ 12.477 11.683 12.145 11.834 12.732 13.890 13.819 16.528 17.095 15.937 14.563 13.712 12.567 12.651 11.958 12.086 12.490 13.348 16.053 15.522 14.538 13.207 12.955 12.635 13.447 13.903 13.545 12.127 10.945 11.608 13.871 14.779 12.780 13.075 10.305 8.842
+ 12.259 12.000 12.129 12.287 13.160 14.060 14.020 16.657 17.411 17.200 15.193 13.737 13.429 13.621 13.375 13.410 14.034 15.163 16.961 16.382 14.175 12.858 11.347 12.166 12.412 13.200 13.704 13.000 12.302 12.740 13.883 14.720 12.421 11.943 10.100 9.289
+ 12.286 11.940 11.810 12.310 13.195 13.838 14.039 16.484 17.124 17.455 15.246 14.453 13.987 13.885 13.598 13.630 14.301 15.146 16.886 16.276 15.169 13.876 12.839 12.712 12.699 11.894 12.239 12.387 12.170 12.619 13.772 14.460 12.055 11.039 10.440 10.156
+ 12.290 11.822 11.439 12.062 13.017 13.372 13.656 16.094 16.932 17.107 16.007 14.956 13.030 14.175 13.355 14.085 13.858 15.781 16.518 16.676 15.073 14.379 13.845 14.784 14.765 14.156 13.553 12.975 12.380 13.002 14.291 14.711 12.711 12.174 10.866 10.310
+ 12.132 11.319 11.254 12.173 12.883 13.196 13.886 15.968 17.035 17.346 15.552 14.190 13.511 13.751 13.678 14.144 14.545 15.445 16.254 15.781 13.674 12.728 12.829 13.303 13.514 12.497 11.786 11.670 11.777 12.620 13.987 14.727 12.652 11.910 9.052 8.096
+ 12.035 11.225 11.460 12.197 12.616 13.267 13.699 15.825 17.298 17.579 16.396 14.552 13.320 13.794 13.862 14.136 14.616 15.450 17.027 16.423 15.180 14.356 14.023 14.615 15.152 14.169 12.935 12.260 12.208 12.637 13.881 14.701 12.493 11.949 10.344 9.906
+ 11.997 11.334 11.413 12.436 12.450 13.393 13.864 15.547 17.214 17.485 16.494 14.352 13.285 13.826 14.003 14.176 14.713 15.111 15.819 15.602 14.658 13.892 13.785 14.273 14.925 13.545 12.246 11.641 12.137 12.878 14.010 14.538 12.193 11.340 9.636 9.011
+ 12.273 11.734 11.746 12.574 12.988 13.525 14.322 15.511 17.235 17.567 16.718 14.677 13.858 14.306 14.571 14.646 15.121 15.966 16.270 15.693 14.525 14.377 14.559 15.204 14.977 13.560 11.969 11.506 12.345 13.626 14.620 15.118 12.859 12.271 10.118 8.889
+ 12.105 11.531 11.415 12.222 12.860 13.378 14.241 15.164 16.945 17.138 16.982 14.296 13.767 14.248 14.517 14.544 14.927 15.762 16.101 16.216 14.373 13.744 13.898 14.798 14.497 13.259 12.661 11.850 12.275 14.116 15.423 15.063 12.424 10.737 9.567 9.371
+ 11.988 11.515 11.046 12.189 12.762 13.061 13.874 15.036 16.764 17.163 17.096 14.219 14.517 13.903 14.493 14.306 15.393 15.372 16.688 15.783 14.212 13.659 13.389 13.827 14.204 11.987 11.794 11.007 11.076 12.923 14.485 14.272 11.870 10.705 9.097 8.387
+ 11.872 10.881 11.177 12.060 12.415 12.909 13.527 14.759 16.827 17.670 17.108 14.377 14.594 13.812 14.236 14.546 15.486 16.223 15.535 14.069 13.354 13.279 13.584 14.452 13.292 11.716 10.884 10.354 10.962 12.424 14.327 13.945 11.764 11.753 10.258 9.440
+ 11.761 11.162 11.611 12.112 12.593 13.052 13.710 14.934 16.978 17.894 16.941 14.572 14.598 14.257 14.726 15.006 16.530 17.672 16.354 14.390 13.646 13.552 13.981 15.101 13.628 11.372 10.412 10.730 11.237 12.706 14.555 14.031 11.605 11.576 9.447 8.316
+ 11.772 11.632 11.877 12.089 12.918 13.180 13.924 15.118 16.827 17.692 16.530 14.654 15.175 14.896 15.437 15.915 17.896 17.895 16.058 13.978 12.947 12.983 13.821 14.773 13.161 11.143 10.501 10.728 11.245 12.594 13.601 14.104 12.078 10.925 9.038 7.996
+ 11.689 11.630 11.493 12.155 13.012 13.139 14.009 15.608 16.818 17.819 16.671 14.446 15.395 14.813 15.617 16.628 17.877 16.358 15.781 14.228 13.811 13.812 14.291 14.488 13.871 12.195 11.583 11.203 10.752 11.063 12.286 12.487 10.707 9.841 9.245 8.485
+ 11.324 11.357 11.153 12.038 12.733 12.778 13.953 15.356 16.808 17.810 15.706 14.774 15.108 14.432 15.341 16.410 17.338 15.154 14.069 12.655 12.132 12.266 12.963 13.170 12.290 10.691 10.298 10.025 10.181 11.708 13.220 12.668 10.983 10.213 9.031 8.771
+ 11.262 10.980 11.189 11.888 12.444 12.809 13.928 15.487 17.174 17.687 14.986 14.601 14.678 14.456 15.477 17.148 16.449 14.293 13.282 11.931 11.453 11.571 12.144 12.596 12.200 10.398 9.827 9.585 10.058 11.847 13.761 12.955 11.184 11.111 9.206 8.129
+ 11.358 11.549 11.903 12.333 12.814 13.380 14.554 16.441 17.493 17.355 14.691 14.496 14.712 14.978 16.552 17.107 15.104 13.768 13.016 11.932 11.711 11.669 12.406 13.099 12.507 10.799 10.210 10.250 10.697 12.592 14.055 12.922 11.526 10.810 9.817 7.600
+ 11.756 11.688 11.890 12.504 12.898 13.550 14.919 16.474 16.927 16.673 14.641 14.323 14.604 15.339 16.479 16.449 14.633 13.603 12.698 12.137 11.672 11.434 11.814 11.445 10.369 9.199 8.923 9.415 10.308 12.185 13.393 12.121 10.748 11.026 9.385 8.165
+ 11.480 11.278 11.396 12.409 12.661 13.034 15.075 15.900 16.826 15.311 13.866 14.173 14.039 15.040 16.165 15.697 13.622 11.867 11.331 10.829 10.731 10.822 11.438 11.318 9.943 9.063 9.634 9.495 9.745 11.019 12.615 11.141 10.434 11.357 10.015 8.379
+ 11.238 10.738 11.130 12.194 12.933 12.887 15.099 16.536 16.382 14.888 13.493 13.099 13.554 14.803 16.333 15.592 12.712 11.688 11.118 10.744 10.412 10.972 11.883 12.407 10.277 8.876 10.267 9.720 9.736 11.269 12.379 10.929 9.953 11.278 9.637 7.745
+ 11.119 11.153 11.742 12.222 13.038 13.643 15.771 16.272 15.662 14.605 13.644 12.968 13.346 14.749 16.209 15.518 12.908 12.016 11.667 10.934 10.919 11.394 12.798 13.219 11.435 9.743 11.294 10.397 10.307 12.036 13.223 11.289 9.630 11.036 9.632 6.850
+ 10.208 10.408 11.189 12.499 13.493 14.513 15.981 15.828 15.540 14.137 13.399 12.978 13.198 14.043 15.532 15.295 13.765 12.401 11.933 10.880 10.807 11.506 11.999 10.771 10.872 11.856 10.560 9.782 9.348 10.478 11.974 10.731 8.961 11.085 11.722 9.485
+ 9.142 9.067 9.455 9.947 11.745 13.096 14.993 14.444 13.137 12.027 10.318 10.500 10.851 11.729 13.664 14.257 11.708 10.268 9.724 8.664 8.800 8.830 9.446 8.003 8.892 10.515 8.494 7.483 7.772 8.066 10.269 8.766 6.706 9.791 10.336 9.805
+ 9.034 9.378 10.061 10.760 12.388 14.178 14.215 12.846 11.909 11.517 10.759 10.453 10.645 11.594 12.705 14.055 12.898 10.717 9.830 8.817 9.058 8.722 6.963 6.686 7.429 9.562 8.506 6.712 7.418 7.367 9.439 9.049 7.494 9.430 10.504 11.038
+ 6.352 6.304 5.408 5.505 9.184 10.994 10.749 10.374 11.068 8.461 5.903 5.474 6.037 6.375 8.015 11.309 10.049 7.064 6.281 5.887 5.681 5.726 6.364 6.725 6.089 7.178 6.083 4.610 4.621 5.373 5.459 5.774 6.137 7.311 7.803 7.132
+ 6.191 5.178 6.553 6.194 6.639 8.504 8.806 8.969 10.119 8.458 7.010 5.375 4.815 6.325 8.212 8.874 7.494 7.371 7.828 6.166 5.845 6.256 5.761 6.380 6.277 6.081 4.596 4.452 4.636 4.444 5.632 5.098 5.696 5.349 4.625 4.902
+ 6.827 5.718 5.799 5.906 5.623 7.990 9.109 9.051 9.905 8.783 7.121 5.596 6.093 6.181 7.299 7.940 6.796 6.536 6.250 5.058 5.207 5.444 5.235 5.721 4.850 5.617 4.517 3.236 3.609 4.258 4.688 4.171 4.460 3.389 3.901 3.350
+ 4.791 4.720 3.838 4.770 5.613 6.912 8.161 8.659 9.527 8.074 6.837 5.287 4.444 6.178 6.222 6.251 6.707 6.057 5.604 5.396 4.882 4.840 3.829 4.594 4.686 5.065 3.441 3.903 3.888 4.595 4.649 3.950 3.614 3.775 3.755 3.253
+ 4.911 4.846 4.957 4.442 4.105 6.239 7.978 7.979 8.812 8.171 6.876 4.110 3.470 5.494 6.203 5.458 5.765 5.395 5.781 5.366 4.559 2.888 2.993 3.823 3.398 3.720 3.238 2.961 3.665 3.740 4.250 4.155 3.654 4.008 3.052 2.441
+ 2.070 4.042 4.643 4.934 5.417 6.458 8.299 7.994 8.494 7.051 5.072 3.512 2.330 4.124 5.359 4.943 4.019 4.596 4.485 4.964 4.077 4.164 3.337 4.366 4.783 3.451 3.682 3.194 2.843 3.787 4.167 3.723 3.580 3.037 2.530 1.798
+ 5.700 5.384 3.878 4.635 4.478 4.924 7.050 6.702 8.061 7.287 5.213 5.076 4.575 5.050 5.103 5.722 4.974 5.570 5.691 4.962 4.310 3.771 2.675 3.877 3.563 3.830 3.561 2.379 2.942 3.379 3.560 3.093 3.340 3.323 2.669 1.756
+ 5.463 5.567 5.027 5.874 5.774 5.893 7.291 7.843 8.122 6.463 4.677 4.478 3.663 5.626 6.772 6.850 5.059 4.412 5.407 4.058 4.084 3.567 3.256 3.850 3.824 4.070 3.555 3.412 3.050 2.651 3.372 3.420 3.842 3.731 2.539 1.337
+ 3.836 5.007 4.653 4.094 3.559 4.291 5.902 5.807 6.823 5.654 4.581 4.093 4.023 6.260 6.594 6.165 5.142 4.771 4.781 3.909 4.364 4.013 3.911 3.650 4.423 4.906 4.535 3.587 2.692 2.731 2.183 2.882 4.222 4.318 3.153 2.017
+ 5.721 6.200 6.175 7.036 8.338 8.976 8.963 9.231 9.393 9.179 8.505 8.071 8.063 8.582 9.226 9.020 9.562 9.476 8.325 8.555 9.139 9.173 8.306 7.286 7.814 8.571 8.921 8.387 8.890 9.467 8.841 9.216 9.680 9.198 9.811 9.288
+ 7.756 7.447 7.297 8.056 8.845 9.573 9.410 9.454 9.738 9.437 8.556 7.361 7.416 8.825 9.342 8.775 9.940 9.997 8.203 8.896 9.257 9.316 8.312 6.875 7.783 8.646 9.157 8.565 9.156 9.628 8.966 9.619 10.113 9.939 10.248 10.466
+ 4.446 5.789 6.217 6.352 5.559 6.501 7.339 6.910 6.432 6.042 6.633 5.571 6.437 6.893 7.329 7.473 8.596 7.960 8.167 6.650 7.603 8.437 8.868 8.256 7.694 8.144 7.968 8.167 9.958 9.863 9.624 10.342 10.147 11.314 11.185 11.824
+ 5.567 6.472 5.534 5.389 5.336 6.352 6.113 4.803 6.150 6.991 7.550 7.762 7.658 9.542 8.825 7.973 8.988 10.571 9.817 9.591 10.235 10.103 10.225 9.935 9.407 10.207 10.722 9.301 10.326 10.910 11.556 11.783 12.081 12.409 13.818 13.863
+ 7.931 7.190 5.685 5.290 6.080 7.474 7.877 7.694 7.834 8.041 8.248 8.433 8.553 8.892 9.504 8.721 11.203 11.299 10.727 10.320 10.764 11.394 10.768 11.193 10.415 10.898 11.359 10.897 11.323 11.085 12.168 12.796 12.480 12.720 13.910 13.354
+ 6.838 6.590 7.914 6.790 8.515 8.819 8.829 7.925 8.518 7.521 7.964 8.094 9.623 9.338 9.280 9.222 10.710 10.923 11.217 10.355 10.944 10.493 10.233 11.302 10.525 10.325 11.680 11.552 11.836 11.381 11.883 12.635 12.802 13.040 13.904 13.796
+ 8.222 8.059 8.404 8.179 8.532 7.442 7.359 7.287 8.851 8.899 8.031 8.636 9.914 10.350 8.715 9.035 10.307 11.871 11.032 9.922 10.965 10.689 11.556 10.916 10.667 10.866 11.371 11.550 11.323 10.809 12.058 12.317 13.265 13.446 14.215 14.097
+ 8.888 8.459 7.592 8.206 8.619 9.260 8.540 8.517 9.998 10.053 8.489 9.744 9.576 9.814 8.815 9.474 9.527 10.738 11.213 9.859 11.114 11.077 10.665 9.963 8.858 10.517 11.111 10.715 10.690 11.103 12.231 13.492 14.094 13.088 13.874 13.516
+ 9.049 8.007 7.244 6.721 7.622 8.464 9.694 9.641 8.258 9.914 9.931 9.025 8.575 8.641 8.938 8.825 11.155 11.473 11.478 10.562 10.288 10.587 10.350 10.799 9.627 11.441 11.927 10.868 10.903 11.757 11.674 13.857 13.793 12.099 13.521 13.868
+ 7.370 6.978 8.135 6.590 6.927 8.983 9.633 9.071 8.753 10.330 10.463 8.986 7.925 9.468 9.195 9.220 11.168 11.160 10.474 11.305 10.428 10.248 10.166 10.070 10.855 12.218 12.027 10.788 9.861 10.643 11.848 14.240 14.205 12.513 13.523 13.202
+ 8.967 9.155 10.992 11.030 11.572 12.940 12.697 12.272 11.041 10.706 9.335 9.494 7.819 7.791 8.461 9.903 10.612 11.273 10.641 8.850 8.777 9.527 8.773 9.259 10.183 11.864 11.364 9.675 9.340 10.455 10.519 12.706 12.788 11.110 12.222 12.666
+ 11.305 11.548 11.058 11.857 13.929 14.694 15.218 13.934 12.547 11.459 10.969 10.252 10.900 10.690 11.188 11.885 12.653 12.299 10.614 9.740 8.584 8.224 7.853 8.577 9.695 12.362 11.995 10.779 10.440 9.789 9.230 10.892 10.884 10.046 10.642 11.843
+ 11.681 11.444 11.719 12.421 13.619 15.213 16.125 15.067 13.391 12.212 11.450 11.139 11.527 11.760 12.128 13.023 14.483 13.772 10.423 9.485 8.328 7.405 7.523 8.760 10.449 13.455 13.040 11.783 11.403 9.971 10.631 13.045 12.528 10.915 10.370 9.232
+ 11.757 12.057 12.288 12.829 13.686 15.069 16.408 15.834 14.421 13.361 12.160 11.810 11.976 11.497 11.940 12.753 14.694 14.649 11.519 10.447 9.697 9.098 9.168 10.357 12.179 14.152 13.430 11.578 10.776 10.644 12.054 13.654 12.836 12.541 12.280 9.507
+ 11.480 11.591 11.847 12.729 13.299 14.499 15.506 16.475 14.139 14.122 12.787 11.531 11.711 11.921 12.080 13.331 14.514 15.118 12.781 11.769 11.105 10.197 10.006 10.803 12.195 14.693 14.037 12.103 10.942 10.738 12.904 13.376 12.020 12.817 12.696 11.046
+ 11.142 11.049 11.049 12.214 13.052 13.269 15.825 16.617 14.742 14.439 12.819 11.447 11.955 11.571 12.088 12.619 14.087 14.767 14.047 12.563 11.398 11.072 11.035 11.425 12.884 15.099 14.244 12.333 11.013 11.374 13.227 13.390 11.830 12.732 13.081 11.911
+ 11.161 11.086 11.651 12.090 12.928 13.124 15.733 16.633 15.534 14.289 12.680 11.538 11.904 11.629 11.880 12.601 13.753 15.087 13.698 12.172 11.673 10.951 10.929 11.639 13.318 14.793 13.892 12.221 10.870 11.553 13.633 13.484 12.063 12.115 12.186 11.260
+ 11.243 11.500 12.039 12.409 13.072 13.138 15.502 16.083 15.898 14.903 13.294 11.938 12.015 11.877 12.325 13.011 14.008 14.937 13.722 11.873 11.609 11.000 11.270 12.158 14.178 14.750 13.736 12.483 11.543 12.649 14.192 13.259 11.571 11.494 11.785 11.373
+ 11.196 11.247 11.407 12.282 12.767 12.863 15.191 15.526 15.724 14.934 13.658 12.217 12.754 12.270 13.062 13.920 14.903 15.704 14.643 12.463 12.117 11.840 11.651 12.121 14.366 14.944 14.070 12.667 11.528 12.681 13.568 12.735 11.285 11.127 11.566 11.395
+ 10.734 10.812 11.079 11.578 11.881 12.710 14.745 15.785 15.974 14.448 12.844 12.174 11.849 12.270 12.682 13.326 14.633 14.689 13.519 11.149 10.657 9.976 8.726 9.942 12.587 12.933 12.282 11.234 10.568 12.128 12.951 11.865 10.690 9.610 9.640 9.831
+ 10.973 10.903 11.508 11.606 12.640 12.886 14.754 16.017 16.412 15.371 13.667 12.505 12.817 12.896 13.330 13.972 15.215 15.729 14.232 12.843 12.180 11.413 11.594 12.466 13.736 14.074 13.450 12.002 11.242 13.165 13.709 12.248 11.058 10.774 11.360 11.245
+ 11.356 11.346 11.856 12.368 12.960 13.141 14.842 15.983 16.290 15.690 14.206 12.591 12.932 12.743 13.605 13.957 15.327 15.221 14.028 12.235 11.475 10.877 11.024 12.123 14.017 14.204 12.830 11.174 10.675 13.323 13.384 11.760 10.353 10.869 11.275 11.434
+ 11.363 11.441 11.691 12.370 12.728 13.172 14.876 15.512 16.043 15.265 13.978 13.027 12.747 12.926 13.149 14.135 15.500 14.953 13.029 11.813 11.129 11.035 10.225 11.030 12.392 12.176 11.543 11.072 10.392 12.010 12.047 10.787 9.629 9.666 9.684 8.512
+ 11.104 11.048 11.207 12.055 12.565 12.733 14.668 15.709 16.224 14.830 13.185 12.965 12.711 12.723 13.110 14.440 15.613 15.420 13.176 11.145 10.230 10.016 9.746 10.552 12.405 11.688 11.584 10.716 9.554 11.470 11.548 10.201 9.199 8.966 9.409 8.797
+ 11.232 11.052 11.603 11.993 12.607 13.009 14.810 16.103 16.343 15.244 13.194 12.943 13.081 13.083 13.547 14.676 16.423 15.658 13.696 12.476 11.576 11.227 11.140 11.998 13.331 13.006 12.480 11.577 10.085 11.941 11.709 10.420 9.511 9.141 10.002 10.361
+ 11.554 11.349 11.896 12.390 12.757 13.326 14.862 15.860 16.162 15.296 13.667 13.383 13.215 13.372 13.945 14.812 15.399 15.443 13.721 12.783 12.052 11.724 11.419 12.052 13.371 12.921 12.604 12.079 10.813 13.047 12.396 10.761 9.897 9.567 10.158 10.495
+ 11.597 11.410 11.603 12.416 12.570 12.937 14.569 15.123 16.097 15.294 13.548 13.743 13.197 13.546 13.708 14.461 14.756 14.918 13.334 12.286 12.093 11.873 11.702 12.736 14.455 13.441 13.042 12.204 10.854 12.044 11.003 10.340 10.088 9.581 9.714 9.898
+ 11.657 10.778 10.641 11.814 11.403 12.548 13.605 14.746 15.988 14.420 14.046 14.070 12.661 13.724 13.317 14.605 15.318 14.247 13.211 12.344 12.175 11.945 11.772 12.873 13.970 13.891 13.231 12.461 10.775 11.946 10.224 9.441 9.097 8.647 9.932 10.530
+ 11.622 10.187 11.134 11.847 10.648 12.301 13.075 13.920 15.880 15.320 13.776 13.317 13.190 13.091 13.602 15.092 14.757 14.003 13.232 12.717 12.341 12.352 12.337 12.938 13.802 14.462 14.118 13.275 11.380 11.819 10.407 9.690 9.447 10.083 10.777 11.481
+ 11.627 11.697 11.018 10.315 11.147 11.171 12.899 14.477 14.784 13.913 13.726 11.413 12.060 12.075 13.417 14.136 14.000 13.492 13.346 12.642 12.174 12.015 11.766 11.836 12.270 13.305 13.480 12.949 11.210 11.026 10.011 9.503 10.036 10.104 10.728 11.237
+ 10.254 11.513 12.222 10.491 10.592 11.787 12.534 13.106 13.501 13.842 12.498 11.077 11.891 12.150 14.007 14.782 13.193 12.806 12.824 11.198 11.601 11.879 10.809 10.703 10.466 13.003 13.631 12.814 10.603 9.887 8.631 8.174 8.524 10.005 10.483 11.117
+ 9.032 11.939 11.480 10.351 10.007 11.047 11.325 11.380 12.540 13.501 12.320 9.967 11.659 10.986 13.679 14.089 12.889 11.483 11.215 10.286 10.409 9.592 9.914 9.269 8.582 10.344 11.429 11.168 10.116 9.324 6.798 6.935 7.043 10.046 9.919 9.599
+ 9.092 11.265 10.898 10.277 7.834 9.339 10.528 10.935 11.230 11.992 10.799 9.824 10.071 10.202 12.437 12.876 10.603 9.689 9.682 9.375 9.049 8.575 8.365 8.476 7.828 8.936 10.518 10.244 9.182 8.602 6.589 5.516 6.236 8.925 9.373 8.814
+ 8.864 9.604 9.890 9.239 8.012 7.933 7.819 8.722 9.711 9.434 9.104 8.688 8.679 9.261 9.947 9.888 8.320 8.929 9.576 8.804 7.502 7.467 7.433 6.925 7.862 7.656 9.442 9.506 7.589 7.696 6.387 5.721 6.684 8.179 8.763 7.715
+ 8.633 7.519 7.863 6.480 6.110 5.201 4.773 7.169 8.679 9.370 9.775 8.769 8.103 9.295 10.508 9.295 8.217 9.167 9.102 7.595 6.788 6.356 7.423 7.450 6.465 6.806 7.837 8.127 7.877 8.330 7.114 7.188 7.357 8.015 8.404 6.927
+ 7.650 6.574 6.445 6.284 5.461 5.027 5.646 7.339 7.957 7.715 8.458 6.693 6.039 6.408 8.190 8.239 7.700 8.068 8.000 6.419 6.302 5.199 5.718 5.603 5.762 6.100 7.204 8.121 7.330 7.375 6.367 7.423 7.752 7.828 8.056 7.208
+ 4.522 4.808 3.607 4.423 5.483 5.990 6.933 6.047 6.531 7.333 7.336 6.946 6.208 6.456 7.264 7.336 6.537 6.933 6.377 5.356 5.986 5.783 6.055 6.799 5.260 5.061 4.967 5.867 6.811 6.289 5.825 6.366 8.016 7.184 6.871 6.479
+ 4.054 4.989 4.868 5.077 5.462 6.140 6.640 6.411 6.954 6.291 7.085 5.359 5.287 5.086 5.688 4.981 4.921 6.203 6.009 4.391 3.444 5.286 6.203 6.572 5.600 5.601 4.696 6.111 5.669 5.289 5.961 6.508 6.899 6.620 6.134 6.028
+ 3.809 4.955 5.219 5.573 4.930 6.474 6.427 6.961 6.094 5.216 4.537 4.643 4.067 5.907 6.309 5.748 5.834 7.286 6.576 5.654 5.246 5.706 6.019 5.933 5.319 5.080 5.730 5.426 5.089 4.499 4.964 5.385 5.527 5.947 5.704 3.596
+ 5.391 5.987 5.020 5.043 5.516 6.481 6.304 6.598 6.652 6.218 4.485 3.392 4.100 5.173 5.386 6.486 6.549 7.299 7.190 6.961 6.033 6.067 5.218 6.116 6.260 5.459 4.739 4.985 4.639 5.426 6.850 7.390 7.411 6.570 6.300 6.931
+ 4.950 4.526 3.824 4.541 5.135 4.157 4.526 5.765 5.846 5.149 3.846 3.505 4.121 4.256 5.731 6.480 7.569 8.461 8.726 6.844 5.542 5.184 4.682 6.061 5.766 5.974 5.619 5.251 4.563 5.362 6.611 7.068 7.180 6.733 5.984 6.766
+ 4.877 4.596 4.577 4.157 3.589 4.090 5.249 5.005 4.303 4.618 4.613 3.952 4.445 4.389 6.127 6.028 6.162 7.887 7.748 7.016 5.683 5.471 4.953 5.547 5.377 4.668 4.132 4.479 4.274 4.996 6.004 6.805 6.966 5.936 5.439 6.156
+ 4.478 4.868 3.021 2.568 3.701 5.179 3.935 3.437 4.503 4.900 4.081 3.456 2.797 4.281 5.284 5.146 5.029 4.766 5.052 4.828 4.226 4.608 5.113 5.627 4.329 4.051 3.548 3.339 3.447 4.019 3.798 3.957 3.824 4.058 3.663 3.663
+ 5.489 4.792 5.121 4.972 4.485 5.947 6.322 4.846 4.756 6.051 4.895 5.466 5.245 4.441 5.560 6.005 6.726 7.196 7.073 6.859 6.435 5.759 6.118 6.103 5.801 6.137 6.407 6.042 6.037 6.842 7.160 6.624 5.832 6.032 6.079 6.015
+ 7.247 8.028 8.472 8.652 8.563 8.701 8.971 8.802 8.847 8.833 8.387 8.616 8.837 8.973 9.399 10.001 10.676 11.394 11.699 11.343 10.405 9.825 9.467 9.237 9.650 10.398 10.600 9.715 10.005 11.128 11.819 10.568 9.807 9.666 10.040 10.336
+ 5.345 6.163 6.821 7.934 6.271 6.076 6.341 6.560 6.665 6.104 6.017 5.837 5.992 6.507 6.467 7.406 8.278 9.341 9.737 9.664 8.373 7.547 7.162 6.800 7.289 8.108 8.875 7.402 7.371 8.956 10.118 8.182 7.339 7.476 7.908 8.269
+ 4.618 6.629 7.793 8.256 6.886 6.459 5.428 4.677 3.603 6.474 6.269 6.850 6.264 5.513 6.397 7.043 7.413 8.844 10.231 9.244 8.165 7.853 7.188 8.090 8.613 8.387 8.227 7.573 7.381 8.309 8.630 9.519 7.462 7.431 7.975 7.827
+ 5.564 6.147 6.432 6.815 6.046 7.004 6.000 6.666 7.042 7.285 6.427 6.629 6.824 7.290 8.114 8.134 8.580 8.008 10.529 10.306 8.812 8.033 7.447 7.733 8.014 8.257 9.980 8.693 7.941 7.765 9.191 9.819 8.370 7.505 7.955 8.483
+ 3.972 5.258 6.649 7.120 6.156 6.446 7.492 6.917 6.835 5.864 5.610 7.250 8.235 8.146 7.429 8.767 9.191 8.735 9.540 10.271 10.444 9.043 8.370 9.008 8.703 8.592 9.495 8.573 7.703 8.680 9.795 9.411 8.694 8.615 8.757 8.790
+ 4.629 6.849 7.409 7.291 6.168 5.446 6.635 6.348 5.938 7.231 7.206 6.735 7.280 7.068 7.545 9.543 9.987 10.447 11.248 9.651 10.565 9.985 9.214 10.143 9.623 9.798 9.359 8.656 8.203 9.226 10.355 10.036 10.013 9.486 9.487 8.971
+ 6.057 6.222 5.943 5.268 5.888 6.500 7.301 6.973 5.863 7.087 7.564 8.102 8.726 8.163 8.874 7.823 9.841 9.130 10.171 11.727 11.701 9.327 9.576 9.378 9.817 10.676 10.254 9.421 9.169 9.311 11.377 11.460 9.805 9.147 9.697 9.008
+ 5.097 5.036 5.180 7.015 8.200 8.275 7.504 6.639 6.667 6.664 7.421 8.731 7.847 8.431 8.730 9.220 9.254 9.808 10.668 12.120 12.443 10.776 9.393 9.535 10.081 10.691 10.563 9.451 9.931 9.298 11.062 11.094 9.956 9.779 9.481 8.555
+ 4.944 5.620 6.510 6.965 7.305 7.089 8.507 8.166 6.313 6.670 7.764 7.601 8.447 8.025 7.125 9.332 9.337 9.436 10.081 12.021 12.108 10.602 9.419 9.774 10.093 10.585 9.987 10.027 9.554 8.840 10.243 11.748 10.517 10.119 9.576 10.216
+ 4.363 5.817 7.470 7.222 6.629 7.975 7.442 6.652 5.430 7.112 7.118 6.991 6.648 7.180 6.638 8.934 9.121 10.290 11.013 11.890 12.464 10.496 10.049 9.794 9.274 11.157 11.725 9.645 9.540 8.812 10.176 10.833 10.035 9.359 10.080 9.303
+ 7.105 6.135 7.293 6.391 7.982 8.807 8.424 6.992 7.895 8.406 8.353 8.670 8.143 8.018 9.068 8.287 8.482 9.992 10.457 12.087 12.212 10.622 10.044 9.692 8.971 10.352 11.095 10.306 10.268 9.926 10.650 11.023 10.109 10.522 10.442 10.239
+ 7.234 6.066 6.414 7.187 6.802 6.671 7.542 7.844 7.251 6.586 8.398 8.895 8.944 9.001 8.838 8.000 8.981 11.245 11.249 12.343 12.845 10.413 10.254 10.006 9.864 12.160 11.671 10.425 10.097 10.270 12.203 11.395 9.415 9.922 11.341 10.507
+ 7.399 7.170 5.395 5.740 7.333 8.073 8.487 7.923 6.651 7.475 8.349 8.685 8.633 8.967 9.141 9.157 9.589 10.477 11.462 12.591 11.667 10.341 10.142 9.849 10.059 11.476 11.593 10.389 9.382 10.484 11.532 11.167 10.513 10.472 11.085 10.544
+ 7.125 6.541 6.653 6.814 6.718 8.487 8.884 9.136 7.545 8.517 6.871 6.620 8.051 9.018 9.507 9.423 9.932 10.284 10.446 12.070 11.282 10.768 9.339 10.230 10.693 9.647 10.745 10.397 9.500 9.068 10.788 11.506 11.167 10.384 9.856 9.660
+ 6.372 6.700 6.808 6.668 6.239 6.624 8.419 9.250 8.411 8.493 8.272 7.370 8.994 8.761 9.292 8.739 9.674 10.583 9.580 11.526 10.990 10.536 9.961 9.325 10.972 10.554 10.776 9.770 8.900 9.060 10.546 11.818 11.353 9.948 9.035 9.414
+ 5.577 6.258 5.770 7.014 8.489 7.979 10.065 10.962 9.452 8.344 8.173 8.629 8.640 7.795 8.930 8.940 10.001 10.714 11.137 11.413 11.051 10.744 9.651 10.385 9.083 10.742 11.849 10.424 9.519 10.440 11.205 11.731 10.847 9.907 9.647 8.847
+ 6.291 6.587 7.559 9.182 9.869 8.283 9.781 10.561 8.143 8.979 9.284 7.791 8.465 7.098 7.807 8.772 10.229 10.422 10.992 12.093 11.160 10.321 9.717 9.943 10.609 10.927 10.851 10.926 9.065 9.881 11.213 11.488 10.524 10.677 11.019 9.867
+ 4.453 6.859 7.731 8.351 8.294 7.929 9.872 10.675 8.799 9.849 8.894 8.132 7.670 7.999 6.500 8.745 9.989 11.701 11.536 12.350 11.784 10.890 10.303 10.508 11.517 11.659 11.372 10.988 9.738 9.981 10.723 11.190 10.165 10.116 10.365 9.367
+ 5.483 4.152 4.671 7.421 8.967 8.373 9.996 9.938 8.569 9.197 8.701 8.969 8.403 7.685 7.287 8.452 9.702 10.954 11.283 12.114 11.412 10.673 9.651 11.099 11.593 10.983 10.850 10.915 10.664 11.298 11.716 11.968 10.345 10.416 11.044 9.411
+ 5.891 6.357 5.747 7.593 7.694 8.540 9.168 8.061 9.344 10.300 9.510 9.288 7.863 9.123 8.320 9.058 9.927 9.688 11.579 11.460 11.583 9.891 10.194 10.487 10.090 9.901 11.293 10.138 10.384 11.593 12.316 11.774 11.460 10.433 10.829 10.244
+ 7.076 6.839 7.008 7.314 7.054 7.099 9.572 9.936 9.527 10.481 8.659 9.312 8.062 7.823 8.554 8.677 10.763 11.047 11.105 10.051 10.865 9.603 9.133 9.631 9.892 10.217 10.684 10.203 9.784 11.352 12.562 11.372 11.307 10.626 10.942 9.680
+ 4.983 6.107 7.948 7.585 7.198 8.441 10.140 9.186 9.207 10.170 7.574 8.392 8.782 8.082 8.303 7.810 10.432 11.228 12.432 12.148 11.770 10.089 9.222 10.588 9.581 10.339 11.727 11.279 10.634 10.556 11.542 11.188 11.229 10.530 11.363 10.633
+ 5.702 6.064 7.313 8.716 7.876 7.794 9.872 10.129 9.534 10.483 8.251 8.557 9.199 8.913 9.444 9.625 9.966 10.573 12.045 13.330 11.948 10.261 9.376 9.943 9.785 9.874 11.262 10.841 9.646 10.303 10.957 11.523 11.553 10.552 11.169 10.472
+ 8.880 8.830 8.931 8.137 7.250 9.356 10.172 10.486 10.692 11.154 10.073 9.778 9.034 9.860 9.116 9.726 10.358 11.773 12.283 12.384 11.442 10.090 10.577 10.335 10.778 10.905 10.682 10.643 10.374 11.230 13.040 12.598 11.923 11.398 10.979 9.323
+ 8.576 8.089 7.691 7.414 8.372 8.585 9.071 9.758 10.255 11.097 10.027 8.972 8.518 9.017 8.445 8.982 10.909 11.707 11.733 12.556 12.426 11.234 11.422 11.380 10.869 9.857 11.726 11.088 10.215 11.348 13.223 12.106 12.246 11.952 10.615 10.116
+ 4.126 5.241 7.651 9.138 8.438 9.106 10.855 9.831 9.679 10.299 7.719 8.306 7.588 8.186 8.721 9.115 10.155 10.547 12.306 13.948 13.858 11.762 9.929 9.991 10.749 10.740 10.796 10.084 9.708 11.744 12.519 11.991 12.442 12.780 11.058 10.475
+ 6.619 5.753 5.278 7.700 7.345 8.705 10.686 9.126 9.206 9.590 8.151 7.962 7.817 7.655 8.446 8.708 8.892 10.900 11.596 13.465 12.727 9.955 10.292 10.390 10.662 11.265 11.677 10.079 10.783 11.658 12.601 11.884 12.887 12.701 11.729 10.160
+ 6.376 6.665 6.032 6.417 7.802 9.513 11.321 9.747 8.683 9.129 7.737 7.495 7.038 7.631 8.696 8.684 9.060 10.740 11.931 12.230 12.367 11.120 10.137 9.980 10.437 10.795 11.547 9.902 9.620 10.310 12.103 11.251 11.380 11.266 10.918 9.514
+ 7.187 6.982 7.591 8.276 8.248 10.213 12.127 10.757 8.150 8.329 8.707 8.454 7.776 8.442 9.398 9.572 8.593 9.746 11.450 12.860 12.756 11.368 9.390 9.306 10.125 10.450 10.254 9.578 8.763 9.839 12.400 11.769 11.079 10.034 10.036 8.974
+ 6.822 6.602 5.969 6.429 7.264 10.941 12.375 10.489 7.699 6.722 7.367 8.279 8.376 7.982 8.277 9.490 10.608 10.026 11.016 13.160 12.585 11.247 9.558 9.852 9.189 9.173 10.900 10.149 8.865 8.381 10.530 10.810 11.416 10.609 10.099 8.903
+ 4.591 6.929 6.734 7.687 6.243 11.264 12.404 9.885 6.604 6.752 7.362 7.461 7.248 7.423 6.436 8.983 9.936 10.430 11.579 12.130 11.890 10.185 9.270 9.748 9.732 9.952 10.589 9.762 9.564 9.021 10.398 11.177 12.073 11.929 10.813 9.962
+ 5.804 7.936 7.687 7.404 7.904 11.325 12.444 10.139 7.756 6.336 7.027 7.748 6.217 6.570 6.328 8.783 9.701 9.676 10.482 12.769 12.582 10.531 9.713 10.152 9.319 10.101 9.600 8.930 9.502 9.819 11.088 11.222 11.412 11.680 10.828 9.710
+ 6.199 7.477 8.109 7.744 7.637 11.425 12.270 9.701 8.104 8.060 7.770 8.743 8.336 7.434 7.519 8.728 9.278 9.745 11.276 12.156 11.331 10.124 8.906 10.292 10.292 10.213 10.457 8.669 8.154 10.560 12.454 11.402 10.858 11.810 10.578 9.759
+ 5.362 7.239 8.335 8.699 7.694 10.958 11.697 9.737 6.905 7.130 7.451 7.648 7.251 8.168 6.602 7.134 8.914 9.894 10.514 12.761 12.004 10.031 8.489 9.395 9.490 8.916 8.967 8.887 8.506 10.224 12.319 11.457 11.412 11.286 10.217 9.939
+ 6.119 7.152 7.834 8.396 7.532 10.849 10.379 7.833 7.609 7.109 8.032 7.783 7.918 8.009 8.200 8.590 9.828 10.362 10.863 12.254 10.879 9.856 8.912 9.424 9.324 9.450 8.830 8.294 8.700 9.333 12.119 11.197 10.093 10.815 8.831 8.085
+ 9.716 7.949 7.974 6.779 8.106 10.888 10.661 8.609 9.153 7.786 6.894 6.957 8.562 7.892 9.424 10.496 9.611 10.160 10.777 11.787 10.880 9.157 8.079 8.126 9.403 9.838 9.374 8.935 9.112 9.890 10.878 10.572 10.479 10.642 9.522 8.520
+ 10.275 9.578 7.721 7.886 9.657 10.733 8.545 8.360 8.158 6.546 7.711 8.050 7.808 7.294 8.297 9.353 10.452 9.521 10.899 10.730 10.124 9.378 8.151 8.064 9.048 9.658 10.062 9.409 9.167 9.486 10.690 9.923 11.393 11.109 9.707 9.229
+ 7.776 6.872 6.490 7.685 9.414 10.867 9.783 8.921 6.752 5.404 7.626 7.878 5.856 7.393 7.735 8.912 8.510 10.007 11.192 11.792 10.587 10.005 8.451 7.877 8.062 7.778 8.961 9.159 7.195 10.028 11.419 9.447 10.520 10.715 10.066 9.662
+ 7.663 6.258 6.769 7.865 8.700 9.649 9.094 8.098 7.365 5.923 5.729 6.860 6.525 5.298 7.457 7.943 8.984 9.440 9.656 11.073 10.278 8.602 8.748 7.780 8.444 8.672 8.829 7.610 7.710 7.994 9.535 9.849 10.280 11.069 9.677 9.313
+ 8.443 7.539 8.071 8.932 8.052 8.894 8.789 8.097 6.419 6.393 7.126 7.770 7.813 6.706 6.901 7.680 8.544 9.634 11.248 12.011 11.323 9.399 8.137 7.851 8.740 8.802 9.194 7.734 7.102 8.940 9.706 9.127 9.780 11.416 9.785 9.410
+ 8.268 8.581 8.048 7.326 6.427 8.939 8.843 7.618 7.137 6.912 7.430 7.137 7.716 7.640 7.383 7.562 8.676 9.830 10.862 11.816 11.898 8.293 7.236 8.223 8.304 9.808 9.882 7.868 7.043 8.408 9.464 9.399 9.235 9.646 8.870 7.831
+ 9.208 9.687 9.064 7.064 7.050 8.526 7.392 8.230 8.192 6.967 5.702 6.947 6.939 6.951 7.065 7.763 8.823 8.673 9.742 10.599 10.342 8.879 7.552 7.152 8.320 9.358 8.689 8.261 8.375 8.120 9.146 9.096 9.417 8.834 7.871 7.531
+ 8.524 7.102 6.203 7.914 7.960 9.150 7.948 6.373 6.121 6.133 5.430 7.371 8.065 6.526 7.417 8.020 8.800 9.551 9.850 10.263 9.404 8.430 7.539 7.797 8.290 8.744 8.104 8.009 8.293 7.832 8.422 8.441 9.068 8.055 7.240 7.655
+ 7.922 7.831 7.426 7.463 8.399 9.288 7.703 4.765 5.818 6.596 6.005 6.264 6.653 5.746 6.998 7.254 6.899 7.924 9.769 11.450 10.347 7.867 6.709 7.238 7.511 8.063 7.635 6.908 7.038 6.982 7.224 6.894 7.531 6.716 6.602 7.518
+ 7.656 6.982 5.291 4.900 6.435 8.567 7.630 4.625 4.661 4.214 6.192 6.569 6.553 5.213 5.638 6.929 6.987 7.723 9.151 11.042 10.524 7.612 6.719 6.264 5.401 6.592 6.735 5.977 5.952 6.856 7.294 8.019 7.553 7.362 7.421 7.579
+ 11.429 11.743 11.913 12.304 12.508 12.631 12.613 12.444 11.953 11.277 10.659 10.086 9.572 9.030 8.837 8.473 8.443 8.621 8.989 10.065 9.281 8.757 9.012 9.137 8.782 8.298 6.835 6.501 5.951 7.052 6.938 6.878 7.316 7.766 7.153 6.779
+ 13.666 13.385 13.487 14.406 14.493 14.360 14.633 14.538 13.793 12.709 11.787 11.306 10.938 9.865 9.891 9.674 9.006 9.812 9.862 10.179 9.958 9.754 10.473 10.416 10.051 9.519 7.952 7.874 7.625 6.896 6.716 6.536 7.685 7.997 7.794 7.076
+ 9.849 8.650 9.802 11.486 12.117 13.540 13.566 12.949 11.458 10.675 9.797 9.922 8.359 7.621 6.239 4.905 6.581 7.036 7.709 7.250 7.048 6.123 6.615 6.795 6.546 7.560 5.915 5.355 5.226 5.996 5.693 5.129 6.020 6.798 6.660 5.495
+ 11.394 10.771 10.426 9.287 10.422 10.950 11.008 11.583 11.472 10.712 9.360 7.924 6.354 6.590 6.174 5.306 4.710 5.869 6.778 7.289 6.233 5.869 6.798 6.743 5.361 5.559 6.916 7.402 6.508 6.228 6.514 6.180 6.695 6.058 5.810 5.875
+ 10.942 10.254 10.178 8.776 10.589 11.058 9.974 9.541 8.968 8.559 8.707 7.133 7.449 6.351 5.506 4.961 4.628 4.587 5.110 6.550 6.034 6.799 5.694 6.137 5.104 5.708 6.799 6.649 6.073 6.225 5.822 6.095 6.368 6.373 5.580 5.872
+ 9.045 7.577 8.064 7.182 7.948 7.677 8.383 9.362 7.471 6.851 5.330 4.664 5.064 4.700 3.862 4.199 5.530 5.524 5.077 6.049 5.522 5.737 5.143 5.641 5.125 5.186 5.771 6.024 5.702 5.500 5.283 4.766 5.982 6.428 5.866 5.130
+ 8.229 7.153 7.771 7.442 7.221 7.094 6.151 6.497 6.868 5.736 5.044 6.113 5.773 5.478 5.150 4.919 5.493 5.108 5.122 5.165 5.418 4.788 5.524 4.878 3.546 3.603 5.247 5.140 4.421 4.528 5.283 5.468 4.271 5.237 4.534 3.574
+ 7.884 7.005 6.847 7.552 6.020 5.467 4.408 5.616 6.412 6.559 6.060 4.675 3.390 5.493 5.487 4.814 5.517 5.764 5.510 5.250 5.168 5.981 5.716 4.652 4.115 4.467 5.455 5.424 4.812 4.166 4.451 4.712 4.236 4.950 3.917 2.388
+ 8.191 8.286 7.322 7.791 7.505 5.677 6.798 6.705 5.604 5.369 5.643 4.316 4.357 5.806 5.717 5.134 4.656 5.838 5.531 4.629 5.484 6.703 6.049 4.892 4.973 4.461 4.750 4.678 4.141 4.313 5.000 5.275 5.122 5.690 3.871 2.715
+ 6.860 6.469 6.397 5.826 6.309 5.580 6.533 4.906 5.776 6.019 6.135 5.015 4.687 6.153 5.955 4.848 3.386 5.264 5.565 6.493 5.779 6.091 5.643 4.449 4.476 5.361 4.864 4.703 5.155 4.341 4.540 5.592 5.406 5.531 4.131 3.512
+ 7.222 5.914 4.939 6.194 5.814 6.848 6.706 5.605 5.123 5.304 4.965 5.483 4.246 4.675 5.346 3.890 4.175 5.240 4.889 5.971 6.554 5.671 5.376 5.332 4.864 5.019 4.491 5.103 5.065 4.324 5.147 4.990 5.074 4.959 4.139 3.165
+ 5.941 5.804 4.936 5.450 6.209 6.856 6.139 5.573 5.136 5.201 5.830 6.446 5.733 4.471 5.121 5.195 4.803 5.973 5.780 5.562 6.396 5.466 5.558 4.307 4.515 3.927 4.699 5.768 4.784 4.052 4.032 4.050 4.854 4.377 3.948 3.918
+ 8.061 7.753 6.569 6.324 8.497 8.028 7.276 8.546 7.471 5.231 6.266 6.706 5.475 4.902 4.552 4.905 5.651 6.643 6.221 5.581 6.414 5.209 4.809 5.501 5.199 3.897 4.410 4.906 4.408 4.247 4.715 4.559 4.306 4.423 4.277 4.427
+ 6.383 7.437 6.539 7.901 9.277 8.257 7.447 8.243 7.834 7.728 5.946 4.222 5.225 4.742 4.674 5.331 5.295 5.762 6.204 6.210 5.895 5.405 5.032 5.103 5.969 5.531 4.629 4.662 4.165 4.122 4.577 4.907 4.170 3.993 4.347 3.705
+ 7.436 7.770 7.329 7.092 8.055 8.152 7.904 7.612 6.996 7.163 5.174 5.906 6.135 5.702 5.146 5.250 5.714 6.368 6.811 6.469 6.446 5.561 5.305 4.903 5.621 4.403 5.131 5.163 4.018 3.504 5.318 5.514 5.314 4.270 4.234 3.585
+ 11.869 11.476 10.550 11.066 11.704 11.772 11.454 11.260 10.540 9.505 8.864 9.212 9.788 9.680 9.125 8.738 9.466 9.845 9.035 7.302 6.638 6.069 6.697 6.261 6.768 5.435 6.221 5.972 6.256 6.686 6.639 7.844 7.689 7.347 6.388 5.439
+ 12.017 11.536 10.704 10.507 10.505 10.512 9.571 9.466 9.205 9.063 7.971 6.800 7.542 7.887 7.735 7.843 7.946 7.945 7.212 5.916 5.418 6.207 6.601 6.637 6.994 6.620 5.560 6.450 6.441 5.590 5.233 6.620 6.558 6.324 6.118 4.725
+ 5.056 6.424 6.817 7.764 8.783 7.603 7.974 7.763 7.825 7.094 6.011 5.997 4.527 5.942 6.331 5.817 6.401 6.462 5.430 5.667 5.238 6.043 6.324 6.561 6.350 5.980 5.993 6.515 6.971 6.706 5.690 6.098 6.647 6.377 6.279 4.922
+ 5.621 6.136 7.189 9.323 8.530 8.667 9.137 8.272 7.491 7.786 7.013 6.911 6.736 6.648 5.538 7.520 7.657 8.033 6.903 6.253 7.700 7.046 7.351 8.204 7.230 7.411 7.386 8.243 8.075 7.621 7.464 7.775 7.732 7.928 7.491 6.626
+ 7.725 7.941 8.256 9.677 9.444 8.070 8.737 9.280 8.308 7.426 7.000 7.564 6.841 7.806 6.782 6.171 8.488 8.362 7.912 7.404 7.397 7.412 8.323 8.826 8.113 7.971 7.396 9.588 9.801 8.701 8.063 8.639 8.833 8.245 8.044 7.458
+ 7.771 7.686 7.334 7.544 8.371 8.463 9.938 9.387 8.076 7.655 6.820 6.491 6.089 7.285 7.708 8.159 7.187 7.898 7.721 7.407 7.921 6.752 7.860 8.659 7.686 8.032 7.297 7.192 7.143 7.462 7.933 8.440 8.220 7.413 7.647 6.852
+ 7.699 6.493 7.230 9.507 10.221 10.368 10.558 9.265 7.783 6.810 6.326 7.038 7.618 6.949 7.434 7.341 7.378 6.458 7.596 7.616 8.264 7.447 6.387 6.843 7.956 7.759 8.453 8.116 7.710 7.241 7.758 7.664 7.490 8.553 8.123 7.518
+ 9.292 9.922 10.834 11.274 11.234 11.427 10.883 10.946 8.971 7.684 7.595 7.306 7.760 7.059 7.255 7.780 7.517 7.277 8.232 8.007 8.045 7.508 8.530 8.222 9.036 8.427 8.802 9.547 8.829 9.257 9.219 9.569 8.638 8.933 8.103 8.668
+ 8.495 9.557 10.295 10.516 9.005 10.211 9.213 9.459 8.521 7.661 8.282 7.699 7.667 7.990 7.398 8.652 8.581 7.824 8.626 8.096 7.912 7.603 7.309 8.285 8.606 8.981 10.056 10.959 10.414 9.698 9.234 9.467 9.860 9.347 8.654 8.774
+ 11.003 10.591 9.731 10.609 11.482 10.081 8.987 9.357 9.161 9.424 8.229 7.300 6.889 7.931 8.259 9.125 9.029 9.913 9.158 8.876 7.235 7.307 8.004 7.760 9.348 9.768 7.973 9.442 9.576 9.237 10.051 8.387 8.833 9.593 9.674 8.513
+ 11.265 9.400 9.695 10.792 11.670 11.282 9.106 7.811 8.222 8.952 8.695 7.491 7.910 8.038 9.133 8.357 9.330 9.749 10.352 9.257 7.518 6.927 6.339 6.921 8.423 8.448 7.582 8.144 7.937 8.282 7.757 7.110 7.360 8.174 7.698 7.219
+ 9.762 7.931 9.450 10.641 10.331 9.543 7.244 7.747 7.794 7.439 7.281 6.623 7.311 8.393 7.683 7.460 9.227 9.095 8.261 6.903 6.144 5.393 6.446 7.502 7.607 6.184 5.556 6.602 6.027 5.087 5.954 6.632 6.247 6.961 5.568 5.119
+ 9.992 10.461 10.653 10.532 8.907 8.139 6.540 5.507 7.745 7.906 7.555 7.284 6.985 7.248 7.341 6.710 7.372 7.598 6.128 6.014 5.168 5.127 6.609 6.663 6.146 3.930 5.427 5.751 5.451 4.673 4.427 5.645 5.623 5.388 5.600 4.693
+ 8.203 7.507 6.678 6.611 6.146 4.622 4.266 4.110 4.494 4.898 4.269 4.259 4.622 4.657 5.095 4.954 4.681 6.201 5.251 5.359 5.387 4.474 5.361 5.811 5.400 4.461 5.039 5.350 4.669 4.482 4.556 4.698 5.083 5.328 5.794 4.621
+ 5.226 5.867 5.260 5.922 5.899 4.123 2.915 4.170 3.085 3.446 3.750 4.897 3.611 4.096 5.133 4.644 5.057 5.899 4.139 4.813 5.293 4.998 5.602 5.053 4.498 3.712 3.904 5.963 6.634 5.839 4.903 5.333 5.329 3.993 4.430 4.197
+ 5.543 5.965 5.404 5.512 5.272 4.645 4.228 4.574 3.891 4.504 4.538 5.809 4.556 4.459 4.428 4.512 5.295 4.890 4.952 5.112 4.970 4.995 5.808 5.307 5.546 4.412 4.177 5.574 5.958 5.603 4.582 4.925 4.965 4.337 4.485 3.972
+ 5.120 4.973 4.441 4.937 4.964 4.047 3.545 3.831 3.767 3.694 4.083 4.694 4.144 4.715 3.966 4.357 4.746 4.755 5.822 3.652 4.898 5.464 5.225 4.240 3.906 4.196 2.910 3.915 4.138 4.257 4.424 4.998 4.710 4.635 4.678 3.428
+ 7.556 6.849 6.489 6.359 5.461 5.854 5.410 4.861 5.122 4.522 4.642 4.920 4.107 4.884 4.701 3.658 4.134 5.401 5.208 4.253 5.426 5.291 4.188 5.238 5.116 5.009 3.881 4.618 4.396 3.967 3.848 4.045 3.377 3.764 2.753 2.029
+ 4.960 5.946 5.964 5.827 4.341 4.411 4.348 4.129 3.683 2.529 4.840 4.915 2.991 4.059 3.838 2.701 3.351 5.379 4.665 3.793 4.183 3.969 4.212 5.061 5.334 4.624 5.078 4.501 4.014 3.505 3.651 3.701 3.782 3.891 2.610 1.550
+ 5.629 6.937 6.036 4.175 3.616 4.737 5.130 3.516 2.019 2.100 4.207 5.214 4.408 3.756 3.959 3.610 3.646 4.393 4.467 4.484 3.888 3.992 3.902 3.284 4.506 4.413 4.815 4.270 3.806 3.206 3.441 4.074 4.283 4.270 3.262 2.162
+ 6.634 6.569 4.932 3.745 2.994 2.631 4.606 4.825 3.314 2.549 2.632 3.533 2.809 3.196 3.672 3.181 3.735 4.280 4.675 4.154 4.026 2.471 3.726 3.643 4.552 4.950 4.117 3.561 3.892 3.774 3.330 3.842 3.916 4.259 3.517 3.194
+ 5.922 5.401 5.543 4.947 3.267 4.751 4.720 3.029 3.457 4.521 4.834 3.573 2.588 3.914 4.525 2.993 4.450 4.302 3.756 3.880 4.296 3.189 3.891 4.175 4.561 3.340 2.963 3.444 4.152 3.218 3.776 4.306 4.817 3.736 2.409 2.617
+ 5.010 5.503 4.663 3.942 4.033 4.537 5.387 4.480 4.608 4.505 4.903 4.702 4.061 5.199 5.633 5.251 4.405 4.999 4.662 5.002 3.624 3.090 2.785 4.056 4.502 3.555 3.867 3.853 3.780 3.298 3.496 3.371 3.542 3.006 2.386 2.217
+ 4.294 4.947 5.145 3.709 3.669 4.999 4.383 4.159 4.061 3.861 3.920 4.481 5.045 5.391 5.372 5.328 4.285 3.829 4.425 5.267 4.272 4.313 4.313 4.189 4.269 3.651 4.340 4.326 4.269 4.242 3.599 3.829 3.939 3.081 3.131 2.032
+ 5.860 3.283 4.492 5.343 4.758 5.362 5.195 4.606 4.652 5.450 5.369 4.958 4.523 5.308 5.265 4.815 5.710 5.611 5.604 6.544 6.047 5.118 4.401 3.936 3.165 3.242 3.611 3.973 3.479 3.284 3.497 3.494 3.812 3.849 3.146 2.365
+ 6.226 6.163 5.800 4.682 5.344 6.714 6.350 5.190 5.038 6.086 6.380 5.473 5.143 4.524 5.530 4.666 5.798 6.001 7.222 6.882 6.479 5.003 4.790 5.033 4.040 3.611 3.865 4.468 3.678 4.149 4.956 4.636 3.864 4.230 3.937 2.703
+ 5.140 5.788 5.858 4.830 3.984 5.886 6.614 5.567 5.579 4.619 3.863 4.705 5.269 4.882 5.503 6.388 6.189 6.615 7.334 7.480 7.540 6.060 5.029 4.049 4.532 4.205 3.433 4.481 4.091 3.949 5.256 4.586 3.827 3.990 3.896 2.594
+ 5.534 4.934 4.464 4.234 4.927 6.442 5.936 6.141 5.637 3.989 4.463 5.546 5.515 5.543 4.254 6.211 5.814 5.994 7.573 7.936 7.227 5.619 5.338 4.765 4.328 5.298 4.244 3.852 3.888 4.267 4.733 4.298 4.323 5.016 3.789 4.054
+ 5.943 5.221 5.791 6.000 4.843 5.827 6.633 7.135 6.809 6.775 6.513 5.475 5.201 5.445 5.674 4.900 5.006 7.202 8.067 8.477 8.204 7.020 5.418 5.225 5.020 5.319 5.020 4.813 4.599 5.603 5.801 5.005 4.850 5.788 4.833 4.088
+ 6.612 6.714 6.335 6.948 5.540 6.272 6.701 5.345 6.515 6.364 5.441 5.124 5.533 6.266 6.470 4.729 6.554 7.587 8.808 9.041 8.810 7.738 6.118 5.709 5.079 6.180 4.927 4.751 4.302 5.680 6.493 4.867 5.069 5.631 5.447 4.732
+ 6.378 6.644 6.403 5.233 5.770 6.584 6.624 6.100 5.565 7.104 5.905 4.356 5.536 6.109 6.326 4.772 6.534 8.229 8.739 9.951 9.939 6.485 6.662 5.707 5.324 6.323 6.107 4.864 5.106 6.050 5.708 5.435 5.523 6.436 5.628 4.654
+ 5.928 5.175 5.067 5.347 5.805 5.326 6.868 7.113 5.057 6.324 6.598 6.279 5.606 5.667 5.950 6.359 7.061 7.515 7.925 9.411 8.836 7.661 6.539 5.956 5.607 4.942 5.448 5.840 6.286 6.811 6.763 5.700 5.639 5.946 5.369 4.983
+ 5.165 5.182 5.158 5.786 6.932 6.832 6.256 5.854 5.299 5.965 5.839 5.603 4.833 4.497 4.643 5.610 5.652 7.824 8.791 9.803 9.867 6.651 5.984 6.024 5.686 5.585 5.201 5.316 5.058 6.051 5.932 5.787 5.900 5.814 6.003 5.320
+ 5.172 4.971 3.718 4.628 5.082 6.524 6.405 6.603 5.218 5.131 4.293 4.871 4.834 5.780 6.377 6.651 6.350 7.556 8.734 10.434 10.663 8.384 6.514 6.302 5.848 5.095 5.093 5.832 6.290 6.055 5.885 5.627 5.836 6.729 6.310 5.385
+ 4.227 5.375 4.299 1.786 5.107 6.206 5.080 5.891 5.230 3.443 3.864 5.408 4.060 4.688 4.967 6.465 6.963 6.961 6.805 9.164 9.764 7.721 7.061 6.188 5.673 6.526 5.421 5.945 6.335 6.135 5.573 5.957 5.825 6.323 5.840 6.549
+ 4.333 5.376 5.405 5.093 4.090 4.856 5.250 5.604 4.748 3.299 4.209 4.996 5.051 5.861 5.472 6.009 7.274 7.590 7.108 8.813 10.191 7.629 6.324 6.071 6.009 5.887 4.840 6.440 6.879 6.795 6.393 6.327 5.775 7.045 6.922 6.425
+ 6.296 5.258 4.401 3.398 5.044 5.672 5.239 6.204 4.418 4.570 5.915 5.383 4.475 6.139 5.421 6.298 5.832 7.984 8.881 10.562 10.786 8.239 5.728 5.277 5.136 5.751 5.868 6.264 6.832 6.818 6.189 5.476 6.093 7.222 6.936 5.635
+ 6.281 4.798 3.175 4.071 5.567 5.937 5.077 5.684 4.436 6.368 5.899 4.860 5.642 6.000 6.488 6.584 5.649 6.529 8.769 11.272 10.132 8.222 7.018 5.805 6.443 6.360 5.537 6.748 7.029 6.664 6.658 5.210 5.273 6.255 6.283 5.972
+ 5.280 6.026 5.927 4.579 4.830 4.686 4.943 5.677 5.181 4.878 4.695 5.191 5.203 5.795 6.042 6.170 5.898 7.075 8.189 11.129 10.271 8.078 6.260 6.306 6.185 5.770 5.493 5.043 5.189 7.163 6.743 5.650 6.580 7.102 7.171 6.700
+ 5.316 5.843 5.775 3.688 3.614 3.181 3.847 6.386 6.497 5.899 5.880 5.489 5.080 5.481 6.172 5.812 7.893 8.552 8.610 9.569 9.477 8.497 7.192 5.323 6.410 6.369 6.488 5.900 7.441 8.269 7.597 5.930 5.852 6.142 6.654 5.426
+ 5.797 6.369 5.280 3.947 4.144 5.521 6.075 6.910 6.682 7.038 6.597 6.155 5.596 4.646 6.488 6.334 7.059 7.897 8.220 10.117 9.536 8.028 7.328 6.124 5.965 5.768 6.377 6.055 7.662 7.801 7.039 5.671 6.392 7.172 6.693 5.230
+ 5.353 5.416 4.583 4.549 5.134 5.115 4.525 4.267 5.417 5.001 5.732 5.204 5.299 6.170 6.359 6.628 7.830 8.267 8.756 9.687 9.247 6.550 5.403 6.974 6.727 7.104 6.013 6.529 7.527 6.805 6.397 5.247 5.997 6.461 6.755 5.452
+ 7.616 7.402 6.719 5.261 5.923 5.845 4.043 4.817 5.906 6.076 5.522 5.127 5.864 6.176 6.756 6.490 6.909 6.954 8.207 10.518 10.126 8.422 6.483 6.607 6.231 6.534 5.556 5.640 7.547 8.241 6.820 6.035 6.063 6.225 6.577 5.442
+ 6.127 5.720 5.278 6.334 6.418 4.703 6.455 6.407 5.309 6.089 5.394 5.026 5.882 5.701 6.149 6.986 7.921 7.974 8.469 10.747 9.447 7.301 6.571 5.854 5.952 6.170 6.013 5.993 7.041 7.901 6.383 5.989 5.918 6.836 7.209 5.877
+ 6.232 6.199 3.803 5.875 5.998 6.663 6.794 5.738 5.161 6.214 6.800 5.116 4.879 4.628 4.059 5.473 6.616 7.637 8.267 9.552 9.687 8.343 6.150 6.023 6.551 5.867 5.792 6.354 6.638 7.064 6.209 5.484 5.382 6.740 7.582 6.480
+ 6.268 7.000 6.098 6.228 6.325 6.655 6.447 5.676 3.805 5.406 5.899 5.581 3.905 4.475 4.034 5.499 6.469 6.196 7.502 10.888 10.477 7.511 5.675 5.844 6.344 6.752 6.011 5.767 6.465 6.601 4.612 4.942 5.785 6.141 6.077 4.940
+ 6.243 6.604 5.723 5.851 7.081 7.051 6.125 4.545 5.215 4.722 5.871 6.325 4.918 4.431 5.432 5.946 6.790 7.270 8.746 10.970 10.683 7.385 6.583 6.057 6.131 6.557 6.279 6.397 6.919 7.217 5.614 5.611 5.896 6.235 6.597 4.641
+ 5.620 6.519 5.777 5.540 5.568 5.770 5.446 6.965 6.608 6.537 6.452 4.288 3.779 5.096 4.948 5.496 7.282 7.706 9.565 10.263 9.075 7.856 6.761 5.750 6.015 6.090 6.165 6.169 7.125 7.153 5.482 6.160 6.459 6.494 6.276 4.844
+ 5.484 6.656 6.551 5.290 6.592 7.279 7.186 7.499 5.984 5.702 6.211 5.674 5.033 5.190 5.445 5.362 7.460 7.662 8.559 9.174 8.956 8.222 5.943 6.596 6.541 5.637 6.189 6.289 7.063 7.353 6.851 4.936 5.991 5.921 6.383 5.910
+ 10.275 10.292 9.544 8.193 8.397 8.005 8.461 8.408 7.084 4.887 3.792 3.796 4.054 5.745 5.746 5.792 6.798 8.458 8.818 9.010 9.219 8.188 6.561 5.462 4.878 4.864 5.582 5.651 7.101 7.423 6.319 5.629 5.278 5.663 6.153 4.861
+ 10.564 9.798 8.629 7.696 6.634 6.513 8.219 7.767 6.241 4.607 3.212 4.740 4.414 4.477 5.373 7.027 6.720 7.547 8.228 8.792 7.744 6.804 6.540 5.764 6.126 6.787 5.002 5.746 6.877 7.320 5.998 6.501 6.195 5.675 5.571 4.805
+ 6.697 6.655 6.653 7.502 6.440 4.576 6.195 7.649 7.070 4.765 5.310 5.010 5.228 5.461 4.946 4.491 5.369 7.129 8.889 10.067 10.424 8.458 7.001 6.096 5.969 6.930 6.115 5.569 7.102 6.673 5.552 5.498 4.967 5.943 5.957 5.507
+ 5.849 6.268 6.076 6.353 5.401 6.237 6.571 6.146 6.552 6.489 6.661 6.564 5.412 6.682 4.761 4.422 5.177 6.313 8.791 10.314 9.768 7.589 6.951 6.485 5.717 5.831 5.041 5.456 6.724 7.049 5.653 5.541 5.733 6.000 6.746 5.933
+ 4.348 4.642 5.662 6.534 6.115 6.184 5.639 5.713 6.055 6.426 6.616 5.924 5.558 6.255 4.628 4.587 6.405 6.121 7.642 9.155 8.900 7.226 6.316 6.892 6.141 5.596 5.619 6.154 6.312 6.739 6.811 5.782 5.232 6.023 6.896 5.032
+ 4.313 4.272 4.973 5.708 6.322 5.965 5.489 5.239 6.009 5.254 4.502 5.530 6.225 5.582 5.457 5.447 6.445 6.602 7.322 9.751 10.384 8.018 7.252 5.853 5.525 4.498 3.879 4.610 7.075 7.351 5.869 5.653 5.678 5.246 5.928 5.252
+ 3.825 4.976 5.110 5.786 5.325 5.913 7.068 6.196 6.558 5.477 4.243 5.941 6.326 5.607 5.121 5.856 6.642 6.983 8.874 9.957 10.105 7.319 5.697 5.628 5.680 5.263 4.964 5.058 5.527 6.670 6.112 6.019 5.747 5.419 5.830 5.042
+ 4.468 5.087 5.352 5.401 6.424 5.745 7.220 6.010 5.907 4.335 5.114 5.651 5.572 5.742 5.817 5.278 6.652 7.255 8.143 9.769 8.938 6.435 4.923 4.966 6.132 6.293 5.546 5.512 5.772 6.196 5.228 4.929 5.256 5.605 5.776 4.998
+ 4.007 5.083 5.556 5.679 5.054 6.407 6.902 6.854 6.199 5.843 5.514 5.132 4.588 5.087 6.229 5.218 5.781 6.516 8.424 8.721 7.580 6.830 6.020 5.675 5.218 5.379 5.330 5.679 5.781 6.384 5.473 4.889 5.392 5.290 5.559 4.324
+ 5.235 5.113 5.089 4.967 4.817 6.177 7.388 6.336 5.963 5.709 5.327 5.402 4.456 4.908 4.286 4.222 5.328 6.722 7.376 8.018 7.591 6.092 5.886 5.099 5.156 5.386 5.489 5.971 6.514 6.319 5.258 4.618 4.707 5.105 4.677 3.728
+ 3.442 4.732 5.335 5.567 5.431 6.306 6.872 5.822 4.643 6.318 5.693 6.133 6.408 5.678 4.506 5.096 4.257 6.593 6.879 7.142 6.323 5.324 4.930 5.739 6.012 6.162 5.772 4.775 6.122 6.462 5.802 5.496 5.021 5.500 4.821 4.066
+ 6.491 5.527 5.727 5.815 4.531 5.924 7.156 7.518 7.304 7.039 5.416 5.244 5.608 5.297 5.561 6.348 6.309 6.795 7.041 8.097 7.681 5.979 4.582 5.679 5.761 5.951 5.826 5.692 5.968 6.732 6.388 5.647 5.211 5.836 5.444 3.955
+ 6.204 6.510 6.514 6.245 5.772 5.253 5.084 6.668 6.151 6.418 5.560 5.848 4.805 5.231 4.862 5.752 6.149 5.894 7.144 8.564 6.157 5.921 5.623 4.969 5.151 5.855 5.810 6.170 5.297 6.861 5.716 5.331 5.572 5.245 5.324 4.063
+ 4.489 5.938 5.654 5.667 5.865 5.263 6.670 7.442 7.139 5.808 3.907 3.612 4.346 4.233 4.450 5.605 5.539 5.667 8.247 8.815 7.026 5.953 4.873 5.264 4.811 5.453 5.523 5.806 5.364 6.167 5.295 5.485 4.536 5.447 5.020 3.539
+ 6.556 5.410 5.876 5.145 5.805 5.857 4.873 3.500 3.192 3.314 4.677 4.452 4.533 4.325 4.222 4.900 5.552 6.076 7.808 8.621 6.478 6.390 5.062 5.563 4.675 4.685 5.194 6.239 6.461 6.033 4.679 4.809 5.427 5.297 4.395 4.082
+ 6.868 6.613 4.074 5.376 5.817 6.271 5.444 3.626 4.356 4.006 4.723 5.939 4.354 4.607 4.780 5.691 5.225 5.061 6.650 7.704 6.392 5.887 5.290 4.234 5.019 5.496 4.615 5.441 5.605 4.875 4.442 4.779 5.226 4.412 3.922 3.112
+ 7.023 6.829 5.953 6.136 5.977 3.727 4.048 5.974 6.284 5.630 5.163 5.575 5.002 4.435 4.684 5.059 5.157 4.868 6.723 6.586 6.013 4.870 5.355 4.215 4.152 4.894 5.149 4.289 4.338 3.827 4.102 4.870 4.560 4.424 3.028 2.433
+ 4.697 5.698 5.537 5.430 5.123 4.190 4.647 5.668 6.949 5.424 4.016 5.192 3.868 5.055 4.362 4.075 4.212 6.352 6.354 5.520 5.379 3.872 4.042 4.442 4.242 4.675 5.045 4.819 4.995 4.528 4.294 3.962 3.785 2.679 2.820 1.905
+ 5.055 6.749 7.035 6.352 5.563 5.529 6.833 7.719 7.424 5.462 4.068 3.730 3.637 4.718 3.422 3.832 4.902 6.953 6.629 6.605 5.508 4.506 4.763 5.775 5.232 4.066 4.211 4.661 5.098 4.113 3.291 4.879 5.085 3.589 3.634 3.228
+ 5.841 4.492 3.470 4.408 6.042 6.396 6.689 5.652 4.778 4.375 4.646 4.855 5.248 3.873 3.430 4.089 5.924 6.448 6.147 6.523 5.467 5.337 5.254 4.905 4.839 4.692 4.217 5.045 5.530 4.172 5.177 5.543 5.416 4.565 4.526 3.759
+ 6.313 6.547 6.306 7.089 7.372 6.082 5.917 6.029 5.333 4.960 4.797 5.997 5.718 3.927 5.118 5.205 5.617 5.931 5.274 4.871 4.614 4.604 5.679 6.074 5.361 5.286 5.755 5.791 5.902 6.007 6.299 6.274 5.887 5.824 5.534 4.567
+ 4.606 4.165 3.078 5.368 5.900 6.328 7.369 6.208 5.837 5.960 4.725 6.063 5.636 3.031 5.578 5.179 4.614 5.540 6.220 6.602 6.364 5.700 5.080 4.732 5.895 6.263 6.840 6.520 7.137 5.789 6.811 7.575 6.837 6.069 6.958 6.867
+ 6.107 5.319 5.440 5.708 5.739 7.095 7.523 6.143 5.697 5.449 3.856 4.494 5.350 5.592 5.487 4.964 5.006 4.661 4.863 5.350 5.933 5.144 6.204 5.223 5.830 5.958 6.884 6.495 6.634 7.314 7.288 6.960 6.185 5.741 6.149 5.438
+ 8.161 6.735 6.402 6.545 6.014 6.472 7.422 6.484 6.211 6.012 5.166 4.521 7.014 7.106 6.417 5.845 6.319 6.173 6.800 7.567 8.139 7.387 6.175 5.820 6.343 6.774 7.822 7.236 6.665 7.465 7.774 8.802 7.268 7.888 7.611 5.975
+ 9.320 8.190 8.325 7.901 7.761 7.627 7.354 7.857 7.887 7.845 7.726 7.153 6.667 7.767 7.495 7.609 8.229 7.122 6.921 8.157 7.375 7.437 7.070 6.240 7.029 7.476 7.074 7.464 7.357 7.923 8.155 9.160 8.234 8.643 7.985 7.163
+ 6.907 7.206 6.750 7.935 7.481 6.853 8.319 8.098 6.107 5.320 6.025 6.717 6.287 6.297 6.201 6.155 6.846 6.426 6.415 7.245 6.757 6.034 5.861 5.884 7.334 7.478 6.508 6.242 6.296 6.033 7.366 8.895 8.057 7.498 7.665 6.375
+ 5.906 6.972 6.337 6.589 7.732 6.875 5.958 7.115 6.540 4.246 3.522 4.362 4.472 5.046 4.983 4.252 4.310 5.668 5.865 6.165 5.372 6.656 5.983 5.383 6.261 6.275 6.390 7.701 6.911 7.419 7.333 7.627 7.511 6.834 6.767 5.590
+ 5.948 6.497 6.076 6.268 6.914 5.954 5.985 4.543 5.212 5.375 5.360 3.905 4.814 4.199 5.386 4.465 3.139 5.103 5.913 5.851 5.772 5.741 5.640 5.356 5.295 5.687 5.472 6.462 6.319 6.870 7.049 7.089 6.853 7.043 6.908 5.954
+ 6.138 4.438 4.667 6.529 7.543 7.042 7.443 6.887 6.168 6.194 5.983 6.284 5.546 5.352 4.890 5.225 5.404 6.656 6.395 5.397 5.453 6.618 5.856 5.342 6.059 6.139 6.358 6.519 6.597 6.078 6.810 7.464 7.484 7.736 7.010 5.782
+ 5.305 5.909 5.347 6.174 6.473 6.678 7.858 7.104 6.945 5.824 5.571 6.057 5.585 5.272 5.271 6.160 6.034 6.280 5.832 5.862 6.028 6.138 6.187 6.359 5.594 5.888 6.477 7.287 6.569 6.193 6.363 6.386 7.603 7.611 6.843 5.700
+ 6.737 7.619 7.945 6.973 6.541 7.523 6.661 6.222 5.688 6.256 6.199 6.820 4.961 6.391 5.867 4.741 5.409 5.567 5.161 5.610 6.385 5.537 5.840 5.141 4.341 5.641 6.333 7.402 6.745 6.876 7.138 7.776 9.092 9.176 8.238 5.842
+ 6.870 7.132 6.789 5.627 7.834 7.535 4.272 5.318 6.281 6.666 5.602 6.264 6.960 6.183 6.454 5.684 6.911 5.682 6.309 6.783 6.666 6.315 7.544 7.039 6.975 6.754 6.718 7.196 6.309 6.783 7.316 8.038 8.426 8.840 8.127 7.077
+ 7.856 6.823 6.277 7.422 8.033 8.231 8.062 6.513 8.534 8.522 7.175 7.500 7.192 7.558 7.921 7.473 8.032 7.334 7.691 7.294 6.896 6.649 7.615 8.026 8.174 7.936 7.325 7.346 7.762 7.375 6.950 7.154 7.264 7.545 8.659 8.247
+ 6.634 4.807 4.939 5.129 8.706 9.627 7.695 8.999 9.849 9.567 8.541 8.355 7.280 7.396 7.615 6.855 8.231 7.708 6.246 5.883 5.533 6.113 5.089 5.821 7.083 6.860 6.092 5.839 5.909 6.741 5.899 6.335 6.306 6.154 5.954 5.428
+ 6.011 6.038 6.669 7.363 9.233 9.977 7.013 10.389 11.315 9.057 8.681 9.026 6.765 6.942 6.812 8.725 8.573 10.267 9.152 6.894 6.009 5.799 4.466 5.364 7.392 7.781 5.992 5.608 6.095 7.321 6.951 6.258 6.378 6.806 6.230 5.505
+ 6.622 3.358 6.191 8.047 9.912 11.133 9.056 11.110 12.160 10.065 8.198 8.334 7.147 7.350 5.793 9.433 9.951 10.962 10.141 7.799 7.196 6.769 6.722 7.482 9.262 9.769 7.881 6.549 6.610 6.985 7.364 6.621 6.837 6.344 6.609 5.745
+ 6.084 5.240 5.059 5.913 10.687 12.131 10.258 10.403 12.192 10.767 7.216 6.927 6.217 8.621 8.735 9.461 10.910 9.396 8.936 8.369 8.864 8.940 8.103 8.540 10.492 9.364 8.376 7.663 7.486 8.566 8.698 6.546 7.045 7.158 7.440 6.945
+ 5.436 5.972 7.124 6.442 11.153 12.378 10.014 8.544 10.674 9.546 7.133 7.683 6.472 8.210 8.269 9.314 9.955 9.521 9.124 8.663 7.700 8.125 8.035 8.839 9.729 9.621 8.395 7.090 5.782 7.480 8.560 7.678 6.562 7.677 6.566 5.779
+ 6.556 7.172 6.476 7.416 11.067 12.175 10.063 8.537 9.645 7.463 7.316 7.265 5.912 6.386 5.891 8.191 8.758 10.467 10.171 7.750 7.156 7.316 6.110 8.574 8.871 9.507 7.087 6.393 5.033 6.383 7.976 7.578 7.650 8.389 7.225 5.272
+ 6.633 6.981 7.014 6.234 9.760 10.742 8.704 8.617 9.733 7.623 7.096 7.683 5.827 5.784 4.841 6.484 7.403 9.542 8.233 7.665 7.074 7.007 7.164 7.815 8.334 8.091 6.092 5.879 5.165 5.791 6.784 6.909 6.891 7.281 6.400 4.602
+ 7.036 7.899 7.463 5.693 8.960 9.219 6.773 6.589 9.085 8.206 6.530 7.344 5.154 5.229 5.616 5.845 6.652 8.016 7.277 6.879 6.563 6.899 5.350 6.627 7.554 6.946 5.625 5.305 5.354 6.129 6.625 6.619 6.253 6.316 6.079 5.281
+ 7.579 7.358 5.001 4.273 6.297 6.770 5.783 6.273 8.859 7.591 4.951 5.090 4.532 5.475 5.196 6.341 6.893 8.126 8.271 5.556 6.418 6.708 5.500 6.703 7.635 6.546 5.712 4.380 4.712 6.479 6.330 5.413 5.811 6.827 6.334 4.796
+ 6.804 7.463 5.340 5.781 7.593 7.390 4.799 6.886 9.109 7.806 5.848 5.674 4.377 5.221 5.712 5.480 6.522 6.929 6.981 5.684 5.141 6.178 6.712 6.469 7.379 6.163 4.724 5.194 4.840 5.159 5.640 5.392 5.384 6.096 5.043 4.643
+ 5.836 7.078 6.609 5.585 7.374 7.922 6.029 7.790 8.878 7.351 6.044 5.406 5.080 5.260 5.110 5.354 6.243 6.195 6.426 5.002 5.525 6.270 6.486 7.307 6.674 6.984 5.819 5.750 5.546 5.174 6.243 5.120 5.501 5.658 5.230 4.984
+ 5.995 6.426 6.499 6.198 5.394 7.786 7.006 6.640 6.574 5.446 5.358 5.959 5.758 5.732 5.124 4.780 5.404 7.232 6.886 4.978 5.318 6.719 6.224 6.564 7.540 7.931 6.923 5.661 4.680 4.914 6.346 5.742 5.577 6.547 5.576 5.097
+ 1.838 5.180 5.975 5.906 7.567 7.613 6.828 6.655 7.792 6.274 5.220 6.579 5.034 4.353 4.588 4.436 5.218 7.240 6.788 5.733 5.852 6.223 5.812 7.566 7.519 8.670 8.259 7.170 5.266 4.760 5.347 6.104 5.672 5.826 5.926 4.517
+ 5.940 6.287 5.516 4.456 6.049 4.822 4.612 5.279 7.297 6.241 4.923 4.825 4.876 5.176 4.768 4.898 5.868 5.961 5.657 5.526 4.799 4.770 6.168 7.569 7.270 8.064 8.280 7.243 5.818 6.468 6.409 5.514 5.401 6.791 6.692 5.271
+ 4.992 5.270 5.844 4.517 5.885 7.697 8.411 7.816 6.573 5.399 4.888 5.076 4.818 5.357 5.289 4.571 4.205 4.805 5.241 5.641 6.016 6.077 7.080 7.571 7.853 8.342 7.471 6.325 5.760 6.632 5.964 5.644 6.271 7.092 7.065 6.122
+ 5.971 6.959 7.115 5.902 6.991 9.835 10.716 8.455 6.904 7.236 5.713 4.813 5.446 5.312 5.103 4.482 4.675 5.759 5.635 6.407 5.363 5.984 8.371 8.966 8.756 8.649 9.396 8.542 7.282 6.228 6.016 6.475 6.345 7.686 7.025 5.545
+ 4.681 6.154 7.203 6.462 8.696 11.385 11.167 7.915 7.869 8.735 6.606 6.050 6.586 5.828 5.287 4.551 4.438 5.555 6.453 6.580 6.723 6.724 7.794 10.012 9.722 9.495 9.606 9.145 7.523 6.685 7.166 7.617 7.415 8.412 7.522 5.839
+ 3.807 4.640 4.978 2.408 10.476 12.227 10.386 6.954 7.907 8.420 5.324 6.318 6.095 5.831 6.745 4.747 6.064 5.717 6.858 7.080 7.618 8.740 9.749 10.204 9.601 10.113 11.044 10.649 8.363 7.905 7.625 8.279 7.948 8.558 7.831 5.859
+ 5.518 6.274 5.224 4.917 11.330 13.128 11.502 5.855 7.368 7.477 5.952 5.765 5.180 6.776 7.223 4.591 5.476 6.210 6.390 7.184 7.572 9.771 10.655 11.000 10.853 9.740 11.735 11.216 8.704 7.656 7.808 8.371 7.511 9.449 7.733 6.007
+ 6.485 7.616 6.202 4.926 11.995 13.566 11.651 5.145 6.173 5.758 5.335 5.930 4.340 6.350 6.971 5.291 6.034 6.189 6.334 7.816 7.628 9.520 11.491 11.358 10.780 10.797 11.794 11.265 9.030 7.265 8.215 8.120 7.370 10.274 8.249 5.687
+ 5.688 7.242 6.281 5.216 12.401 13.706 11.430 5.031 6.857 6.494 5.448 5.198 3.708 7.176 7.377 6.796 7.513 7.938 7.604 7.747 7.501 9.271 11.500 10.884 10.151 11.821 11.385 11.019 9.004 7.102 8.166 9.020 8.480 10.415 8.923 5.830
+ 5.554 6.685 5.392 6.872 12.547 13.583 11.062 5.046 7.073 6.778 5.027 5.437 4.807 6.584 6.786 6.049 6.546 6.760 6.737 7.123 7.382 8.800 9.975 9.688 9.784 11.040 11.196 10.793 8.903 8.311 7.495 8.650 8.970 10.246 7.890 5.205
+ 6.426 6.592 5.661 6.156 11.998 13.193 10.912 6.278 7.373 7.420 5.834 6.083 4.586 6.299 6.356 5.254 5.353 5.102 5.688 5.972 6.312 9.088 10.623 9.373 9.085 9.524 10.664 10.460 8.153 7.217 6.012 7.447 8.026 8.505 8.412 5.186
+ 9.791 9.677 9.635 9.280 11.242 12.430 10.097 6.144 7.402 7.239 5.400 6.036 5.111 5.869 5.743 4.617 4.807 5.454 5.857 5.125 6.276 8.658 9.298 8.552 8.945 8.217 9.590 9.172 7.437 5.533 6.246 6.736 8.159 7.707 7.769 5.601
+ 12.227 10.855 11.068 11.582 10.493 11.101 9.995 8.365 7.648 7.097 5.607 5.964 5.365 5.246 5.753 5.332 5.018 6.565 5.889 5.435 6.754 8.018 6.564 7.525 7.854 7.595 8.703 7.959 6.138 5.972 5.972 6.448 7.790 7.420 7.123 4.469
+ 10.688 10.300 9.333 9.180 9.404 10.058 7.983 5.515 6.007 5.321 5.610 5.077 3.693 5.018 5.245 4.681 3.793 4.663 4.746 4.993 6.041 7.840 7.912 7.820 6.983 7.880 7.738 7.398 6.195 6.320 6.779 6.857 7.870 7.742 6.574 5.169
+ 7.038 7.867 9.162 8.917 8.810 9.351 7.386 4.996 5.532 5.087 6.237 6.348 5.685 5.549 4.671 4.920 3.586 4.232 4.807 6.409 6.806 6.880 8.213 7.729 6.916 7.153 8.141 7.780 5.568 6.057 6.367 6.672 7.116 7.618 6.600 4.945
+ 8.905 9.062 8.894 8.022 7.938 8.301 6.556 5.246 5.555 6.472 6.773 5.917 6.142 6.362 4.911 4.534 4.861 5.672 5.116 5.285 5.190 6.469 8.569 7.063 6.526 6.023 8.314 7.907 5.758 4.715 5.829 6.052 6.473 6.994 5.662 5.454
+ 7.700 8.324 9.248 8.782 9.216 8.441 8.089 8.165 7.666 6.934 6.526 6.514 6.807 7.109 5.996 5.926 7.126 6.476 5.953 6.281 6.669 6.363 7.898 6.812 7.079 7.715 8.004 7.323 6.958 6.991 7.668 6.668 7.183 7.004 6.783 6.941
+ 12.499 13.205 13.728 13.770 13.350 12.380 11.579 11.675 11.371 10.397 9.500 9.881 9.676 8.959 8.363 8.023 7.923 7.759 7.408 6.716 7.249 7.452 7.650 7.577 7.772 7.331 7.153 6.504 6.893 7.283 7.767 7.568 7.665 7.220 7.135 6.425
+ 11.827 11.464 12.127 12.493 11.508 9.760 8.602 9.450 9.339 8.249 6.661 8.606 8.363 6.628 6.435 6.482 6.513 5.674 5.430 6.337 6.729 6.894 7.481 6.517 6.434 6.040 7.813 6.956 6.576 6.680 6.460 6.534 6.959 7.240 6.872 6.015
+ 7.909 9.279 9.812 9.539 9.287 8.713 9.217 9.419 9.234 8.208 9.124 8.520 7.106 6.376 7.006 6.107 5.372 6.143 5.782 6.026 6.124 5.994 5.533 6.669 6.865 5.829 8.252 7.805 6.282 6.882 7.081 6.863 7.744 8.086 7.240 6.637
+ 8.715 7.106 8.481 7.567 7.784 7.154 7.097 7.648 7.369 6.552 8.054 7.800 7.494 5.905 5.602 7.027 7.253 6.906 7.263 6.455 6.771 6.872 6.673 7.393 7.226 5.891 8.629 7.948 6.803 7.290 7.171 7.810 8.074 7.926 7.502 6.886
+ 9.404 9.813 8.558 8.790 9.457 10.609 9.444 8.241 8.087 6.429 6.068 7.534 6.857 5.586 6.744 5.727 6.957 7.770 8.037 7.432 7.263 7.467 6.922 6.315 6.909 6.833 9.765 9.125 5.858 5.989 6.034 7.321 7.396 7.414 6.198 4.986
+ 9.210 9.696 9.670 9.464 11.662 12.708 10.844 7.924 7.435 7.252 8.088 7.571 7.190 6.410 5.596 6.616 6.886 8.564 8.070 8.197 7.100 7.251 6.735 6.947 7.846 8.409 10.303 9.402 6.445 5.753 6.195 7.894 7.181 7.485 5.854 5.294
+ 10.393 10.190 9.777 9.665 11.413 13.086 11.240 8.831 8.994 7.485 7.199 8.493 7.847 6.970 7.036 8.403 7.722 10.653 10.031 7.986 6.947 7.144 7.131 6.465 6.978 8.928 8.620 7.637 6.758 7.191 6.757 7.722 7.563 7.706 5.433 5.060
+ 9.640 9.532 9.151 10.097 12.331 12.891 10.221 8.023 8.422 7.825 8.416 9.396 7.641 7.226 7.798 7.254 7.869 11.100 9.963 6.686 6.444 6.602 7.312 7.227 6.890 7.523 8.288 8.680 7.772 6.428 6.868 7.772 8.209 8.248 6.182 5.805
+ 10.128 11.055 11.228 10.554 12.114 12.324 9.874 8.878 8.051 8.482 7.573 9.079 7.727 7.619 8.008 8.480 7.536 10.315 8.983 7.406 6.479 6.182 6.012 6.561 6.509 6.805 8.239 7.583 7.481 5.716 5.388 7.319 7.673 6.796 6.325 5.521
+ 8.679 9.232 8.946 10.296 10.222 10.291 8.974 9.280 8.215 7.129 7.249 7.702 7.354 5.780 6.248 6.629 6.643 8.689 8.530 8.026 6.382 6.595 6.095 6.230 6.163 6.334 7.654 6.793 5.969 6.178 4.549 5.438 6.096 6.289 5.278 4.378
+ 8.330 9.408 8.939 9.209 8.885 9.139 9.465 8.083 7.993 7.420 5.985 7.021 6.346 6.001 6.034 6.865 6.486 7.355 7.091 7.074 6.081 5.963 6.384 6.925 5.993 6.471 7.448 5.871 5.798 6.208 5.916 5.784 6.635 6.554 5.531 3.953
+ 6.987 9.705 10.485 9.404 8.537 9.351 8.287 7.127 8.160 7.170 7.302 7.347 5.919 6.326 7.466 7.448 6.249 6.360 6.676 6.502 5.520 4.945 6.068 6.334 6.510 5.488 5.727 5.579 5.174 5.219 5.478 5.780 5.278 5.474 4.954 4.472
+ 9.531 10.444 9.482 8.722 8.059 9.170 7.575 6.375 6.905 7.641 8.552 7.591 7.052 7.600 7.187 7.270 6.387 7.363 6.734 6.636 6.162 5.569 6.822 5.745 6.516 6.334 5.670 5.427 5.271 5.276 4.713 5.023 5.251 5.186 5.135 3.978
+ 8.373 11.319 11.347 10.250 10.538 9.871 7.802 7.362 7.282 8.358 8.366 6.386 6.526 5.302 4.445 6.101 6.264 5.949 6.659 6.488 7.064 5.146 4.856 6.320 6.273 5.251 6.045 5.697 5.791 4.377 4.309 5.143 5.350 5.822 5.445 4.554
+ 10.949 11.753 11.721 11.075 9.667 9.028 9.308 7.661 7.398 7.917 8.204 6.090 6.762 6.161 4.972 4.655 5.564 6.222 5.803 5.720 5.725 5.598 5.724 6.681 6.170 5.015 5.573 5.264 5.241 4.474 3.419 4.345 5.073 5.447 5.176 3.886
+ 9.203 8.138 8.207 8.296 8.603 10.144 9.759 8.017 7.489 6.771 7.331 6.624 6.182 6.109 6.982 6.323 6.700 6.741 6.129 7.327 8.232 6.262 6.229 6.561 6.583 6.809 7.765 7.081 5.937 5.353 5.333 4.763 5.647 5.646 4.682 3.950
+ 9.845 8.652 8.413 8.032 10.029 12.360 12.145 9.000 7.733 7.478 7.892 7.398 7.316 8.340 7.633 6.592 6.949 7.000 7.406 7.992 9.640 8.822 7.139 7.169 7.441 8.861 10.194 9.479 6.846 6.404 6.538 7.244 7.733 6.297 6.004 4.858
+ 7.905 8.489 8.554 5.562 7.547 12.461 13.367 10.674 8.131 9.835 9.168 6.840 8.741 7.641 5.970 5.790 6.867 8.367 7.467 9.678 9.890 9.541 8.414 8.288 8.648 9.757 11.638 11.482 7.389 6.981 7.478 8.221 9.327 7.350 6.844 3.698
+ 7.065 7.566 8.704 8.242 8.184 12.721 14.000 11.762 6.921 9.336 8.570 5.201 8.692 8.778 6.279 6.803 5.816 9.715 8.828 10.559 10.202 11.191 9.497 9.482 8.625 10.498 11.312 11.266 8.422 6.613 7.122 8.267 9.243 8.596 7.457 4.665
+ 7.358 7.942 7.231 7.890 8.555 12.804 14.389 12.452 6.518 8.669 8.734 5.331 8.234 8.647 6.077 6.135 5.423 9.981 9.479 11.454 11.534 12.059 10.448 9.653 8.755 9.525 11.126 10.356 8.954 7.672 7.378 8.933 9.199 8.798 8.172 4.882
+ 6.289 7.355 7.741 8.107 9.602 12.362 14.319 12.971 6.680 8.226 8.781 5.576 7.946 8.014 6.505 6.886 6.979 7.964 8.581 11.084 12.300 10.337 9.279 9.622 8.851 10.608 12.156 11.664 9.572 8.565 7.211 8.641 9.179 9.569 8.163 5.645
+ 7.378 7.663 7.181 7.778 8.297 11.278 13.443 12.767 9.017 7.989 9.491 7.945 7.650 8.042 6.239 6.506 7.641 6.842 8.922 10.093 11.367 10.150 8.457 9.348 9.127 9.718 11.842 11.702 8.656 8.411 7.831 8.679 9.018 9.280 8.318 6.004
+ 7.089 7.180 8.733 8.585 6.759 10.549 12.187 12.053 9.970 8.061 9.489 7.632 6.731 7.995 8.268 6.652 6.829 6.999 8.399 9.723 10.812 10.358 8.423 8.820 7.859 8.776 10.394 9.876 7.816 7.470 7.535 8.018 8.872 9.342 8.769 6.475
+ 6.908 8.710 9.365 7.863 6.440 10.491 12.633 12.387 9.173 6.511 8.347 6.977 6.327 6.975 6.221 5.076 6.192 6.769 8.683 9.887 9.074 9.318 8.296 9.160 7.388 8.286 9.121 9.297 8.166 7.315 6.921 7.634 8.631 9.169 8.460 6.238
+ 9.610 9.595 9.485 9.888 9.490 10.390 11.723 11.727 9.949 8.411 7.994 8.221 8.350 8.500 8.184 7.409 7.376 7.321 7.817 8.902 8.926 9.035 7.143 8.077 7.650 7.895 8.544 9.253 8.154 6.110 6.671 7.066 8.369 7.418 6.971 5.804
+ 8.594 9.013 9.395 10.453 10.044 10.817 12.052 11.240 8.482 7.105 7.898 7.526 7.587 7.456 6.549 6.564 6.279 6.834 7.801 8.791 8.919 7.898 6.388 7.046 6.742 7.048 8.636 7.683 7.088 5.924 6.362 6.815 7.933 7.448 6.874 5.978
+ 9.405 9.423 10.008 10.403 9.855 9.547 9.650 7.968 7.383 7.415 8.054 8.323 7.634 6.842 6.067 6.438 6.063 5.900 7.422 7.837 8.236 7.560 6.575 7.596 7.125 6.481 7.634 7.856 6.010 6.105 7.186 6.784 8.353 7.966 6.995 5.978
+ 8.992 8.642 9.563 10.297 9.650 9.755 11.000 9.138 8.022 7.282 7.178 7.097 5.934 5.509 6.175 4.835 5.360 6.064 6.568 6.908 7.745 7.353 7.404 7.523 7.096 7.033 7.303 7.676 6.907 6.619 6.690 6.804 6.897 6.764 7.003 5.941
+ 8.082 9.470 8.533 8.135 9.551 9.850 10.368 9.991 7.614 6.600 6.191 6.962 5.971 6.878 5.743 4.243 4.493 6.863 7.549 7.551 7.814 7.791 6.011 5.246 5.723 7.270 8.288 7.483 6.680 6.470 6.834 7.015 7.752 7.144 7.306 6.559
+ 10.290 10.349 9.820 8.687 8.244 9.503 9.673 8.931 7.650 7.720 7.540 7.067 6.888 6.793 6.207 4.657 5.282 5.890 6.303 8.079 7.401 7.471 6.112 5.773 6.409 7.174 7.759 7.822 6.891 6.575 7.629 7.591 8.025 7.157 7.158 7.350
+ 10.810 11.725 11.818 10.340 10.058 9.419 9.983 8.282 8.160 8.385 7.634 9.096 8.785 8.642 8.649 8.006 8.531 8.458 8.748 9.577 9.346 8.821 8.469 8.858 7.811 8.445 8.807 8.252 6.205 5.967 7.131 7.172 7.715 7.371 7.525 7.123
+ 11.923 12.071 11.710 11.232 10.946 9.295 9.794 8.639 8.266 9.592 9.985 10.169 9.909 10.071 9.141 8.276 8.802 9.068 9.292 9.968 9.792 8.585 8.485 8.588 8.251 8.707 9.490 8.765 6.806 6.495 6.484 7.651 8.154 8.037 8.237 7.697
+ 9.778 9.524 10.004 9.895 9.653 8.896 10.359 10.100 8.833 7.475 7.464 7.828 8.447 7.679 5.755 5.852 5.266 5.983 6.778 6.377 6.422 6.312 7.251 7.715 7.744 6.638 5.921 6.403 6.797 6.705 7.140 8.033 7.839 8.081 8.183 7.043
+ 10.318 10.487 10.634 10.111 9.673 8.555 8.965 8.128 7.876 8.239 8.101 8.899 8.101 6.851 6.403 6.232 5.250 5.680 5.776 6.229 6.704 7.338 7.212 7.240 7.237 6.945 7.312 7.612 7.360 6.076 7.358 7.826 8.362 8.994 9.012 7.478
+ 8.698 9.261 9.209 9.497 7.709 7.883 8.940 9.172 7.357 6.352 7.004 7.062 6.986 7.414 6.092 5.874 6.219 5.861 7.672 7.994 6.538 6.988 6.722 7.377 7.479 7.606 8.510 6.647 6.316 6.698 7.489 7.940 8.452 7.943 8.197 7.161
+ 9.048 9.011 8.505 8.849 8.262 7.104 8.037 8.018 6.943 7.191 7.446 6.879 6.465 7.751 6.784 6.417 5.805 6.453 6.594 7.242 5.641 6.989 6.970 6.074 6.009 6.002 7.116 6.917 6.834 7.397 7.911 8.166 8.158 7.688 8.789 8.652
+ 8.484 8.227 8.678 9.251 9.522 8.878 7.542 6.716 6.815 7.213 5.288 6.690 6.545 6.699 6.051 7.325 6.646 7.067 6.798 7.975 6.190 6.558 7.569 6.888 6.753 6.939 7.421 6.426 6.371 6.725 7.538 7.851 8.098 7.765 8.887 9.896
+ 7.556 7.473 8.128 8.027 7.670 7.688 6.579 6.761 7.604 6.909 6.675 5.898 6.195 4.765 5.607 5.572 5.480 7.136 7.445 8.145 8.541 8.276 7.667 7.016 7.321 7.262 7.077 6.696 6.757 6.800 7.230 7.719 8.161 7.673 7.668 8.239
+ 10.743 11.279 11.920 10.359 11.081 10.470 10.679 10.002 10.777 9.877 10.397 9.458 9.287 6.958 7.477 7.707 8.553 10.071 9.453 10.412 11.710 11.972 11.611 9.505 9.896 10.011 10.882 11.036 9.188 8.139 7.322 7.679 7.356 9.425 10.600 9.673
+ 12.470 13.487 12.790 11.869 11.851 11.532 10.782 9.883 11.442 11.721 11.467 11.568 11.061 8.694 9.098 9.648 9.926 11.011 10.647 11.232 11.854 11.378 11.308 10.301 9.736 9.890 10.370 10.699 9.752 7.187 6.963 7.102 7.794 9.099 10.052 9.881
+ 13.328 14.187 12.672 12.433 13.013 12.738 10.748 9.948 10.847 12.723 12.834 12.088 11.332 9.206 9.220 10.111 10.084 10.908 10.440 10.880 11.896 12.047 11.276 9.498 8.060 7.402 7.490 6.909 7.117 6.726 6.161 6.759 7.802 8.827 9.290 6.629
+ 13.833 14.510 13.064 12.956 13.385 12.672 11.371 9.755 11.346 13.438 13.138 12.361 11.768 9.080 9.193 10.117 10.378 10.976 10.932 12.006 13.055 12.839 11.399 9.520 7.996 6.321 7.015 7.358 7.951 8.094 6.891 8.318 8.814 9.166 8.059 6.619
+ 14.207 14.746 13.234 13.825 13.315 13.745 13.726 13.222 13.563 13.634 13.409 13.066 12.437 11.606 10.569 11.190 12.054 11.652 11.551 12.985 13.778 12.751 11.237 9.946 9.505 9.316 8.697 8.599 9.349 9.287 9.167 9.448 9.134 8.592 8.953 8.291
+ 15.084 15.541 14.295 14.548 15.953 16.205 16.590 15.543 15.413 16.274 15.415 14.796 13.634 13.695 13.067 13.171 13.564 13.132 12.797 14.555 14.363 12.819 11.025 9.977 9.892 9.581 9.043 8.865 9.560 9.513 9.513 9.800 9.150 8.969 9.626 8.782
+ 14.895 15.547 13.914 14.037 16.582 17.781 18.870 17.666 16.198 16.987 17.591 17.685 16.613 15.040 13.341 13.195 12.941 13.098 14.193 15.218 12.860 11.204 9.732 9.426 8.868 7.661 6.848 7.569 8.558 8.073 7.618 9.175 8.594 7.075 7.005 6.422
+ 15.719 16.227 15.542 16.069 16.859 18.126 19.754 18.606 16.842 17.687 18.177 18.647 18.139 15.797 13.528 13.839 13.799 14.650 15.749 15.687 13.329 11.558 10.100 8.809 7.704 7.265 6.993 7.673 8.962 10.015 10.039 11.172 10.234 7.509 6.690 6.300
+ 16.108 16.356 15.801 16.118 16.572 18.580 19.805 18.358 17.873 18.309 18.187 18.692 18.506 16.180 14.036 14.395 14.460 15.890 16.134 14.493 12.585 11.103 9.349 8.604 8.012 6.999 6.689 6.742 8.587 10.288 9.745 10.312 9.250 6.580 6.299 5.789
+ 16.184 16.383 16.034 16.136 16.452 18.629 19.461 18.365 18.256 18.212 17.369 18.538 18.329 17.094 15.143 15.044 15.390 16.769 15.970 14.025 11.925 10.239 9.050 8.872 8.456 7.556 7.427 7.570 9.204 11.148 11.184 10.905 8.534 7.287 7.112 6.984
+ 16.292 16.405 16.212 16.228 16.674 18.785 19.372 18.532 18.356 18.041 16.933 17.989 18.912 18.239 15.819 15.775 16.073 17.363 15.893 14.488 12.690 11.389 10.124 9.380 9.222 8.466 8.359 8.154 8.859 10.794 11.055 11.839 10.308 7.946 7.903 7.686
+ 16.182 16.372 16.324 16.238 16.790 18.934 19.368 18.628 18.363 17.895 16.879 16.442 19.109 18.915 16.950 16.652 16.726 18.012 16.570 14.814 12.887 11.404 10.272 9.234 8.964 6.949 7.025 7.073 7.872 9.544 9.858 11.395 10.027 6.667 6.398 5.427
+ 16.102 16.248 16.290 16.165 16.698 18.945 19.230 18.295 18.004 17.647 16.634 15.218 18.248 18.063 18.171 16.729 16.334 17.776 16.785 14.783 12.924 11.350 10.179 9.199 8.943 8.197 7.916 7.726 8.240 9.434 9.479 11.410 10.925 7.856 7.602 6.806
+ 15.933 16.114 16.142 16.128 16.905 18.806 18.736 17.551 17.288 16.994 15.742 14.912 16.682 17.216 18.201 18.144 16.806 17.869 17.332 15.489 13.260 11.903 10.416 9.329 9.035 8.509 8.708 8.432 8.825 10.144 10.070 10.403 9.972 8.741 7.587 7.321
+ 15.794 15.868 15.671 16.042 16.879 18.125 17.861 15.715 15.986 15.938 14.376 14.029 15.191 15.078 18.151 17.912 17.567 17.889 17.889 15.774 12.951 11.510 9.506 9.044 8.128 8.222 9.450 9.387 8.951 11.164 9.905 8.684 8.965 7.991 6.527 5.962
+ 14.950 14.988 14.026 15.756 16.797 16.286 15.524 14.404 14.295 14.059 12.545 13.226 12.816 13.902 15.571 16.949 17.243 17.226 17.719 16.553 12.967 11.395 9.271 8.174 7.668 8.358 9.284 9.298 9.503 11.698 9.682 8.874 8.645 8.502 9.053 7.333
+ 13.955 13.461 13.833 14.473 15.049 13.013 13.346 13.326 12.771 12.771 11.692 11.430 11.624 11.828 12.652 14.009 16.630 16.561 16.668 15.747 12.317 10.270 8.763 8.466 7.420 8.071 8.992 9.078 9.314 11.138 8.704 8.249 8.384 9.068 8.388 6.143
+ 13.379 13.049 13.465 13.022 13.060 11.711 10.783 10.590 9.855 9.405 10.009 9.922 9.731 9.436 9.855 10.920 13.406 15.198 15.599 15.872 14.068 10.177 7.950 8.313 7.770 8.653 9.072 8.495 8.657 9.849 8.030 7.327 7.876 9.186 7.350 5.611
+ 13.183 12.948 13.396 12.832 12.776 12.531 12.016 11.001 9.570 9.449 8.928 9.058 8.501 8.935 8.328 10.470 11.693 12.707 15.807 16.861 14.726 10.726 8.536 8.680 7.865 7.990 8.258 7.558 9.426 10.060 8.439 8.056 8.422 9.110 7.165 5.759
+ 13.922 13.187 13.897 13.836 14.689 13.488 12.391 11.829 10.617 10.013 9.934 10.863 11.809 11.570 11.060 11.968 11.866 13.568 15.938 17.195 16.642 15.093 12.286 11.445 9.704 9.458 9.752 10.046 12.137 12.857 11.600 11.205 11.332 10.518 9.364 8.443
+ 14.912 14.888 14.883 15.782 16.967 16.685 15.132 14.034 13.479 13.071 10.404 12.344 12.739 12.515 11.785 12.956 14.020 15.385 17.458 18.481 18.223 17.615 13.704 12.019 10.343 10.299 10.771 11.555 13.978 14.952 13.348 13.542 13.831 12.605 9.609 8.748
+ 15.191 15.339 14.764 14.261 16.245 17.074 17.387 16.639 15.256 14.820 12.679 13.205 12.898 12.639 13.010 13.134 14.642 15.963 18.122 18.528 18.031 17.347 15.281 11.840 10.849 11.134 12.114 11.944 13.851 14.698 12.868 12.828 13.539 12.726 8.893 7.850
+ 15.080 15.287 14.654 14.564 15.164 17.004 17.767 15.979 15.594 15.185 13.491 12.635 13.038 12.607 13.113 13.291 14.761 16.695 18.431 18.161 17.430 16.191 13.413 10.691 9.630 10.742 11.583 10.195 11.825 12.969 11.356 10.930 11.966 11.348 7.957 6.274
+ 14.388 13.988 12.687 12.593 13.538 15.228 15.580 15.087 13.396 12.771 12.076 11.885 9.551 9.602 10.795 11.247 12.677 14.979 16.251 15.508 14.605 13.258 10.670 10.099 11.719 12.367 10.400 8.666 9.288 10.650 10.536 9.328 9.343 10.278 8.283 5.784
+ 14.293 14.041 13.139 12.811 13.193 14.099 14.064 12.160 11.778 10.985 10.920 11.543 9.896 8.916 9.943 11.164 13.583 15.554 14.198 12.001 10.458 9.252 10.351 10.814 11.758 13.121 11.942 8.591 6.692 7.559 8.339 8.770 9.941 9.598 8.451 6.939
+ 14.257 13.759 13.185 12.636 12.756 14.277 13.855 11.807 11.872 10.583 11.402 11.823 9.574 9.085 10.384 12.646 13.828 15.539 13.521 10.573 9.438 9.576 10.386 10.596 11.259 12.631 12.035 8.602 6.948 6.974 7.952 8.303 9.933 10.486 8.735 6.733
+ 14.205 13.589 13.192 12.266 12.132 14.119 13.300 12.512 12.080 10.850 11.774 11.957 9.921 10.540 11.157 12.833 13.251 14.109 11.931 10.560 10.617 10.236 10.492 10.651 11.157 12.419 12.684 8.149 6.724 6.783 6.799 7.243 9.486 10.140 8.279 6.900
+ 14.209 13.491 13.190 11.926 12.037 14.163 13.538 12.666 12.220 10.446 11.940 11.807 10.849 11.401 11.384 11.818 12.330 12.104 10.444 10.897 10.661 10.585 11.075 11.148 11.412 12.802 12.723 8.792 7.260 7.411 6.630 8.160 10.011 9.582 7.352 6.710
+ 14.309 13.676 13.477 12.566 12.309 14.204 13.831 12.857 12.956 12.572 11.878 11.958 12.458 12.811 12.369 12.282 12.280 12.475 12.063 11.712 11.004 10.881 11.211 11.357 11.485 13.018 12.832 9.421 8.432 7.694 8.715 9.604 11.750 10.706 9.410 8.666
+ 14.716 14.328 13.540 12.846 12.513 14.950 14.718 13.471 14.056 13.296 12.866 13.120 13.881 13.773 13.258 12.917 13.134 13.734 13.889 12.771 12.071 10.931 10.907 11.068 11.056 12.182 11.711 9.028 8.639 6.750 9.185 10.039 10.009 9.575 8.689 7.801
+ 14.785 14.368 14.084 13.024 13.315 14.920 14.694 14.556 14.706 13.859 13.581 14.286 13.286 12.508 12.677 12.243 12.556 12.450 12.858 13.310 13.621 12.102 10.757 11.262 11.654 12.518 11.507 8.875 9.149 8.484 8.450 8.476 8.184 8.476 8.093 8.879
+ 13.906 13.627 13.565 12.183 12.203 13.632 14.170 14.569 14.092 12.660 12.789 13.646 12.572 10.823 10.895 11.421 12.004 11.884 12.218 12.721 12.768 12.570 13.174 13.153 13.496 14.035 12.403 9.538 9.830 9.896 10.319 10.237 8.987 9.483 8.870 8.730
+ 13.669 13.375 13.369 11.997 12.118 13.434 14.625 15.056 14.757 12.387 12.166 13.470 11.950 10.354 10.537 11.410 11.801 12.419 12.152 12.841 13.132 12.519 12.837 12.551 12.752 13.265 11.133 8.874 10.421 9.925 9.159 9.914 8.690 8.909 9.142 8.902
+ 13.718 13.178 13.379 11.629 12.525 13.674 14.773 15.717 16.288 14.749 12.923 13.709 11.822 11.094 10.664 11.478 11.718 12.117 11.751 12.323 12.440 12.260 12.715 12.128 11.754 12.057 9.926 8.093 8.465 7.873 6.271 6.520 6.269 6.127 7.202 7.677
+ 13.703 12.889 13.390 11.708 12.962 13.903 15.028 16.353 16.773 15.896 14.438 14.735 12.860 11.812 11.349 11.801 11.831 12.102 11.941 12.605 12.623 12.418 12.624 12.009 11.138 10.711 9.542 6.897 5.113 4.798 4.748 5.979 5.349 5.408 5.522 6.578
+ 13.511 12.732 13.059 11.063 12.595 13.599 14.951 16.512 16.491 16.449 15.717 14.787 13.031 11.630 11.201 11.563 11.821 12.063 11.832 12.510 12.670 12.370 12.828 12.095 11.159 10.510 9.933 6.543 5.128 3.999 4.844 5.986 5.898 5.708 4.942 6.276
+ 13.307 13.093 12.995 11.147 11.968 13.140 14.428 15.893 15.295 14.708 15.859 15.614 13.006 11.658 11.284 11.812 12.025 12.176 12.140 12.689 12.917 12.683 13.156 12.268 11.610 10.984 10.036 6.918 5.146 5.211 4.861 5.776 5.653 5.525 5.268 6.635
+ 13.402 13.314 13.172 11.648 12.144 13.204 14.412 16.003 15.493 14.802 15.788 16.486 14.020 11.760 11.102 11.844 12.219 12.474 12.361 12.976 13.269 12.987 13.278 12.585 11.955 11.444 9.961 8.022 5.347 5.412 4.878 5.232 4.805 4.835 4.575 4.706
+ 13.485 13.185 13.079 11.722 12.308 13.293 14.153 15.841 15.044 14.363 15.666 16.309 13.386 12.425 11.309 11.853 12.098 12.573 12.513 13.137 13.624 13.372 13.296 12.017 10.773 9.903 8.782 7.038 5.781 5.416 5.034 4.948 5.497 5.151 4.591 5.376
+ 13.609 12.877 12.860 11.216 12.246 13.354 14.489 16.177 15.879 15.474 16.067 15.892 15.283 15.250 13.683 11.524 11.619 11.620 11.793 12.385 13.614 13.961 14.133 13.526 11.870 10.081 8.658 8.678 10.784 11.968 11.376 10.228 9.691 9.723 10.169 9.301
+ 13.359 13.108 12.477 12.358 11.862 13.234 14.372 16.617 16.573 15.909 15.758 14.746 15.939 15.495 14.632 12.916 12.639 11.753 12.098 12.198 13.056 13.374 14.054 13.340 11.688 9.741 9.414 9.578 10.927 12.056 11.377 10.748 10.400 10.348 10.295 9.173
+ 11.027 11.057 12.634 12.609 12.438 14.675 15.928 16.036 15.008 15.242 14.637 14.149 15.036 15.480 14.103 12.831 12.475 12.384 11.868 10.985 10.550 10.595 11.463 11.221 10.729 9.005 9.013 9.121 9.724 11.290 12.037 10.735 10.024 10.005 9.568 7.983
+ 11.686 11.283 11.648 10.210 11.078 12.203 12.752 12.239 11.344 10.264 10.763 10.223 11.289 11.502 11.037 10.235 9.665 10.391 9.675 9.410 9.669 9.033 8.839 9.307 9.111 7.100 6.271 6.186 7.081 7.857 9.091 7.949 8.043 8.748 8.801 6.493
+ 9.954 11.077 10.348 10.370 9.585 10.097 10.214 10.772 10.686 9.478 9.700 9.714 9.130 10.125 9.869 9.848 9.777 10.973 10.925 10.326 9.911 10.044 9.667 9.441 9.324 8.837 7.655 7.828 8.389 8.300 7.816 8.980 9.518 10.562 10.966 9.659
+ 8.738 8.001 9.517 9.914 9.517 11.007 11.362 11.631 11.435 9.991 9.955 10.987 11.502 11.993 11.747 10.937 11.367 12.884 13.091 12.467 11.094 11.532 12.024 10.985 10.176 9.697 9.619 9.017 9.041 9.913 10.102 11.366 11.478 11.402 11.477 11.622
+ 8.063 6.892 7.167 8.639 8.316 8.527 9.354 8.850 9.318 8.706 7.988 8.389 7.709 8.328 8.713 8.778 9.420 9.941 9.358 9.435 8.256 8.893 9.477 9.756 10.261 10.135 10.476 9.384 10.912 10.977 11.556 11.431 11.538 12.652 13.180 13.651
+ 6.024 8.051 8.669 8.535 8.020 7.675 8.450 8.461 7.219 7.394 7.095 7.069 7.411 7.366 8.284 8.480 9.233 10.090 9.653 10.281 10.476 9.506 9.699 9.770 10.550 10.465 11.285 11.047 11.930 13.328 13.873 13.114 14.141 15.169 15.425 15.036
+ 8.806 8.477 8.797 8.300 7.087 6.645 9.152 9.603 8.498 8.062 7.163 7.454 8.118 8.927 9.147 8.698 8.829 9.653 10.194 10.097 10.584 9.224 9.502 9.732 10.631 11.344 10.316 10.619 10.636 12.949 13.975 13.438 15.006 15.887 15.849 15.835
+ 7.743 7.000 7.049 6.447 6.836 5.750 6.712 7.782 8.027 7.873 8.300 9.360 8.358 7.968 7.261 7.339 9.025 9.370 9.460 10.594 10.016 8.604 10.262 10.242 10.086 11.550 11.045 10.489 10.335 11.551 13.551 13.518 13.501 15.121 15.684 14.825
+ 3.999 4.354 5.037 6.499 6.040 5.835 6.668 8.105 7.865 7.570 8.316 7.423 5.535 6.703 5.642 6.374 6.588 8.127 8.211 8.648 8.451 8.069 8.078 6.836 6.900 7.725 8.939 8.774 8.879 9.622 11.198 12.312 12.944 13.896 13.519 12.878
+ 6.567 7.056 6.471 6.286 6.453 5.611 5.506 7.646 7.290 6.486 5.960 5.682 3.747 5.461 4.831 4.839 4.834 5.725 5.569 5.039 5.946 6.916 7.424 6.795 7.243 7.073 6.670 6.870 7.316 8.265 8.110 9.358 9.201 10.758 10.508 10.036
+ 7.802 6.134 6.560 5.438 5.997 6.135 6.094 8.094 7.182 6.093 5.208 5.574 4.694 5.613 5.371 5.850 5.509 5.244 5.932 6.004 5.674 5.317 6.268 6.337 6.388 5.401 5.844 5.977 6.580 6.169 6.020 6.108 6.776 7.549 8.316 7.397
+ 6.743 6.523 6.247 6.356 5.669 6.620 6.969 7.172 4.397 5.048 5.485 5.701 4.711 5.826 6.132 6.431 6.668 6.547 7.186 7.008 6.241 5.840 6.278 5.959 6.622 6.313 6.133 5.541 5.843 6.271 7.010 7.252 8.537 8.637 8.582 7.858
+ 5.667 7.377 7.349 8.214 8.542 8.204 7.744 8.292 8.219 8.396 8.901 9.145 8.974 8.799 9.388 9.168 8.282 9.116 11.026 10.678 10.590 10.734 10.080 9.998 9.930 9.341 10.103 10.047 9.641 10.358 11.152 11.460 13.853 13.781 12.101 10.688
+ 7.386 8.569 8.410 8.906 10.803 11.404 10.461 9.837 9.570 9.620 10.395 10.504 9.437 9.675 10.847 10.582 8.960 11.023 12.490 11.511 11.738 12.376 11.074 11.025 10.577 11.698 11.635 10.927 11.243 12.782 14.128 13.256 15.092 14.839 13.761 13.715
+ 11.165 8.869 7.895 8.658 9.448 11.292 10.705 10.789 10.457 9.705 10.391 8.827 8.973 7.734 9.279 9.561 10.288 11.158 12.483 11.553 11.366 10.903 8.743 10.050 10.720 12.942 12.348 10.626 11.374 14.356 14.369 12.552 11.604 12.369 14.012 13.935
+ 13.267 13.044 13.197 13.019 14.089 14.465 14.313 14.503 13.035 13.100 12.459 12.383 12.285 11.899 12.080 12.791 13.610 14.147 13.767 13.169 12.682 11.967 11.570 11.262 12.363 12.718 11.352 9.164 10.786 12.914 11.867 9.744 9.083 9.575 10.189 9.786
+ 13.311 13.610 12.575 12.697 14.457 14.900 15.505 13.866 13.085 12.625 13.096 12.255 12.093 12.229 12.607 12.988 14.082 14.101 13.655 13.147 12.620 11.997 12.032 12.007 12.470 12.091 11.138 9.616 8.781 7.409 7.836 7.924 7.543 7.391 7.603 6.602
+ 13.200 12.375 11.460 12.254 13.019 13.619 13.678 12.846 11.875 11.868 11.600 11.283 10.906 11.284 12.244 12.970 12.825 12.193 12.050 11.959 11.743 11.320 12.212 12.130 10.591 10.448 10.732 9.702 7.219 6.959 7.272 7.150 7.273 7.103 7.621 7.029
+ 12.808 12.577 11.937 11.542 12.165 11.780 10.678 10.463 8.993 9.645 9.486 9.506 7.805 8.468 11.039 10.763 10.170 10.099 10.364 10.515 10.511 10.883 12.298 12.018 8.455 9.031 10.279 10.090 6.659 6.592 6.309 6.860 8.823 8.090 7.388 6.898
+ 13.114 12.623 12.125 11.727 11.852 11.897 11.724 11.067 8.996 8.692 8.999 8.563 6.916 8.677 11.272 10.967 10.513 10.733 10.735 10.867 10.909 11.008 12.369 12.056 8.645 9.195 10.356 9.996 6.982 6.962 5.394 7.524 9.086 8.360 7.095 5.766
+ 12.846 12.369 12.094 11.994 11.956 12.224 11.764 10.731 8.934 8.727 9.308 8.348 7.191 8.766 11.396 11.191 10.809 11.190 10.900 11.081 11.155 11.268 12.445 11.976 8.293 8.220 9.956 10.209 6.839 6.454 5.218 7.145 7.622 6.822 6.101 6.917
+ 12.942 12.176 12.093 11.970 12.226 12.292 11.237 10.277 9.266 9.267 9.727 8.556 7.749 9.095 10.935 11.685 10.737 10.523 10.573 11.015 11.337 11.578 12.361 11.259 7.811 7.435 8.779 9.484 6.941 6.402 5.547 6.134 6.528 6.678 6.448 6.178
+ 13.046 12.453 12.475 11.969 12.866 14.112 14.008 12.995 11.971 12.030 11.777 11.029 10.289 11.282 12.269 13.432 14.437 15.063 14.031 12.943 12.373 12.420 12.702 12.177 9.589 8.508 8.173 8.793 8.903 8.397 8.367 8.176 8.243 7.265 8.465 8.122
+ 13.336 12.682 12.808 11.967 13.744 14.404 15.506 14.992 13.382 12.439 12.855 11.848 11.243 11.507 11.880 12.605 13.911 15.268 16.618 16.100 14.927 13.433 13.015 12.966 13.034 11.508 9.959 9.340 10.006 9.823 8.673 9.060 8.251 6.318 7.168 6.411
+ 13.349 12.460 12.821 12.245 13.462 14.581 16.060 15.703 14.357 12.365 12.763 11.947 11.122 11.363 11.514 11.952 12.570 13.225 15.766 16.846 16.390 14.118 13.031 13.099 13.868 12.356 10.568 9.299 10.530 10.503 9.249 10.778 10.137 7.511 8.237 8.294
+ 13.326 12.642 12.893 12.623 13.457 15.085 16.144 15.868 14.372 12.948 12.586 12.058 11.330 11.310 11.585 11.741 12.112 12.543 13.820 15.924 17.395 15.516 13.444 13.170 14.032 13.333 11.114 9.287 11.384 11.269 9.303 12.558 11.902 8.365 9.144 9.606
+ 13.311 12.967 13.015 12.882 13.988 15.654 16.105 15.488 14.048 12.827 12.717 11.885 11.507 11.471 11.776 11.787 12.119 12.378 13.078 14.769 16.494 16.208 13.902 12.968 13.395 13.822 11.844 8.997 11.177 11.090 8.608 12.124 12.136 8.969 9.123 9.673
+ 13.451 13.000 12.733 13.371 14.276 15.360 15.203 13.725 12.507 12.342 11.968 10.632 10.974 10.685 11.014 10.594 10.425 11.067 12.179 13.481 15.014 15.444 13.325 12.394 13.358 14.086 12.525 10.513 12.000 11.756 9.852 13.059 13.052 9.904 10.046 9.823
+ 12.755 10.493 11.964 12.423 13.122 15.362 14.514 12.294 12.315 10.399 11.016 9.710 10.027 9.231 9.025 9.070 8.952 8.862 10.052 11.273 12.816 13.980 12.858 10.591 11.869 12.888 11.946 10.338 11.779 11.372 8.901 12.289 12.109 9.083 9.637 9.265
+ 11.065 10.923 11.352 12.164 12.930 13.740 12.598 10.923 10.695 9.831 9.741 10.067 10.181 9.623 9.795 9.899 9.893 10.318 10.387 11.283 11.037 11.993 12.630 11.460 12.118 12.381 11.531 9.650 10.517 9.896 9.475 9.629 9.040 8.570 9.428 9.321
+ 8.509 8.085 8.397 9.238 9.007 9.812 9.123 9.104 8.890 8.638 7.742 8.155 8.163 7.938 8.003 8.261 8.378 8.551 8.919 9.369 9.833 9.608 10.404 10.128 10.165 10.795 9.597 7.061 7.109 7.888 7.606 7.047 6.627 7.062 7.579 7.718
+ 6.817 5.597 5.737 6.873 8.895 8.825 7.327 7.460 7.243 7.393 6.041 3.309 4.107 4.121 4.636 6.307 6.655 5.529 6.448 7.231 7.582 7.005 6.457 6.106 5.971 6.834 5.874 5.548 6.553 6.178 5.905 6.644 6.391 6.962 6.659 5.253
+ 6.880 6.373 6.642 7.131 5.982 8.462 9.241 7.962 7.214 6.525 6.790 5.822 5.724 6.132 6.550 6.409 7.260 7.325 7.954 8.485 8.445 8.462 8.483 8.884 9.074 8.946 8.018 6.887 6.427 7.133 7.883 8.043 8.127 8.021 7.942 7.636
+ 8.574 8.305 8.263 9.746 9.448 10.259 10.456 10.025 9.772 8.822 8.793 9.894 10.299 10.230 10.905 10.992 11.604 12.642 12.259 12.026 13.475 12.890 12.837 13.618 13.319 13.706 13.660 10.822 11.141 11.651 11.467 12.316 12.192 12.037 12.000 11.839
+ 9.528 9.499 8.544 11.481 11.977 12.237 12.394 11.449 9.911 9.023 10.365 10.392 10.059 10.788 11.406 12.319 11.413 12.279 12.428 12.222 12.660 11.134 12.612 12.696 12.705 13.633 13.684 11.318 11.063 11.319 11.203 12.918 12.176 12.074 11.421 11.620
+ 12.392 12.747 12.189 13.940 14.843 15.301 13.931 12.259 11.962 11.022 10.122 9.659 9.625 8.757 9.115 9.311 9.518 9.997 10.633 11.262 12.883 13.867 12.935 11.661 11.370 12.476 11.924 9.525 10.367 10.004 12.072 12.673 10.857 9.974 9.073 9.253
+ 13.332 13.491 13.858 14.139 15.656 17.169 16.456 15.007 13.570 13.195 12.332 11.819 11.443 11.117 11.269 11.292 11.423 11.774 12.451 13.507 14.944 14.203 12.171 11.260 11.495 12.497 11.061 9.569 10.787 12.745 14.716 14.644 13.636 10.981 8.365 7.781
+ 12.987 13.188 13.493 13.487 15.071 17.047 16.343 16.293 14.580 13.605 12.713 12.290 12.304 12.044 12.021 12.201 12.485 13.326 14.718 16.228 16.123 14.464 12.553 11.142 11.279 11.635 9.646 7.654 8.843 10.592 12.981 12.910 11.646 9.743 8.686 7.611
+ 12.335 12.641 12.712 12.859 14.304 16.105 17.083 15.517 14.080 13.647 12.477 11.366 11.824 11.222 11.379 11.537 11.963 12.934 14.362 16.387 15.268 12.888 11.866 11.583 11.696 10.665 9.651 9.717 8.795 9.202 11.102 12.300 11.037 9.925 9.546 7.374
+ 10.852 11.561 11.759 11.891 14.371 16.036 15.950 13.950 12.746 12.327 11.441 10.614 10.800 10.291 10.427 10.593 11.245 12.800 14.759 14.147 10.610 9.930 10.755 11.312 11.034 9.795 8.611 9.048 8.350 8.111 10.659 12.563 11.295 10.137 9.463 7.291
+ 11.789 11.881 11.560 11.955 11.978 11.693 11.701 10.502 10.173 8.955 9.129 8.967 8.624 8.412 8.562 7.834 8.756 10.304 9.287 8.778 8.223 8.773 9.420 8.774 7.554 7.353 7.555 7.043 6.750 7.373 7.507 7.882 8.276 7.902 7.838 7.454
+ 11.269 10.768 8.989 10.914 10.704 10.304 10.111 9.529 8.780 8.728 7.577 7.581 8.151 7.555 6.674 6.917 7.657 7.685 7.689 9.372 9.246 9.494 9.575 8.921 7.961 7.545 7.299 8.244 9.066 8.910 9.687 10.011 9.406 7.442 8.568 7.784
+ 9.923 8.424 8.037 9.402 11.404 11.439 11.117 11.640 11.885 11.026 11.873 11.057 10.913 11.698 10.834 11.170 9.515 10.645 13.429 14.227 14.623 14.195 13.624 12.421 11.038 10.030 9.970 10.531 10.551 11.796 11.449 12.097 11.236 10.656 10.439 9.635
+ 11.700 11.865 11.406 12.507 12.484 12.899 12.338 13.281 12.003 11.732 11.771 11.957 11.441 11.301 10.611 10.234 12.338 12.364 14.450 14.592 15.110 14.907 14.209 12.232 11.103 10.812 11.752 10.553 10.789 11.394 12.085 12.970 12.121 11.206 10.602 9.905
+ 14.366 13.848 12.253 10.927 11.536 11.482 11.513 11.543 11.076 11.064 12.669 13.432 11.993 12.117 11.591 12.505 14.181 14.661 14.683 13.913 13.470 13.094 12.357 10.432 9.687 9.978 9.541 10.191 10.470 11.433 11.365 10.972 10.651 11.180 10.029 7.972
+ 11.780 12.569 11.931 9.495 8.784 9.103 10.566 10.952 10.213 11.334 12.806 13.685 14.522 13.724 13.396 13.007 13.974 14.925 14.072 13.078 12.705 13.717 13.037 11.822 12.361 12.516 11.340 12.013 13.853 13.530 12.126 11.666 12.237 13.390 13.450 10.972
+ 12.379 11.445 9.940 10.431 9.757 9.362 11.110 10.747 9.546 9.322 12.753 14.260 13.855 12.895 13.541 12.851 12.644 12.830 12.168 11.641 11.821 13.768 14.280 11.876 10.535 10.990 10.068 9.632 12.642 12.778 12.405 11.680 11.084 11.312 11.864 11.632
+ 14.948 14.552 14.330 13.875 12.961 11.908 11.535 11.303 10.390 10.731 14.023 14.426 13.358 12.186 13.200 12.675 11.257 12.656 12.226 12.383 11.669 12.642 13.209 11.674 10.983 10.679 10.974 9.939 10.268 10.750 11.882 12.863 10.685 8.724 10.181 10.558
+ 14.882 14.283 13.077 12.700 11.112 10.398 10.547 10.584 11.518 10.986 11.445 12.359 13.298 13.093 13.250 13.416 12.891 14.197 12.552 11.731 11.384 13.931 15.017 13.541 11.768 9.354 10.687 10.954 13.024 14.916 13.977 12.537 10.704 10.450 10.342 10.299
+ 11.702 11.635 10.186 8.978 10.007 10.865 10.191 11.493 11.461 12.132 12.231 12.918 14.104 13.913 13.605 13.734 12.593 13.596 12.745 11.185 12.103 15.319 15.718 14.390 12.666 10.275 10.661 13.038 15.474 15.626 14.563 13.695 10.466 9.989 10.617 10.736
+ 11.858 11.961 11.231 11.328 9.828 9.857 9.268 10.080 11.259 11.807 12.349 11.968 12.369 13.491 13.555 12.800 11.847 12.288 11.379 10.309 11.712 13.460 14.662 13.291 10.866 10.914 9.587 11.458 13.931 14.119 13.961 12.767 11.175 10.668 9.961 9.418
+ 12.307 12.304 13.443 13.194 11.166 11.078 10.304 9.765 11.968 13.094 14.086 13.743 13.698 13.373 13.650 12.627 11.506 11.681 10.803 10.475 11.116 12.473 13.278 10.416 9.904 10.085 9.406 9.801 10.203 11.243 13.747 12.520 10.816 9.902 8.048 8.374
+ 14.115 13.751 13.921 13.752 12.694 13.001 13.850 14.061 14.245 13.897 14.698 13.736 12.820 13.782 13.041 12.679 11.166 11.468 10.582 9.239 10.717 11.978 12.542 10.233 9.801 9.568 9.611 8.494 8.539 9.854 11.254 11.008 8.985 9.031 7.613 7.164
+ 13.659 13.014 12.682 13.653 13.859 14.689 15.690 16.465 16.887 16.351 16.706 16.668 16.825 16.608 15.210 13.283 12.199 11.891 11.581 10.901 10.368 10.904 10.208 8.947 8.351 8.502 7.570 7.537 9.014 10.431 9.308 8.428 9.040 7.934 6.785 6.027
+ 13.246 12.734 12.613 13.522 14.261 14.720 15.877 17.122 17.328 17.271 16.592 15.605 17.247 17.403 16.199 14.524 13.739 13.276 13.562 13.963 14.795 14.222 11.239 8.821 5.922 6.243 5.719 6.573 8.710 10.937 10.016 8.185 8.019 7.534 6.071 3.416
+ 12.966 12.359 12.150 13.400 14.091 14.247 15.656 17.350 17.651 16.851 15.278 15.618 17.051 17.745 16.972 14.544 13.958 13.219 13.217 13.805 14.886 13.726 10.546 8.789 7.630 5.876 6.049 6.294 8.737 10.893 10.278 8.486 7.710 6.891 5.814 4.017
+ 12.747 11.903 12.292 13.233 13.783 14.266 15.874 17.502 17.946 16.687 15.000 15.761 16.522 17.973 17.287 14.830 14.211 13.729 13.546 14.430 15.012 11.946 9.978 8.676 7.882 6.712 6.522 6.797 8.677 11.492 10.877 8.860 8.292 7.189 5.920 5.566
+ 12.605 12.257 12.750 13.316 13.977 14.595 16.254 17.490 17.768 16.459 15.141 15.885 16.258 17.513 17.701 16.038 15.093 14.619 15.102 15.658 14.104 11.841 10.260 9.025 7.914 6.875 6.814 6.972 8.602 11.591 11.818 9.299 7.154 6.454 5.888 6.442
+ 12.762 12.417 12.699 13.425 14.044 14.616 16.504 17.247 17.586 16.158 15.191 15.865 16.049 17.209 17.879 16.608 15.748 15.677 16.514 15.688 13.085 10.562 9.348 8.610 7.809 6.746 5.815 5.298 7.247 10.024 11.343 9.523 6.948 5.523 5.129 6.349
+ 12.439 11.863 11.924 13.197 13.701 14.138 16.354 16.827 17.231 15.221 14.164 15.557 15.344 16.741 17.356 16.998 15.323 15.168 15.786 15.024 11.569 9.848 8.802 7.758 6.996 6.303 5.642 5.953 6.192 8.745 10.867 9.242 6.312 6.083 5.390 4.513
+ 12.156 10.983 11.876 12.805 13.303 13.790 16.476 17.303 17.047 15.090 13.959 15.146 14.872 16.348 17.184 16.794 15.433 16.126 15.926 13.931 11.282 9.709 8.587 7.251 6.982 6.490 5.860 7.144 7.246 8.923 11.094 9.848 7.429 7.473 7.069 6.347
+ 11.969 11.678 12.397 12.973 13.686 14.653 16.850 17.542 17.019 15.339 13.970 14.980 14.994 16.092 17.207 17.255 16.087 17.020 16.703 13.850 11.249 9.526 7.915 7.217 7.191 7.113 6.782 6.551 7.570 9.671 11.899 10.346 6.709 6.275 6.283 6.409
+ 12.209 11.711 12.156 13.066 13.820 14.745 16.844 16.975 16.706 15.366 13.831 15.004 14.950 15.955 17.238 17.834 16.876 17.094 16.474 14.026 11.479 9.586 8.435 7.890 7.457 7.300 6.917 7.058 8.370 9.975 11.553 8.905 6.802 6.641 6.416 6.385
+ 12.213 11.167 11.592 12.839 13.578 14.387 16.580 16.679 16.297 15.212 13.350 14.670 14.357 15.350 16.350 17.691 16.882 16.816 16.390 13.829 11.596 9.686 8.652 7.750 7.612 6.581 6.255 6.527 7.238 9.184 11.190 8.515 6.327 6.419 5.478 5.562
+ 11.797 10.739 11.620 12.396 13.266 14.328 16.638 16.949 15.806 14.793 13.056 14.088 13.869 14.723 16.152 17.693 17.032 17.195 16.737 13.899 11.854 9.557 8.260 7.121 7.401 6.795 5.663 5.896 6.679 8.800 10.211 6.939 5.718 5.351 4.961 5.376
+ 11.792 11.224 12.037 12.609 13.784 15.127 16.912 16.824 15.540 14.862 13.728 13.998 14.126 14.730 15.988 17.566 18.094 17.893 17.476 14.895 12.535 10.424 9.191 8.488 8.027 7.832 7.434 7.168 7.076 8.606 9.959 7.518 6.567 6.267 6.257 6.321
+ 11.822 11.367 11.977 12.916 13.971 15.267 16.843 16.208 15.467 14.967 13.464 13.867 13.517 14.365 15.411 16.702 18.068 17.983 17.692 15.343 12.777 10.510 9.424 8.841 8.306 7.780 7.796 7.646 7.794 10.039 10.863 8.631 6.884 6.729 6.835 6.626
+ 11.791 10.825 11.507 12.808 13.493 14.717 16.410 15.931 14.648 14.527 12.757 13.251 12.906 13.935 14.239 15.455 17.631 17.249 17.690 15.940 13.472 10.400 9.243 8.278 7.264 6.732 7.753 8.618 9.615 9.873 10.472 8.413 6.619 7.147 6.718 5.760
+ 11.651 10.385 11.757 12.416 13.512 15.374 16.273 15.915 13.631 13.901 12.550 12.685 12.698 13.235 13.740 15.195 17.310 17.444 17.520 16.392 13.629 11.013 9.124 7.967 7.966 7.452 7.485 8.524 10.513 10.375 10.286 8.770 7.531 7.819 6.777 5.757
+ 11.930 11.183 12.346 12.907 14.397 15.923 16.343 15.704 13.735 13.849 13.034 12.935 12.958 13.395 13.982 15.208 16.745 17.849 17.932 16.743 14.409 11.546 9.363 8.484 8.603 8.131 7.980 8.609 11.882 12.429 10.893 8.584 7.742 7.529 6.860 6.590
+ 12.135 11.488 12.181 13.510 14.542 15.861 15.583 15.130 13.548 13.810 12.797 12.798 12.858 13.128 13.691 14.728 15.905 17.757 18.033 17.309 14.709 11.878 10.017 9.043 7.985 8.695 8.961 9.525 12.774 13.236 11.234 8.751 7.697 7.845 6.725 5.987
+ 12.146 11.291 11.615 13.454 14.441 15.588 15.086 13.725 12.957 13.318 11.613 12.214 11.984 12.336 12.528 13.765 14.849 17.059 18.092 17.350 15.428 12.860 10.030 8.943 8.679 9.501 9.894 9.358 12.331 12.254 10.078 8.804 8.000 7.693 7.745 6.850
+ 11.785 10.508 11.931 12.942 14.878 15.663 14.741 13.173 12.551 12.929 11.016 11.815 11.320 11.930 12.127 13.173 14.144 16.619 18.059 16.953 16.162 13.165 10.625 8.575 8.743 8.347 9.583 10.053 12.234 11.786 9.682 8.108 8.023 8.649 8.261 7.368
+ 11.790 11.065 12.554 14.023 14.317 14.260 13.944 12.424 11.931 12.058 11.047 11.187 10.935 11.578 11.681 12.493 13.259 15.400 17.425 16.701 16.159 13.371 9.930 8.931 8.892 8.875 8.957 10.498 12.061 11.155 10.490 8.629 9.264 8.987 7.434 6.377
+ 9.756 10.751 11.465 9.954 10.206 11.020 9.591 9.064 9.122 7.827 7.973 7.966 8.472 8.958 9.197 9.547 10.168 11.923 14.866 15.333 14.092 12.340 9.317 7.908 6.894 6.535 7.543 8.042 9.009 7.803 8.674 8.835 8.212 7.689 5.921 4.551
+ 9.607 10.458 9.717 9.554 8.888 9.084 7.683 7.747 7.611 8.171 8.572 8.140 7.745 8.927 9.335 8.729 9.947 11.299 13.197 13.101 11.968 12.963 12.326 11.000 10.202 9.437 8.935 9.983 10.513 9.782 8.956 9.794 10.340 9.989 9.185 7.524
+ 10.543 10.911 9.838 9.055 8.030 8.994 9.019 6.654 6.862 6.655 7.103 8.359 7.345 7.590 7.445 7.484 8.795 9.787 11.360 12.093 11.110 11.431 10.419 8.554 8.018 7.208 7.594 7.948 8.522 8.301 8.486 8.718 8.477 9.233 9.876 8.605
+ 9.747 10.938 10.099 7.705 8.652 9.153 8.849 7.136 7.497 6.640 5.930 6.584 6.021 7.668 7.625 7.395 6.508 9.037 10.661 10.980 10.525 8.150 8.781 7.021 7.232 6.418 6.479 7.912 8.303 9.427 10.139 9.627 7.429 8.916 9.709 8.384
+ 9.423 10.102 10.028 10.117 9.118 8.783 10.194 10.007 8.209 8.658 9.505 8.631 9.234 9.561 9.058 9.796 10.433 10.585 11.515 12.035 11.946 11.620 11.940 11.274 10.742 10.818 10.685 10.765 10.560 10.131 10.562 11.017 10.298 9.835 9.945 9.117
+ 8.716 10.071 10.709 11.662 10.999 11.667 12.393 12.148 12.864 12.733 12.902 13.034 12.806 12.590 10.714 11.734 11.715 12.318 13.017 13.089 14.060 13.198 13.394 12.502 12.382 13.061 13.120 12.474 11.192 11.498 12.840 13.122 11.859 12.192 13.388 12.403
+ 10.204 10.496 10.489 12.175 11.986 11.221 12.253 12.242 12.415 12.185 10.786 11.083 9.958 10.239 9.218 9.359 10.205 10.900 12.224 13.255 13.469 12.439 11.666 12.206 12.206 12.258 12.834 12.192 11.087 11.157 12.215 11.621 9.151 11.441 13.082 13.139
+ 11.352 11.438 11.852 11.926 9.767 8.058 10.373 10.038 10.278 11.289 11.065 12.505 11.765 10.447 10.280 11.165 10.401 12.083 12.943 15.647 15.721 13.463 11.326 11.884 12.125 12.489 11.775 12.087 11.323 10.839 11.268 11.129 8.965 9.868 12.685 13.244
+ 11.436 9.989 10.201 10.395 9.378 9.208 10.951 10.147 10.815 12.050 10.760 11.727 11.617 11.007 10.154 11.299 11.082 12.538 13.773 15.593 16.499 14.843 12.385 12.698 12.838 12.410 10.425 10.194 10.530 10.011 9.747 9.663 8.989 8.891 10.454 11.023
+ 11.197 11.960 9.852 8.911 9.442 10.484 10.469 10.903 11.013 11.385 11.458 10.779 12.284 11.823 10.742 11.215 12.571 12.568 13.066 14.654 15.184 14.394 12.598 13.013 13.075 12.565 11.537 10.442 10.148 11.271 11.160 9.886 9.829 9.398 10.131 10.110
+ 12.216 11.874 10.160 9.055 8.924 9.251 11.394 12.219 11.819 12.587 12.041 11.024 11.526 11.890 11.895 11.960 11.261 12.158 13.311 16.087 15.958 13.875 12.118 10.899 11.174 11.805 11.304 10.898 10.347 11.096 11.337 9.407 10.356 10.062 9.544 9.952
+ 10.311 9.557 8.522 10.273 9.698 8.902 10.197 11.857 11.247 10.479 10.298 11.507 11.837 11.097 10.662 10.789 11.037 12.376 12.830 15.362 14.485 11.948 11.008 10.395 11.263 12.972 13.110 12.588 10.471 10.448 10.547 10.895 11.358 10.645 10.561 9.793
+ 10.663 10.134 10.479 9.279 9.434 9.205 8.836 7.881 8.808 10.442 10.705 9.963 8.504 9.585 9.242 9.370 11.120 12.229 12.970 14.469 13.341 12.345 10.547 11.065 11.439 11.841 11.589 11.405 10.837 10.474 10.011 9.953 10.949 10.761 10.329 9.467
+ 12.667 12.350 12.093 10.736 9.983 8.771 6.761 6.882 9.232 10.106 10.770 9.800 8.072 8.134 8.514 10.394 11.114 11.180 11.849 13.185 13.556 10.724 9.762 10.127 9.762 10.228 10.812 9.930 9.912 10.601 9.988 9.787 10.106 9.651 9.557 8.741
+ 10.048 8.471 9.085 8.197 8.420 8.041 8.275 8.698 8.660 8.058 9.479 10.729 9.539 9.297 9.077 11.740 10.909 9.801 12.160 13.825 13.324 11.767 10.950 11.141 11.317 10.493 10.343 10.527 10.576 10.775 10.170 11.170 10.441 9.911 8.563 8.327
+ 10.694 9.183 8.212 8.600 8.642 7.458 5.861 8.161 9.176 8.940 9.402 9.896 9.307 9.956 9.847 11.837 11.288 10.956 13.267 14.592 12.405 11.476 10.867 9.819 11.385 10.743 10.697 11.138 10.503 10.725 9.609 10.809 10.215 9.606 9.955 9.454
+ 10.536 9.532 8.900 7.602 7.540 8.163 7.436 8.749 7.866 7.082 7.849 8.676 8.987 8.769 8.132 8.878 10.117 10.546 13.064 13.552 11.493 10.734 10.105 9.771 9.547 10.233 10.079 8.682 8.730 9.803 10.104 10.860 10.770 10.167 10.284 9.486
+ 10.740 9.175 7.158 6.687 7.226 8.972 8.544 7.818 7.842 7.360 8.787 8.251 8.180 8.861 8.234 7.987 7.979 9.140 11.474 11.601 11.118 10.559 9.158 8.657 9.122 9.188 9.519 8.945 8.504 9.420 9.746 10.397 10.207 9.576 9.132 8.792
+ 11.089 9.723 8.215 7.511 7.587 6.708 5.493 6.214 6.954 7.974 9.620 8.978 8.280 7.904 7.609 8.017 8.531 10.204 12.400 12.821 11.248 9.581 8.716 8.973 8.783 9.375 9.105 7.340 8.136 8.821 9.221 9.027 9.256 10.546 8.640 8.493
+ 9.614 9.833 9.516 9.673 8.591 8.969 8.913 8.451 8.525 8.280 9.181 8.314 7.924 7.459 7.183 8.008 9.369 11.915 12.391 11.807 11.431 9.522 9.663 9.238 9.101 9.783 10.083 8.697 6.008 8.969 9.435 8.982 9.776 10.684 9.437 9.167
+ 10.220 11.305 11.772 11.018 10.201 10.961 11.835 11.837 10.608 9.339 8.914 8.576 7.361 6.513 6.890 6.352 8.823 10.110 11.330 9.621 9.722 9.279 8.443 7.297 8.696 10.656 11.008 9.020 6.834 8.553 8.473 8.787 10.643 10.343 8.532 7.717
+ 5.567 8.144 9.278 8.369 6.789 6.146 9.464 10.057 7.058 5.432 5.516 4.874 4.169 3.906 4.684 4.607 5.137 5.881 6.873 6.770 5.788 4.624 4.246 4.998 5.734 6.970 7.627 5.746 4.617 5.802 5.173 5.148 7.727 6.679 5.107 4.959
+ 9.398 9.070 8.500 7.629 7.903 8.723 8.426 6.543 6.735 7.412 7.627 6.344 4.960 5.167 4.709 4.548 4.820 5.742 4.548 6.076 6.089 4.724 5.607 4.773 4.918 4.449 5.207 4.922 4.682 5.526 5.178 5.441 5.460 4.580 4.595 3.378
+ 8.427 8.194 6.385 5.021 7.010 8.219 8.103 6.927 6.654 6.653 6.638 6.562 4.946 5.310 4.274 4.349 5.635 5.743 4.889 4.921 3.954 3.628 4.703 4.544 4.665 4.719 5.036 5.195 5.534 6.052 5.407 5.452 6.568 5.518 5.498 4.434
+ 6.598 5.775 5.905 5.973 4.054 3.657 5.276 5.137 5.170 4.648 4.900 5.024 5.321 4.513 3.697 4.711 6.083 5.101 4.037 3.322 4.336 4.441 4.911 5.239 4.280 4.353 4.225 4.420 5.670 5.465 5.529 5.449 5.523 4.587 5.160 4.038
+ 5.676 5.212 5.921 4.810 4.142 5.266 6.009 6.308 5.149 4.393 4.850 4.592 3.427 4.813 3.955 4.661 5.539 5.850 5.118 3.929 5.336 5.211 4.838 4.793 4.335 4.458 4.535 4.486 4.778 5.013 5.242 4.627 4.524 4.484 4.764 3.942
+ 4.808 5.471 5.017 5.152 4.764 3.688 6.060 6.197 4.169 3.414 3.333 3.645 3.551 5.156 4.409 4.511 5.470 4.972 5.291 4.572 4.464 4.409 4.024 4.357 4.038 4.043 4.462 4.393 5.812 5.031 5.133 4.522 4.736 4.685 4.055 3.482
+ 6.763 7.158 8.440 8.277 8.689 9.771 10.452 10.828 10.731 10.398 10.277 9.979 9.520 9.723 9.889 10.150 10.412 10.944 11.298 10.827 10.089 9.775 9.822 9.800 9.801 9.904 8.992 7.818 8.038 7.278 6.580 6.089 6.138 5.266 6.522 6.954
+ 11.375 10.747 9.764 10.873 11.417 11.108 13.686 14.521 13.682 12.649 13.143 12.162 12.099 11.376 11.990 12.416 13.167 14.747 15.185 13.694 12.747 12.641 12.839 12.548 12.541 13.701 12.430 11.848 11.936 10.453 9.496 8.789 9.393 9.586 11.204 10.747
+ 12.051 12.256 10.595 10.709 10.639 11.198 12.163 12.485 12.571 12.545 13.452 13.130 12.192 12.636 13.294 12.991 12.752 15.390 15.610 15.124 13.126 12.669 12.263 11.968 12.377 13.585 13.540 11.540 11.519 11.261 10.643 10.553 12.344 12.267 12.555 13.090
+ 12.530 13.333 13.486 13.705 12.816 12.360 12.182 12.372 12.195 11.818 13.037 14.051 12.860 13.194 12.583 12.819 12.356 13.170 15.272 14.952 14.531 14.318 12.744 13.997 13.231 12.630 14.181 12.384 11.882 13.596 14.295 12.860 13.796 13.958 14.116 14.079
+ 14.958 14.364 15.474 15.173 14.276 13.119 13.443 14.401 14.435 13.591 13.277 14.602 13.740 12.433 13.136 12.883 14.107 14.519 14.684 15.038 16.033 16.147 14.281 13.384 12.881 13.189 13.159 12.272 12.316 12.678 13.695 13.799 14.573 14.845 14.131 14.294
+ 15.775 14.387 13.224 12.926 12.969 12.047 10.757 12.680 12.170 10.937 11.043 11.962 13.210 12.989 13.403 13.366 13.256 13.034 14.231 14.288 14.605 13.369 13.097 13.491 13.786 12.551 12.870 11.461 10.809 11.802 12.788 13.871 13.908 14.438 13.969 12.734
+ 12.008 13.344 13.102 11.250 10.245 9.731 11.751 11.776 10.750 9.594 9.963 11.824 12.395 13.466 14.734 14.518 14.597 13.273 13.240 14.972 15.022 14.053 11.849 13.701 14.019 13.652 13.441 10.814 10.331 12.172 12.943 12.722 12.408 12.740 12.699 12.443
+ 10.467 12.076 11.614 9.627 7.798 9.630 11.632 11.967 11.321 11.181 9.745 11.498 12.112 13.624 14.226 14.926 15.828 14.724 14.839 15.128 15.599 14.578 13.358 13.284 13.451 13.507 13.034 10.303 9.839 11.616 13.639 13.371 11.950 11.588 12.675 12.442
+ 8.918 8.565 7.986 7.486 7.404 8.076 11.949 13.957 12.908 10.819 10.641 11.790 9.985 11.367 13.020 14.195 15.982 14.358 14.574 14.593 15.972 14.759 13.214 12.652 13.273 13.687 13.624 11.404 10.640 11.841 12.674 12.694 11.712 11.773 12.540 12.925
+ 9.237 9.050 8.675 7.414 7.407 7.313 11.911 14.056 12.782 9.996 11.201 11.850 9.703 10.860 12.200 12.997 15.852 14.497 14.410 15.910 16.394 14.773 12.517 11.987 12.004 13.698 13.446 11.672 11.596 12.156 12.413 11.603 11.224 12.627 13.291 13.375
+ 9.800 7.898 6.428 6.609 6.668 7.707 11.049 13.401 12.011 7.862 10.818 10.633 9.910 10.311 11.685 13.130 15.797 13.914 13.682 16.700 15.586 12.880 12.639 11.949 12.613 13.650 13.464 12.350 11.834 11.544 12.772 11.610 11.818 13.274 13.657 13.424
+ 9.642 7.365 8.402 8.993 7.819 7.804 10.949 13.233 11.631 7.042 10.481 10.764 8.922 8.685 11.422 13.332 15.780 13.708 13.205 14.672 13.496 12.630 11.846 11.491 10.758 13.810 13.632 11.333 10.919 11.864 11.989 10.871 11.525 13.184 13.823 11.916
+ 9.560 9.634 9.895 9.236 7.898 8.194 10.950 13.284 11.969 7.364 9.965 9.917 8.768 8.992 10.821 13.066 15.405 13.721 12.962 13.907 13.356 13.135 13.012 11.926 10.432 13.536 13.174 10.381 10.488 11.306 12.257 12.148 10.302 12.527 14.148 12.819
+ 8.338 9.507 8.980 7.317 7.486 7.402 10.992 13.140 11.702 7.917 10.211 11.055 8.776 8.655 11.791 14.088 15.313 13.461 12.690 12.964 13.400 13.294 13.153 12.238 11.314 13.007 12.534 10.181 11.255 11.992 12.705 12.456 10.368 12.009 12.696 12.976
+ 8.139 7.034 6.629 6.125 7.556 7.696 10.439 12.755 11.407 8.645 10.965 10.292 8.457 7.692 11.532 14.165 14.293 12.080 13.314 13.659 14.860 13.950 12.945 12.310 11.629 13.193 12.493 10.820 10.620 11.651 11.679 12.142 10.827 13.582 14.004 12.714
+ 9.478 8.590 7.003 6.657 7.119 7.488 10.019 12.327 10.692 7.493 10.119 10.927 8.633 8.466 11.324 14.314 13.443 11.965 12.223 13.189 14.698 14.148 13.366 12.040 12.248 12.559 11.669 10.639 10.675 11.680 12.255 11.351 9.678 11.877 13.596 12.840
+ 6.667 6.571 5.593 5.723 6.098 4.726 10.647 12.358 10.719 7.883 9.641 10.871 9.354 9.634 11.965 12.845 12.573 13.455 13.698 14.316 13.490 13.157 14.106 12.443 12.057 11.473 10.842 10.162 10.712 12.049 12.329 11.355 10.287 13.729 14.280 12.712
+ 7.010 7.337 6.988 6.312 5.205 6.715 10.448 12.128 10.148 8.142 10.110 10.597 7.730 9.784 12.443 12.652 13.360 12.716 12.918 14.011 14.209 13.281 12.634 11.417 12.486 11.708 11.124 8.933 9.962 11.626 12.494 11.705 10.136 12.651 13.828 12.472
+ 7.422 5.740 6.518 5.314 5.123 6.236 10.356 11.815 9.673 9.159 9.731 10.880 8.880 9.637 12.608 12.721 13.992 12.204 11.791 12.741 12.566 13.677 13.573 12.119 11.276 11.523 11.371 9.197 10.141 12.109 12.730 12.209 9.922 12.664 13.565 11.904
+ 5.374 5.710 5.754 6.808 7.667 8.716 10.459 11.737 9.633 9.075 8.727 9.166 7.791 10.440 12.587 12.459 14.183 12.100 11.678 13.785 13.237 14.864 13.384 11.518 11.811 11.786 10.871 9.702 11.257 11.966 11.987 11.181 10.581 13.224 13.992 12.425
+ 4.773 6.074 6.581 7.750 6.321 7.850 10.090 11.697 9.844 9.045 9.089 9.876 8.413 10.893 12.251 12.454 14.160 11.994 12.556 15.270 16.411 15.655 13.038 11.053 11.613 11.695 11.145 10.047 11.179 11.621 11.418 10.930 11.007 13.378 13.123 11.565
+ 5.311 4.610 5.903 7.433 7.086 7.810 9.928 11.472 9.648 8.722 9.762 10.149 7.735 9.890 10.770 12.274 13.971 13.808 12.796 15.817 15.884 13.789 12.767 11.587 11.758 11.183 10.827 10.276 10.643 11.101 11.538 11.046 11.442 13.545 13.224 11.650
+ 6.028 6.912 5.268 7.459 7.966 7.323 9.249 10.902 8.946 10.352 10.976 10.513 8.159 10.675 11.592 12.293 11.640 14.327 14.679 14.274 13.971 12.473 12.508 11.245 11.324 10.662 11.281 10.893 9.873 10.507 11.112 10.151 11.311 12.686 12.916 11.481
+ 6.968 6.912 5.931 7.282 8.078 8.675 9.159 9.791 8.786 11.386 12.685 11.636 7.736 9.527 11.296 12.274 11.197 14.333 14.605 14.685 15.002 13.330 12.683 12.655 12.026 10.986 10.903 10.175 9.891 10.935 10.250 10.020 10.617 12.175 12.969 11.401
+ 6.056 5.066 4.352 4.799 8.463 8.941 9.876 9.856 7.670 11.592 12.256 11.037 7.553 10.097 11.280 12.188 12.188 12.287 12.261 13.076 13.899 13.527 12.797 12.356 11.034 12.150 11.868 11.336 10.293 10.942 11.428 9.463 11.006 11.810 12.340 11.862
+ 5.913 6.194 6.037 5.760 7.924 8.363 8.460 9.559 7.693 11.393 12.329 10.174 6.961 9.010 11.600 13.247 12.874 13.014 13.153 12.794 13.452 12.189 11.594 12.251 11.635 11.499 11.832 11.015 9.687 10.136 11.129 10.260 11.678 12.321 12.732 11.294
+ 5.606 5.789 5.454 6.706 9.164 9.950 9.145 8.262 8.121 10.874 12.672 10.934 7.721 9.500 10.392 12.648 11.612 11.427 12.327 13.053 13.546 13.274 12.645 10.107 11.506 12.082 11.024 10.426 10.205 11.057 11.410 9.730 11.096 12.003 12.192 10.423
+ 4.978 6.492 6.328 6.226 9.909 10.800 9.188 8.822 7.838 10.402 12.088 9.831 7.077 9.442 11.127 12.450 10.398 11.775 13.149 14.060 14.616 13.135 12.209 10.788 12.518 11.364 10.761 10.562 9.647 9.932 11.373 9.903 10.527 11.567 12.308 11.627
+ 5.848 6.156 5.829 6.721 10.197 11.288 9.100 8.525 8.818 10.495 11.574 9.220 7.304 9.898 11.186 11.660 10.112 12.609 13.746 13.968 13.573 12.908 11.113 10.931 11.638 11.446 10.560 10.401 9.793 10.271 11.134 9.987 10.315 11.363 11.690 10.583
+ 5.452 5.870 5.359 6.472 10.519 11.113 8.251 8.108 9.399 10.462 11.624 9.598 8.203 9.801 11.738 12.195 10.077 13.289 13.389 13.198 13.147 11.401 11.320 12.007 10.924 10.732 10.979 11.038 9.150 9.941 10.180 9.184 10.622 10.813 10.379 10.965
+ 6.200 7.435 6.466 4.836 10.343 11.103 8.118 7.832 9.667 10.149 11.013 9.613 7.903 10.317 12.061 11.862 9.855 11.392 12.699 12.923 12.729 12.782 12.066 12.344 10.697 10.944 10.869 10.555 8.649 9.359 9.479 9.740 10.640 11.523 11.325 10.820
+ 6.037 7.627 6.925 6.119 10.303 11.060 8.075 8.666 10.273 10.800 10.796 10.339 7.989 9.691 12.004 11.142 10.166 11.092 12.412 13.888 12.539 11.277 11.474 12.186 10.299 11.071 11.238 9.663 8.655 9.504 9.467 9.971 10.336 11.313 10.595 11.703
+ 6.154 6.515 7.132 6.433 9.891 10.696 8.709 8.422 10.525 10.761 10.477 9.818 8.524 10.715 12.311 10.067 9.147 11.745 12.420 13.281 13.090 11.221 11.182 11.636 10.493 10.379 10.271 9.993 8.976 10.121 10.369 9.600 9.703 10.973 10.760 12.893
+ 4.824 6.743 6.603 6.207 10.164 10.671 8.282 9.621 11.059 10.425 10.139 9.383 8.945 10.808 12.234 10.352 10.194 11.550 12.586 13.202 11.997 11.026 11.999 12.313 10.629 9.963 10.740 10.218 8.948 9.133 9.733 9.516 10.471 10.094 10.876 12.991
+ 6.871 6.935 6.492 6.116 9.876 10.702 9.164 9.819 11.511 10.936 10.132 8.706 7.846 10.973 11.815 9.561 10.962 11.827 12.477 13.146 11.496 12.002 12.099 11.126 10.200 10.497 9.732 9.831 9.360 9.767 9.977 9.810 10.518 10.670 10.355 11.824
+ 5.727 4.751 5.304 5.053 9.142 9.846 7.654 9.470 11.320 9.949 10.114 9.933 8.173 10.465 10.767 9.603 9.153 12.064 12.458 13.119 12.217 11.051 10.730 10.642 9.938 11.067 11.132 9.985 9.826 10.181 10.342 10.152 10.671 11.631 10.213 11.026
+ 6.889 6.974 6.425 6.508 9.059 10.121 8.062 9.254 11.503 10.190 9.505 9.854 8.541 9.457 9.289 9.171 10.001 11.538 12.512 13.092 12.313 11.609 10.560 9.761 10.061 9.978 10.509 10.876 9.294 9.738 10.002 9.023 10.588 10.868 10.827 12.276
+ 9.704 10.130 10.256 10.107 9.490 10.748 10.235 10.414 10.941 10.034 10.212 10.249 9.998 9.918 10.842 9.240 9.615 11.558 11.465 11.828 12.123 11.144 10.071 9.969 9.961 11.118 10.325 10.597 9.086 9.698 10.146 10.030 10.551 11.528 10.841 11.659
+ 12.154 12.320 11.934 11.265 11.345 10.870 11.344 11.126 10.091 10.363 11.356 11.203 10.643 9.993 10.788 9.340 10.535 11.938 12.739 13.182 13.157 10.377 10.803 9.742 9.628 11.090 11.245 9.374 8.697 10.588 9.836 10.002 10.576 11.090 10.127 11.271
+ 8.515 8.473 8.074 6.481 9.424 10.220 7.674 9.502 11.790 10.313 10.037 11.163 8.966 9.958 10.938 9.542 10.136 11.580 12.433 13.075 13.052 11.414 10.387 9.733 9.888 10.630 10.678 10.512 8.817 10.001 9.838 9.186 9.735 10.068 10.500 11.748
+ 5.110 6.319 6.202 5.815 8.991 10.193 8.240 9.711 12.038 10.621 8.789 9.534 8.205 9.698 10.410 9.609 10.024 11.686 11.952 12.146 11.593 11.315 10.462 10.418 9.864 10.386 11.097 10.655 8.246 10.320 10.148 9.231 9.687 10.118 9.941 11.235
+ 6.388 7.040 6.017 5.709 8.794 9.431 7.336 9.572 11.896 10.350 9.430 9.740 6.808 9.472 10.704 9.460 8.362 11.227 11.862 12.304 12.089 9.936 9.751 9.681 9.566 10.182 9.745 9.505 8.656 9.327 9.209 9.196 9.967 10.721 10.591 10.568
+ 6.568 6.669 5.314 3.853 8.104 8.602 6.472 9.130 12.013 10.672 9.053 8.919 7.328 9.409 10.921 10.346 9.667 11.304 12.022 12.261 10.875 10.243 10.403 10.022 9.952 9.397 9.876 9.699 7.698 10.408 10.056 9.989 10.063 10.472 9.963 11.579
+ 6.512 6.569 4.735 5.320 7.828 7.019 7.028 11.909 13.179 11.070 10.080 9.343 8.303 9.544 10.677 9.664 9.509 10.083 11.749 11.259 10.769 9.464 9.404 11.018 10.087 9.536 11.110 10.049 7.787 11.073 10.118 9.793 9.259 9.088 9.805 11.379
+ 6.787 6.735 4.822 5.795 8.277 7.874 8.532 13.026 13.632 10.761 10.537 9.585 8.004 8.859 10.899 9.066 9.335 10.535 12.055 11.090 11.243 9.647 9.706 10.001 9.013 9.495 10.940 10.743 8.036 9.086 9.706 9.704 9.802 9.024 10.512 11.282
+ 5.315 6.266 4.750 5.566 7.838 7.372 8.912 13.041 12.699 9.170 9.579 8.139 6.770 8.459 11.269 9.779 8.530 10.255 12.479 12.334 11.599 10.166 9.356 10.862 8.982 9.149 10.222 9.832 8.911 9.362 9.040 9.111 9.629 8.934 10.149 11.377
+ 5.588 6.305 6.055 6.628 5.713 6.916 9.491 13.208 12.949 9.635 10.570 9.307 7.350 8.948 11.394 9.402 7.769 10.879 12.931 12.005 11.113 9.851 8.535 10.023 9.252 8.809 9.618 9.496 8.035 10.323 9.446 8.870 9.324 9.863 9.894 10.555
+ 10.189 10.245 9.957 8.531 8.109 7.774 9.465 13.293 13.043 9.732 10.121 8.660 8.747 9.176 11.371 9.671 8.886 10.935 12.948 11.722 11.511 8.987 9.233 8.987 8.486 9.488 10.593 10.048 8.087 9.832 9.627 9.038 9.244 9.400 8.889 10.457
+ 10.726 9.714 9.021 7.504 8.007 8.663 9.981 12.568 12.163 8.852 8.946 8.179 8.922 8.308 10.964 9.448 9.092 11.391 12.691 11.225 11.298 9.266 9.530 8.978 8.609 9.622 10.589 10.453 7.916 9.681 9.119 9.367 8.913 9.282 9.362 10.047
+ 6.711 7.617 6.481 5.825 7.945 8.305 7.863 10.566 10.659 11.118 11.423 10.335 8.761 9.427 11.299 9.652 9.575 11.556 12.471 10.498 10.562 9.782 9.065 9.213 8.161 9.321 10.261 10.340 8.191 10.158 9.630 9.493 8.952 9.426 9.459 10.709
+ 7.489 6.468 5.824 6.801 6.379 7.050 7.740 9.344 11.051 12.049 10.780 9.571 8.544 8.761 10.559 9.351 9.737 11.204 12.189 10.773 10.572 9.015 7.950 10.060 8.919 10.003 10.335 10.564 8.347 10.091 9.107 8.741 9.185 9.220 9.135 10.212
+ 7.226 7.019 7.122 7.557 8.601 8.461 8.068 9.078 10.714 11.907 10.358 9.016 7.173 7.760 10.916 9.647 9.397 11.152 12.087 12.160 11.167 8.772 8.940 10.698 9.745 8.604 9.549 10.287 8.430 10.709 9.877 8.400 8.915 9.473 8.968 10.220
+ 5.329 6.068 5.719 7.163 8.001 8.104 6.181 6.959 10.318 11.491 10.546 8.494 6.867 7.784 10.971 10.229 9.263 11.184 11.931 11.830 10.648 8.985 8.783 10.651 10.059 8.884 9.101 8.137 8.587 10.275 9.653 9.165 10.116 8.532 8.742 10.441
+ 6.617 9.042 9.002 8.992 7.908 6.191 6.612 8.124 10.084 10.422 10.012 8.925 7.757 8.021 10.972 10.265 9.140 11.082 11.878 10.773 10.433 9.920 9.116 9.570 9.374 9.077 9.473 8.235 8.362 9.525 9.817 8.715 9.910 9.416 9.147 9.593
+ 12.504 12.556 11.887 11.447 10.936 10.207 10.535 10.277 9.073 8.904 9.990 8.801 8.188 9.160 10.843 10.416 8.954 10.393 11.870 10.536 9.950 9.248 10.287 10.530 9.450 9.667 9.133 9.113 9.217 10.324 10.099 8.434 9.715 10.030 10.024 9.309
+ 11.864 11.459 10.395 9.479 10.017 9.764 9.343 9.310 10.385 9.785 9.691 9.036 8.236 8.626 10.350 10.697 9.460 10.677 11.152 10.420 9.845 10.082 9.393 9.691 9.247 9.861 9.619 8.603 9.030 10.206 10.587 8.392 9.838 10.317 9.903 9.923
+ 7.712 8.900 8.902 7.564 8.937 9.437 9.485 9.903 9.051 9.466 9.919 7.780 9.738 9.943 10.936 11.300 10.684 10.548 11.751 12.010 11.970 9.911 9.068 10.491 10.347 9.353 10.800 10.143 9.357 10.789 10.625 9.519 10.193 10.200 10.192 8.979
+ 8.357 7.923 7.945 8.361 8.639 10.540 11.111 9.333 9.788 9.904 10.397 9.558 9.529 9.773 10.302 11.180 10.104 10.326 10.945 10.730 11.376 9.398 9.799 10.109 11.327 10.054 10.441 9.859 9.423 10.326 9.794 9.931 9.529 10.575 10.655 9.709
+ 9.559 10.407 9.017 9.040 10.639 10.428 10.698 9.100 9.479 10.222 10.000 9.724 10.197 10.514 9.685 11.206 10.611 9.414 10.624 10.828 11.007 10.088 10.072 10.145 11.004 10.545 10.153 10.645 10.508 11.048 10.596 10.450 11.018 11.700 11.226 10.629
+ 8.119 10.021 10.483 10.859 10.986 12.208 10.946 9.906 9.898 10.397 10.868 9.877 9.824 11.289 10.493 11.864 11.433 11.130 11.578 10.295 11.069 10.547 10.784 9.815 10.413 11.006 11.216 11.837 11.587 10.619 11.214 11.141 11.244 10.768 11.328 10.460
+ 8.484 8.417 9.737 10.514 10.208 10.633 10.826 10.980 9.285 11.026 11.418 9.505 10.778 10.781 10.540 11.310 11.084 12.161 12.153 11.394 10.763 10.551 10.889 10.523 10.812 11.184 10.899 11.648 11.127 10.317 10.779 10.750 11.020 10.824 11.500 10.912
+ 9.313 9.436 9.350 8.866 9.588 10.114 9.716 10.772 10.561 10.591 11.641 10.266 9.880 8.854 9.986 11.238 12.182 11.593 11.786 10.429 8.855 9.411 10.645 10.152 10.519 10.823 11.616 11.187 10.702 10.378 10.066 10.675 11.586 10.080 11.363 10.172
+ 8.411 9.205 8.358 10.131 9.953 9.164 9.138 10.621 9.964 10.942 10.900 9.661 10.784 10.387 10.008 10.591 12.762 12.509 11.169 9.914 10.255 9.701 9.880 9.823 9.648 9.885 11.203 11.027 10.858 9.911 8.917 10.467 11.373 11.638 11.429 10.085
+ 8.074 8.012 8.439 8.854 9.962 10.907 10.063 9.544 10.299 9.554 11.311 11.043 8.928 10.129 10.748 10.594 10.332 12.228 11.990 11.907 12.035 10.737 9.855 8.979 10.408 10.017 9.849 10.797 9.644 10.678 10.211 10.216 11.913 11.887 11.017 10.695
+ 10.017 9.600 8.858 8.175 10.764 10.715 9.761 8.391 8.267 10.003 11.585 11.729 9.352 10.854 11.082 11.614 11.882 13.188 11.608 10.669 11.615 11.237 10.591 9.842 11.064 11.554 12.023 11.393 10.721 11.318 10.295 9.724 10.530 11.180 10.840 10.582
+ 6.215 7.168 8.209 9.846 10.834 10.426 9.685 10.570 9.774 10.201 13.086 12.563 10.258 11.284 10.785 10.991 11.720 12.593 11.699 10.960 10.891 11.305 10.322 10.471 10.145 11.573 11.552 11.304 11.356 11.188 10.958 10.233 11.147 11.753 11.611 10.991
+ 5.648 7.297 7.790 7.507 7.426 8.418 9.910 10.694 11.021 9.344 12.021 12.034 9.527 10.798 10.381 10.585 11.174 11.918 11.869 11.246 10.859 11.067 9.989 10.173 10.273 10.926 11.619 11.504 10.398 10.730 10.714 10.847 11.400 11.719 12.052 10.989
+ 7.610 7.217 8.730 9.031 9.518 9.923 10.148 10.669 10.526 9.566 11.271 11.054 9.003 9.399 10.299 9.837 10.965 11.598 12.008 12.875 10.110 9.227 10.222 9.893 9.749 10.324 11.469 10.466 9.484 10.071 10.007 9.430 10.276 10.958 10.878 10.401
+ 8.919 8.327 7.931 7.231 9.789 9.836 9.818 11.222 11.101 10.007 10.756 9.338 8.915 9.611 10.647 10.534 10.891 11.610 11.430 11.830 9.433 8.893 9.376 10.189 10.322 10.543 11.334 10.434 9.083 10.572 10.761 10.273 10.397 11.161 11.858 10.965
+ 9.468 8.342 8.588 8.276 10.405 10.758 9.433 11.658 11.801 10.704 11.796 10.642 8.764 8.508 9.063 10.340 10.160 10.851 10.787 9.956 9.228 9.674 9.994 11.238 10.340 10.077 11.131 9.983 9.588 9.981 10.552 9.990 10.724 11.581 11.749 11.383
+ 10.121 10.217 10.480 9.755 9.244 10.018 10.368 11.598 11.396 10.463 10.395 9.667 9.331 8.482 10.724 10.958 10.937 11.492 10.272 9.782 9.200 9.708 9.430 10.052 9.114 9.424 11.470 10.885 9.748 10.125 9.393 9.299 10.779 11.069 11.247 10.813
+ 6.816 7.726 7.988 7.086 7.981 9.199 10.308 11.199 11.412 10.958 10.767 7.502 8.235 9.001 9.147 10.085 10.054 11.645 11.294 11.191 10.003 8.091 8.823 10.158 9.161 9.358 11.573 10.795 8.958 9.507 9.425 9.605 10.961 11.003 11.755 10.483
+ 6.463 5.638 6.380 7.609 8.243 9.690 9.471 10.858 11.174 10.866 10.521 8.264 7.543 8.556 8.754 9.602 10.761 11.862 11.116 11.234 10.497 8.999 9.337 9.546 9.471 9.583 11.583 10.472 8.592 9.747 8.718 9.091 10.759 11.347 11.657 10.179
+ 6.568 7.458 7.537 7.813 8.888 9.964 8.695 11.085 11.215 10.873 10.675 8.428 8.217 9.646 9.000 9.620 11.155 11.259 11.257 11.097 10.215 9.295 9.036 9.239 10.403 9.467 11.476 10.582 9.283 9.543 8.853 8.903 10.752 11.039 10.796 10.598
+ 8.761 6.825 5.845 7.222 8.402 9.337 7.609 11.055 11.177 11.038 11.202 10.530 7.843 8.739 8.742 9.953 10.609 11.520 10.568 11.944 11.385 9.347 9.487 9.157 10.396 10.774 11.317 11.254 10.184 10.327 10.469 9.495 10.848 11.294 11.116 9.450
+ 10.002 9.798 7.767 6.633 7.693 6.640 7.457 10.374 10.960 10.904 11.538 10.901 8.327 8.778 8.620 9.347 10.593 11.689 9.906 10.329 10.289 8.974 9.807 8.989 9.504 11.203 12.163 11.247 9.561 9.676 9.516 9.529 10.370 10.316 10.166 9.635
+ 9.167 9.474 7.445 7.315 8.491 8.498 7.240 10.568 11.061 11.127 11.158 10.361 7.622 8.685 8.254 8.431 10.501 11.428 10.628 10.762 10.465 9.354 9.696 9.760 10.409 10.985 11.435 10.355 8.773 9.182 8.940 9.184 9.931 9.889 9.902 9.301
+ 8.321 8.648 6.992 6.568 8.814 8.584 8.046 11.129 11.349 11.129 10.864 9.874 7.219 8.310 8.453 7.786 8.842 10.116 10.825 11.053 11.152 10.934 10.414 10.596 10.840 10.624 10.740 10.336 9.790 9.128 9.684 9.857 9.924 9.605 10.331 9.709
+ 8.445 8.703 7.066 6.992 7.067 7.432 8.073 11.376 11.339 10.723 9.485 8.030 7.852 7.809 8.065 8.748 8.903 9.155 9.942 9.986 9.400 9.463 9.043 9.281 9.594 9.145 10.947 10.335 9.286 8.567 9.642 10.092 8.706 9.177 8.755 8.755
+ 12.731 13.774 13.840 13.167 12.605 12.364 12.695 13.058 13.661 12.809 12.524 12.908 12.061 11.298 11.642 12.024 12.498 12.623 13.002 13.620 13.263 12.672 12.139 11.840 10.980 10.936 11.884 10.534 9.455 10.408 10.738 12.209 11.629 10.136 9.431 8.844
+ 15.025 15.695 14.891 13.506 13.721 14.345 15.075 15.387 15.192 13.874 14.077 14.094 13.342 12.544 12.938 12.700 13.093 13.706 13.883 15.459 14.598 13.685 13.339 13.042 11.969 11.901 13.035 11.600 10.641 11.337 11.775 14.021 13.560 11.600 10.543 9.290
+ 14.702 13.794 11.924 12.455 11.981 14.140 15.852 15.591 13.565 12.958 12.658 13.091 12.099 11.662 11.712 11.956 12.997 13.497 13.243 15.035 15.245 12.965 12.639 12.921 11.516 11.288 12.637 11.408 10.071 10.523 11.334 13.824 13.420 11.437 10.277 9.209
+ 12.019 10.767 10.372 9.619 10.098 12.078 12.631 11.781 11.448 10.891 11.744 9.418 8.470 7.528 9.189 9.777 10.503 11.029 11.384 11.246 11.972 9.430 9.222 8.725 8.349 8.707 8.935 8.584 7.866 8.913 9.215 12.063 11.316 8.489 8.484 8.323
+ 7.820 8.247 8.403 7.815 8.621 8.287 10.734 12.502 11.814 8.986 11.248 9.654 6.864 6.173 8.554 8.630 9.102 9.950 10.755 10.639 10.427 9.163 8.549 9.242 9.572 9.802 9.455 8.567 8.046 8.537 8.737 9.368 10.039 9.608 9.470 8.523
+ 5.347 6.686 7.275 6.383 8.624 8.648 9.890 12.044 11.689 8.170 10.751 10.354 6.710 7.147 8.845 8.942 10.182 10.069 11.368 11.435 10.124 9.142 8.027 8.073 9.689 10.139 8.631 8.741 7.307 8.775 8.471 9.143 10.528 9.689 9.730 9.530
+ 8.177 7.780 6.832 6.732 9.080 8.587 9.286 12.086 11.324 7.326 10.979 10.924 8.561 7.931 7.901 8.449 10.028 9.637 11.505 11.215 9.705 9.746 8.681 7.969 9.828 9.904 8.497 9.260 8.892 9.513 8.500 8.511 10.283 9.796 10.046 9.985
+ 7.156 7.591 6.063 6.276 9.043 8.561 8.718 11.652 11.064 7.710 11.396 12.224 9.318 7.419 7.108 7.861 8.726 9.228 11.561 12.698 11.052 8.708 8.838 8.863 8.710 9.807 9.605 9.361 7.557 9.142 9.285 8.381 9.923 10.475 10.875 10.745
+ 6.915 7.180 5.483 7.024 8.859 8.018 8.817 11.225 10.651 8.252 10.521 12.037 9.488 7.917 7.530 7.859 8.515 9.358 9.678 12.271 10.732 9.564 9.052 9.147 8.296 8.799 9.291 9.655 7.798 10.287 10.436 8.690 10.672 10.771 10.734 10.138
+ 5.023 6.090 6.920 6.597 8.221 7.363 8.542 10.363 9.767 7.492 11.328 11.980 8.324 7.064 7.993 8.516 9.039 9.049 11.449 12.300 10.388 7.967 8.118 8.442 9.078 8.570 9.405 9.254 8.074 10.547 9.800 9.568 10.544 10.899 11.145 10.769
+ 3.225 5.068 5.537 4.577 7.628 7.381 7.078 8.778 8.922 7.762 11.388 11.553 6.414 5.950 5.916 7.468 8.754 8.983 11.404 11.997 10.628 7.492 7.586 8.548 9.784 9.856 9.605 8.730 8.229 9.227 9.150 8.617 10.582 10.361 11.006 10.760
+ 5.953 5.151 5.410 5.184 7.527 7.231 5.484 6.326 7.589 8.077 11.680 11.128 6.156 7.017 7.421 8.292 8.348 8.542 11.743 11.093 10.087 8.695 7.495 8.612 8.709 9.000 9.064 10.004 8.791 10.306 10.159 8.211 9.261 9.950 10.752 9.466
+ 5.322 6.101 5.308 6.198 7.295 6.277 5.898 7.269 7.363 9.009 11.751 10.423 5.471 6.311 6.998 7.619 8.604 9.539 12.161 11.460 9.333 9.630 9.217 9.525 9.899 8.946 8.492 9.428 8.533 9.345 8.853 7.778 9.276 10.133 10.713 10.538
+ 6.013 6.557 4.751 5.164 6.562 6.048 6.712 6.271 6.456 9.738 11.691 9.550 5.690 7.862 7.697 7.532 8.614 10.604 11.389 10.648 11.031 9.059 8.370 10.019 9.417 8.289 9.567 9.634 8.271 10.090 9.915 7.891 10.084 9.925 10.651 10.964
+ 5.429 6.699 6.339 6.110 7.270 6.221 6.346 7.332 6.984 11.014 11.485 8.485 6.036 7.005 7.355 7.172 8.159 10.207 10.193 10.838 10.095 8.441 8.526 10.561 8.889 8.609 9.705 9.720 8.193 9.776 9.183 8.767 10.106 10.181 10.093 10.336
+ 3.900 4.259 4.973 5.961 7.270 6.376 5.170 4.612 5.881 10.786 11.218 8.079 5.441 7.124 7.306 7.320 8.361 10.178 10.157 10.405 9.631 8.301 8.386 9.975 7.539 7.736 8.737 10.088 8.841 8.497 8.541 7.431 10.669 9.651 9.909 10.443
+ 4.246 2.552 3.956 5.169 5.631 4.875 5.335 5.587 6.167 10.364 10.512 6.837 4.949 6.673 7.170 7.589 7.968 10.536 10.187 9.561 9.071 8.146 8.603 9.218 7.352 8.605 7.929 9.787 8.415 7.545 8.406 6.917 9.410 9.750 9.864 10.937
+ 3.807 4.210 5.292 4.600 4.821 4.912 6.469 6.833 6.929 10.368 10.037 4.828 4.771 6.999 6.713 7.680 8.537 10.726 10.932 10.015 7.982 7.975 8.211 8.201 7.877 8.904 8.753 9.253 8.604 8.083 8.234 7.057 9.533 9.831 10.480 10.391
+ 4.511 3.752 3.570 5.167 5.873 5.616 4.356 4.713 8.302 10.889 10.075 5.399 5.819 5.311 5.988 6.644 7.571 11.161 10.691 9.652 9.231 8.166 8.439 8.501 7.819 8.136 8.554 8.862 8.625 8.000 7.174 7.165 9.032 10.256 10.987 9.460
+ 4.725 4.931 4.614 5.490 5.302 6.579 7.991 7.792 7.394 10.655 10.039 6.935 5.842 5.608 6.360 7.846 9.071 12.054 10.434 9.974 8.787 6.776 7.792 8.241 7.796 7.208 7.497 8.839 7.909 7.482 7.001 6.786 9.480 10.893 10.575 10.121
+ 5.010 4.542 4.946 5.223 4.030 4.818 7.880 7.895 7.250 9.991 9.268 6.994 5.798 5.182 5.592 6.499 9.120 11.809 10.492 9.811 7.537 6.569 7.686 8.551 8.247 7.784 7.434 7.840 7.529 8.133 7.508 6.738 9.760 10.273 10.233 9.371
+ 5.308 5.314 4.573 3.346 4.991 5.503 7.614 7.125 7.959 9.465 8.005 7.563 5.948 5.890 6.950 6.848 10.987 11.372 9.800 9.035 8.404 7.887 7.615 7.257 6.215 7.282 7.261 8.100 7.974 8.082 7.865 7.050 9.477 9.547 9.818 8.298
+ 2.984 2.890 1.195 2.767 3.532 3.679 5.057 5.147 8.208 8.860 6.879 5.591 4.918 7.186 7.158 6.869 10.862 10.323 8.556 10.035 8.443 7.216 6.716 6.792 6.442 5.653 7.763 8.885 8.309 7.788 7.614 6.760 9.016 9.248 9.536 9.161
+ 2.991 3.509 3.239 4.706 4.850 5.560 5.457 5.921 7.444 7.775 5.134 5.995 4.731 5.813 7.306 7.183 9.323 8.916 9.820 9.652 8.750 7.779 6.559 6.900 6.413 6.511 6.611 8.178 7.031 7.586 7.170 6.322 8.930 9.296 9.481 9.515
+ 4.467 4.704 4.730 4.352 4.527 4.217 3.967 5.232 5.798 6.764 5.774 6.279 5.328 5.932 6.384 6.456 8.511 8.603 9.394 9.799 8.976 7.403 6.723 6.858 5.696 5.607 6.926 8.556 7.461 7.555 7.136 5.412 8.712 9.475 10.177 9.356
+ 5.234 6.921 6.078 3.839 5.803 6.765 7.196 7.432 7.507 5.791 5.436 5.898 6.687 5.645 6.441 7.347 8.259 8.705 9.469 9.121 6.783 7.145 7.408 6.858 6.785 5.657 7.107 7.713 7.538 6.976 6.018 6.089 8.849 9.351 10.219 9.278
+ 6.886 6.850 7.423 6.363 7.550 7.891 8.012 6.952 6.007 4.657 6.449 8.360 8.117 6.964 7.100 7.942 7.945 7.746 9.117 9.343 6.539 8.184 8.573 7.717 7.476 8.175 6.873 8.743 8.356 7.811 6.650 6.327 9.332 10.207 9.444 8.674
+ 5.934 6.537 6.882 5.888 8.013 8.453 8.841 7.677 5.966 4.408 6.297 7.460 7.653 7.948 7.443 8.781 8.679 8.233 8.709 8.735 8.523 7.634 6.057 7.604 7.780 8.758 7.020 9.685 9.117 8.810 7.254 7.147 8.634 9.224 9.460 8.059
+ 6.509 5.391 6.782 7.030 7.424 6.729 7.629 6.716 5.583 4.066 6.875 7.472 6.964 8.483 9.532 9.131 8.817 8.805 9.518 8.829 7.419 7.418 7.662 7.920 7.955 7.557 8.295 9.104 8.805 7.846 6.716 6.782 7.529 7.921 8.011 8.371
+ 6.519 5.996 5.853 6.619 7.056 7.911 6.744 6.679 5.649 4.535 6.774 7.671 6.904 8.724 8.702 7.653 6.561 8.066 8.360 8.231 8.165 7.040 6.724 6.843 6.322 5.564 6.497 7.200 8.078 7.471 7.284 6.505 7.460 8.225 7.702 7.089
+ 7.295 6.635 6.518 5.972 5.924 7.672 8.319 7.766 5.467 5.360 5.043 6.272 6.869 6.117 5.618 6.685 5.931 7.630 8.082 8.550 7.763 7.006 5.244 4.982 5.641 5.377 4.951 5.677 6.071 6.183 7.147 6.533 6.863 7.880 7.944 6.763
+ 8.346 7.705 7.153 6.844 5.953 5.895 5.994 6.371 6.362 7.000 5.887 5.711 5.938 5.689 5.660 5.875 6.183 6.992 8.996 8.000 5.376 4.916 5.110 5.314 4.828 5.140 4.728 5.117 6.247 5.977 6.393 6.037 8.083 8.385 7.877 6.087
+ 7.744 6.712 4.857 4.659 5.666 6.541 6.154 6.578 5.476 5.528 4.643 6.149 5.302 6.590 6.612 5.753 7.301 7.505 7.908 7.846 4.206 4.910 5.075 6.509 6.519 6.370 6.699 6.037 6.220 6.502 6.831 5.447 6.684 6.860 7.162 5.299
+ 7.533 6.531 7.058 7.257 7.719 7.249 6.297 6.756 6.491 5.546 5.201 5.034 5.781 6.390 7.670 7.008 7.205 7.178 7.971 7.887 5.866 5.527 4.956 6.025 5.835 5.978 6.761 6.086 6.694 7.117 6.902 5.913 5.637 6.102 6.077 4.576
+ 10.043 8.675 8.206 6.879 7.623 7.855 8.127 7.888 6.005 5.448 6.563 6.477 5.483 5.894 6.770 6.917 7.336 6.178 6.776 7.512 6.690 5.328 5.680 5.980 6.883 6.521 6.568 7.214 7.320 7.402 6.735 6.441 6.331 7.553 6.973 5.998
+ 9.592 8.450 8.770 7.980 7.052 7.318 8.438 7.812 5.439 5.820 6.694 6.510 5.394 6.850 7.216 6.825 7.622 7.863 7.403 6.179 6.139 5.135 5.262 5.535 6.285 6.049 6.451 6.472 6.333 6.541 6.449 6.989 6.634 6.164 5.859 5.081
+ 9.421 8.306 6.864 7.445 7.743 8.060 7.638 8.103 7.239 6.867 6.867 6.166 6.936 7.078 5.946 6.352 7.251 7.005 6.727 6.252 5.337 5.114 4.753 4.676 5.433 6.218 6.496 6.996 6.977 6.481 6.623 5.724 5.993 5.899 5.480 4.711
+ 10.237 10.255 9.405 8.437 9.486 9.080 8.276 5.383 5.475 6.358 5.242 5.920 6.778 7.435 6.968 7.461 8.218 7.469 5.961 5.461 5.936 5.762 5.547 5.531 5.827 6.094 6.803 6.993 8.051 7.909 7.563 6.827 7.459 7.209 6.092 5.377
+ 8.410 8.596 7.404 7.422 9.297 9.092 8.050 7.156 5.566 5.690 6.684 7.217 7.766 7.815 8.096 8.235 7.370 6.701 5.763 5.128 5.941 6.046 5.759 5.061 5.340 5.591 5.990 7.340 6.685 6.942 7.433 7.309 6.638 6.438 5.010 5.265
+ 6.755 6.616 7.341 6.263 7.944 9.230 8.867 6.358 4.568 5.143 7.135 6.683 7.033 7.082 7.047 6.779 6.995 6.453 6.408 5.149 5.845 5.207 5.121 5.628 5.441 5.177 6.438 7.092 7.023 6.317 8.285 8.097 6.870 6.354 5.450 4.880
+ 7.329 5.384 6.091 5.536 4.533 5.312 6.491 5.655 5.680 5.063 4.273 4.575 3.993 5.292 5.517 6.071 6.168 5.581 4.998 4.286 3.715 4.951 4.767 4.503 4.679 4.187 4.164 5.171 5.243 5.829 5.629 4.853 4.983 5.478 4.216 3.763
+ 5.409 4.028 4.636 6.046 5.434 4.978 5.890 5.428 4.405 3.464 4.072 4.322 4.794 5.723 5.404 4.578 5.139 5.250 5.270 5.485 5.327 5.310 5.274 4.424 5.014 4.738 4.753 5.472 4.915 4.794 4.364 4.467 4.063 4.466 4.308 2.361
+ 4.087 4.541 3.697 5.278 6.262 6.893 7.218 5.947 3.941 3.885 4.902 5.294 4.728 4.676 4.422 5.907 5.907 6.423 6.337 5.379 4.735 5.457 6.118 5.675 4.944 4.639 4.247 3.961 3.852 4.261 3.554 3.540 3.254 2.954 3.009 2.565
+ 5.057 4.929 4.712 2.295 4.201 5.073 5.481 4.251 4.779 4.493 3.791 3.896 4.480 5.732 5.210 5.517 5.187 4.390 4.203 2.987 3.797 5.675 6.902 6.694 5.340 4.854 4.149 4.104 4.054 3.755 3.158 3.373 2.905 3.310 2.989 2.934
+ 5.580 5.735 3.689 4.196 4.670 5.471 5.754 5.928 4.406 4.356 3.897 4.556 4.499 6.348 6.042 5.021 5.051 5.076 4.909 4.995 4.353 5.347 5.898 6.864 6.440 6.493 7.219 8.033 6.974 4.459 4.234 5.022 4.718 5.551 4.569 3.358
+ 5.336 6.090 4.821 2.584 5.248 6.978 7.188 6.708 5.261 5.984 5.576 4.305 2.991 5.626 5.482 4.444 3.982 5.769 5.371 6.317 5.585 5.794 5.527 6.133 7.933 7.836 8.326 8.768 7.751 6.986 6.545 7.034 6.630 7.287 5.755 4.492
+ 4.589 5.858 5.565 5.083 4.442 5.008 6.968 7.049 6.865 5.376 4.029 4.865 3.566 3.640 4.586 4.618 3.065 5.302 5.560 5.621 5.101 6.665 6.514 4.984 8.147 8.025 7.797 8.302 8.561 7.681 6.671 7.420 6.877 6.977 6.868 5.443
+ 7.050 6.358 5.304 4.288 4.504 5.991 5.629 5.698 6.215 5.318 3.264 3.095 4.151 4.645 4.911 4.851 5.094 4.611 4.692 4.972 4.795 4.674 6.342 6.029 8.744 8.425 7.155 7.243 8.505 6.391 5.903 6.871 6.868 6.381 6.501 6.886
+ 5.927 4.750 3.450 4.013 5.162 6.482 6.015 5.938 5.970 5.636 4.758 4.356 5.304 4.869 4.985 4.224 5.298 5.406 4.990 5.582 6.047 5.836 6.670 7.974 9.174 7.631 7.702 7.566 7.918 6.328 6.216 6.642 6.785 7.226 7.069 6.610
+ 4.873 5.773 5.957 4.948 4.299 5.808 6.829 5.314 5.435 7.352 5.940 6.306 8.156 6.710 5.432 5.199 5.324 5.894 5.256 6.874 7.890 8.512 8.236 8.879 8.209 7.659 8.968 8.457 7.106 6.776 6.823 7.368 6.886 6.838 7.611 6.456
+ 4.243 6.397 6.440 4.718 5.647 5.837 6.418 4.029 6.571 8.383 6.737 6.442 8.837 7.160 5.251 4.625 5.581 6.721 5.761 7.621 8.277 7.796 8.187 8.535 7.991 7.718 8.104 8.663 7.330 6.462 7.326 7.008 6.098 7.157 7.592 6.656
+ 6.183 7.094 6.866 4.399 5.062 6.140 6.390 5.283 6.358 7.346 7.102 6.461 8.385 6.871 5.080 4.739 6.275 8.461 7.316 8.149 8.440 7.929 6.814 8.095 8.662 8.019 8.780 7.830 6.854 6.700 7.353 6.951 5.457 6.045 6.303 5.297
+ 4.762 6.338 7.031 4.901 5.770 6.507 7.616 6.876 7.785 9.574 8.746 5.099 7.944 7.819 6.530 6.831 6.898 9.296 8.361 10.384 9.493 8.607 7.870 8.234 8.111 8.379 9.015 8.231 7.204 7.272 7.354 6.352 6.058 6.357 6.578 4.686
+ 4.838 6.911 6.803 3.952 3.469 7.387 7.949 5.129 7.193 9.765 8.984 5.914 9.582 8.785 7.280 8.358 7.644 10.334 9.448 11.075 9.689 9.510 7.723 7.133 7.804 8.704 8.934 8.789 8.017 7.081 6.277 6.244 5.952 5.912 6.025 5.108
+ 3.727 6.249 5.970 2.480 3.623 8.045 9.035 6.681 5.427 8.361 8.316 6.875 10.156 9.407 8.436 9.694 8.627 11.801 10.256 11.493 9.624 8.443 8.034 7.688 7.615 8.065 8.558 8.899 8.540 6.789 5.760 7.379 6.196 6.210 5.418 4.148
+ 4.836 6.162 6.661 4.524 3.603 8.205 9.439 7.013 6.274 9.110 9.103 5.973 8.900 9.608 8.502 10.870 9.211 12.687 11.717 11.339 10.146 8.626 7.112 7.903 8.909 9.475 10.213 9.839 8.754 7.893 6.677 6.196 6.201 6.555 5.796 4.410
+ 4.455 6.182 6.926 4.768 4.385 8.099 9.683 7.801 5.118 8.314 9.330 6.163 10.084 10.892 7.614 11.235 10.358 12.914 12.451 10.421 10.394 8.295 7.225 7.104 9.129 9.728 10.963 10.495 9.358 8.556 7.310 5.972 6.220 6.020 5.085 4.255
+ 4.884 6.968 7.258 4.270 4.297 7.735 9.895 8.447 4.762 9.302 10.134 6.854 10.151 11.546 8.680 11.977 11.154 12.527 12.395 10.780 10.845 7.889 6.899 7.430 8.595 9.580 11.362 9.770 9.798 9.414 7.143 5.347 6.018 6.958 6.211 4.445
+ 3.021 6.804 7.323 5.345 5.198 8.123 10.019 8.440 4.937 10.050 10.798 7.458 10.412 11.910 9.203 12.468 11.638 11.431 11.751 10.624 10.821 7.073 6.693 7.475 8.580 9.212 11.181 9.984 9.805 9.751 8.852 6.565 6.707 7.417 7.738 5.518
+ 4.690 6.481 7.012 4.179 3.565 7.775 9.972 8.447 5.673 10.409 11.084 7.780 10.751 12.011 8.945 12.629 11.874 11.601 11.704 10.202 10.577 7.458 6.791 7.139 8.765 9.423 11.090 9.846 10.289 10.337 9.707 7.080 6.441 8.118 8.308 6.340
+ 5.013 6.703 7.130 5.177 3.335 7.875 10.107 8.840 4.375 9.788 10.862 7.867 10.280 11.909 9.115 12.587 12.039 10.595 10.739 9.580 9.911 7.352 7.056 6.987 7.649 8.499 11.435 10.731 10.594 10.599 10.902 7.199 6.341 7.710 8.575 5.982
+ 5.573 6.023 7.067 5.404 3.308 7.180 9.642 8.821 4.780 8.896 10.413 7.767 9.634 11.855 9.595 11.849 11.842 8.814 9.365 9.136 9.212 7.288 7.777 6.364 6.915 8.448 12.294 11.216 10.307 10.286 10.326 7.897 6.262 7.365 8.142 5.806
+ 5.453 6.959 7.369 5.032 4.898 5.969 9.265 8.984 5.031 9.212 10.206 7.322 8.918 11.411 9.501 10.319 10.931 8.506 9.750 8.178 9.312 6.873 7.199 6.358 7.365 8.190 11.919 10.766 8.947 9.527 10.491 7.709 6.837 6.482 7.827 6.538
+ 6.628 6.795 8.239 7.158 4.551 6.586 9.952 9.581 4.907 9.081 9.901 6.415 8.725 10.131 8.103 8.956 9.900 8.341 8.738 8.196 7.738 6.780 5.907 6.694 8.208 8.317 10.493 9.712 8.075 8.513 9.096 7.911 7.129 6.656 7.658 6.231
+ 4.599 7.672 8.825 6.937 3.090 6.586 9.971 9.665 5.625 9.201 10.260 7.561 8.342 9.474 7.743 8.587 9.087 7.930 9.638 9.051 9.417 8.408 7.698 8.337 10.067 8.174 8.568 7.499 8.138 7.745 8.442 7.621 6.506 5.889 6.418 5.752
+ 5.764 7.774 8.869 6.653 5.879 8.582 9.759 8.569 7.045 9.202 10.087 6.969 7.101 8.471 7.903 8.583 9.902 8.786 9.890 9.400 9.047 8.042 8.049 8.061 9.657 7.512 8.171 7.383 6.942 7.228 7.971 7.424 5.716 5.490 6.726 5.963
+ 5.382 7.998 9.353 7.982 5.461 8.198 9.991 9.582 7.500 8.860 9.041 7.373 6.937 8.770 7.570 8.281 9.678 8.562 9.550 8.987 8.168 7.847 7.042 7.540 8.876 6.992 6.836 6.563 6.550 6.714 7.333 7.071 5.273 5.416 5.982 4.529
+ 6.192 8.057 9.397 7.696 4.760 5.498 8.042 8.706 6.382 7.927 9.585 8.062 6.830 8.216 7.260 7.043 8.604 6.878 7.922 8.083 8.228 6.818 7.271 6.945 7.878 6.521 7.000 6.456 5.779 5.935 5.995 5.169 4.858 5.419 5.929 4.385
+ 11.447 11.689 11.428 10.111 9.992 10.334 10.971 10.521 10.009 9.612 9.358 7.767 8.641 8.644 7.828 8.908 9.233 7.585 8.423 8.456 7.956 7.192 7.321 6.983 7.431 6.206 6.436 6.882 6.389 6.617 6.118 5.714 5.529 4.359 5.353 4.487
+ 12.182 11.718 10.764 10.207 9.045 9.949 10.699 10.585 9.982 9.265 7.900 7.328 8.163 8.143 7.324 7.864 9.002 8.355 9.141 7.677 7.716 7.224 7.710 6.888 6.120 6.271 6.068 6.055 6.171 6.732 6.952 6.497 6.575 5.299 5.306 5.532
+ 7.415 8.988 9.904 8.065 6.126 6.489 6.509 5.996 5.761 5.550 7.213 6.269 5.755 6.592 5.676 8.119 8.101 8.709 8.929 9.710 10.272 7.801 8.555 8.199 7.980 7.299 6.714 6.467 6.155 6.205 6.657 6.592 5.974 4.726 5.118 4.406
+ 6.442 8.062 9.535 8.247 6.066 8.103 9.327 7.891 6.380 4.702 7.443 6.489 6.373 6.585 5.922 7.609 7.521 7.533 8.652 9.526 10.789 8.552 8.790 8.680 8.073 7.785 8.110 7.333 5.805 5.339 6.279 5.231 5.215 4.796 5.321 3.843
+ 8.288 8.104 8.275 8.020 6.319 8.999 10.785 9.215 6.555 5.752 6.739 6.459 4.992 6.870 5.874 6.658 6.199 8.584 9.032 10.033 10.749 9.179 9.245 8.247 7.710 7.912 8.458 6.744 5.743 6.344 6.479 6.064 5.692 5.319 4.510 4.040
+ 9.491 8.918 8.409 7.706 7.418 9.604 11.592 10.443 7.272 6.232 7.261 6.429 6.709 7.698 5.866 5.680 5.461 9.723 9.358 11.666 11.407 9.726 8.357 8.585 7.819 7.485 7.352 6.129 7.141 6.945 6.027 4.479 5.142 6.218 5.101 3.497
+ 4.905 6.881 7.697 5.646 5.536 10.101 11.603 9.599 4.955 6.786 6.345 3.620 6.121 6.244 5.356 5.536 6.224 10.996 10.440 12.736 12.258 10.864 9.063 8.488 7.394 6.148 6.710 6.847 6.894 6.913 6.842 5.493 4.618 5.876 5.173 4.464
+ 6.824 7.172 7.856 6.063 6.509 10.755 11.682 8.816 6.142 8.328 7.765 4.482 6.617 6.008 4.978 6.125 7.774 11.152 9.985 11.585 10.337 10.958 8.585 7.410 7.244 5.865 6.249 5.625 6.663 7.435 6.401 5.991 5.631 5.658 5.078 3.842
+ 6.848 6.012 6.870 5.787 7.145 11.656 12.270 9.722 7.121 9.037 7.711 5.828 7.463 6.077 4.796 5.730 8.572 10.465 9.520 10.907 9.406 8.635 7.942 6.204 5.446 5.257 6.139 5.989 6.726 7.352 6.504 5.822 6.168 6.106 5.494 4.111
+ 2.165 4.811 6.150 6.383 8.437 11.685 11.206 7.694 7.729 9.329 7.751 6.191 7.931 5.920 5.888 6.048 7.335 8.331 9.031 10.086 9.614 9.173 7.676 6.583 5.453 5.658 6.038 5.620 6.238 6.608 6.020 5.027 4.816 5.411 5.656 4.059
+ 5.662 6.379 5.706 4.693 9.192 11.430 10.098 7.122 7.944 8.725 6.098 6.971 7.779 6.304 5.717 6.021 7.194 7.659 9.399 9.889 9.900 8.880 8.044 6.757 6.456 5.873 5.224 5.178 6.391 7.404 7.024 5.155 5.148 5.361 4.786 4.175
+ 6.783 7.060 7.034 6.805 10.108 11.666 9.967 5.153 7.694 8.231 5.818 4.273 5.269 6.452 6.520 5.171 7.136 8.503 9.180 10.356 10.236 10.493 8.657 7.884 7.877 6.919 7.037 7.644 6.968 7.383 7.561 6.507 6.268 7.144 6.676 5.794
+ 7.505 8.541 8.535 7.212 10.431 11.794 9.517 5.972 6.120 6.845 7.354 5.693 4.461 6.906 7.093 5.676 6.998 9.280 9.173 11.501 10.708 10.596 9.219 7.972 7.492 8.083 8.714 8.224 8.158 8.371 8.577 6.922 6.976 7.374 7.357 6.776
+ 7.528 8.526 8.599 7.327 11.084 12.126 10.342 7.481 7.654 7.296 7.021 6.577 5.438 6.660 5.862 6.672 6.712 9.769 9.633 10.702 9.893 9.405 9.144 8.669 8.495 9.038 8.222 8.008 7.459 8.206 7.217 6.185 6.851 7.216 6.817 6.560
+ 7.861 7.477 7.418 6.767 10.122 10.224 9.561 7.960 8.521 6.628 6.351 7.323 5.967 6.414 6.115 7.871 7.435 8.768 7.911 9.453 10.830 10.124 7.798 10.249 9.333 9.091 8.570 8.253 8.228 7.583 7.138 5.805 6.761 6.929 6.871 5.953
+ 5.759 6.939 5.983 5.856 10.048 10.676 8.977 8.417 9.121 6.573 5.116 5.294 5.614 6.892 6.475 7.738 7.467 8.164 8.269 9.521 10.309 9.358 8.690 10.735 10.023 8.617 7.079 7.341 7.705 7.623 7.297 5.746 5.889 6.563 6.383 5.443
+ 7.994 7.067 5.614 6.138 9.287 9.407 7.257 9.252 9.732 6.843 6.113 6.025 5.058 5.640 5.802 5.245 6.462 6.831 7.280 8.131 8.256 8.508 8.775 9.176 9.881 9.290 8.847 7.773 8.081 7.654 7.411 5.116 6.359 6.741 7.162 5.431
+ 6.658 7.412 6.400 7.000 9.019 9.244 8.688 9.224 9.121 5.516 6.184 6.349 5.842 5.944 6.033 6.687 6.458 5.740 6.712 8.747 8.741 9.736 8.545 7.736 8.641 8.815 10.294 9.125 8.249 7.431 6.860 5.048 6.058 8.177 7.206 5.921
+ 5.833 6.759 5.902 6.463 8.134 8.626 7.410 10.097 9.784 5.869 7.180 6.666 5.887 6.067 5.890 5.200 5.320 5.809 5.920 9.064 9.538 10.227 8.531 7.999 8.320 9.376 9.830 9.609 8.548 7.323 7.589 7.587 6.969 8.491 7.685 5.758
+ 5.757 6.831 5.745 6.863 9.916 10.195 8.505 10.348 9.812 6.127 7.087 5.969 5.208 5.732 5.630 5.411 6.593 7.200 7.269 9.209 9.462 9.353 8.078 6.729 8.072 8.797 8.717 8.575 6.990 6.856 7.924 8.742 8.120 8.637 8.359 6.310
+ 6.803 6.277 3.678 8.154 10.125 8.803 7.686 9.567 9.052 4.885 5.962 5.444 5.605 4.450 4.922 5.794 6.100 6.261 6.322 9.395 8.905 8.377 6.449 5.871 7.183 7.614 7.599 7.541 7.481 7.416 7.412 7.516 7.709 8.011 8.191 5.659
+ 6.856 7.598 6.460 8.250 10.066 8.796 6.730 7.782 7.630 5.226 6.694 5.894 5.693 5.749 5.015 4.727 5.030 6.444 7.344 8.559 8.509 7.695 6.169 6.018 5.264 6.170 8.348 8.187 7.550 6.900 6.726 5.763 7.337 7.319 6.997 4.474
+ 6.690 6.779 5.260 8.034 9.169 7.807 7.522 8.388 6.948 5.487 5.970 5.503 5.660 5.832 5.737 4.435 4.426 6.217 5.574 6.976 5.642 5.812 6.174 5.466 4.541 4.999 7.473 8.118 6.378 5.893 6.254 5.840 5.798 7.051 6.319 4.215
+ 5.850 6.138 4.482 7.650 8.221 7.419 6.101 7.462 5.344 5.421 5.710 5.651 5.281 4.647 5.187 4.799 4.471 5.400 5.966 7.407 6.320 5.257 4.152 5.548 5.332 5.418 5.615 6.801 5.090 6.220 5.392 5.005 5.610 5.981 6.055 3.882
+ 5.953 5.870 4.144 8.308 9.953 8.888 6.114 6.667 4.146 4.660 5.616 4.743 3.994 3.427 4.881 5.149 4.369 5.071 6.486 5.701 6.624 6.105 5.018 5.771 5.847 5.004 5.921 6.371 5.619 5.203 4.329 4.450 5.739 5.653 5.573 5.122
+ 6.065 5.430 5.288 7.206 8.831 8.455 4.623 5.541 5.348 3.864 4.710 3.325 3.834 4.510 4.707 4.825 4.506 6.004 5.136 5.639 6.912 6.658 5.671 4.605 4.559 5.747 6.211 6.420 5.516 5.041 5.517 5.253 5.629 6.141 6.283 4.969
+ 6.172 4.976 6.551 8.055 9.089 7.893 6.702 5.716 5.191 4.613 5.195 4.236 5.450 4.459 5.196 5.315 5.483 5.592 5.399 6.354 6.548 5.914 4.120 4.816 5.455 6.108 5.437 5.600 4.844 5.458 5.672 5.264 5.278 5.994 5.682 5.211
+ 6.374 4.351 5.299 7.829 9.409 8.215 7.156 7.775 7.368 6.919 6.231 4.631 3.599 4.512 5.342 5.146 6.293 5.688 5.011 6.058 6.785 5.733 4.347 4.567 5.792 6.774 6.597 6.246 6.741 6.000 6.440 6.514 6.140 5.503 6.440 5.755
+ 6.354 6.576 6.498 6.501 7.337 8.394 7.862 8.632 7.746 6.737 6.588 5.810 2.890 5.888 5.695 5.734 6.789 5.831 4.820 6.732 7.052 6.931 6.642 7.037 7.374 8.310 7.912 8.053 8.059 7.128 7.142 6.451 6.364 6.078 6.268 6.248
+ 6.011 7.120 5.936 8.228 8.420 8.031 8.036 8.920 7.247 5.600 6.195 4.071 4.397 6.370 6.620 5.820 5.892 6.104 6.353 6.844 6.963 7.200 6.971 7.504 7.177 8.571 8.596 8.293 8.780 7.709 6.264 6.828 6.811 7.136 7.159 6.478
+ 5.776 6.710 6.321 7.803 7.949 7.541 8.187 8.138 7.177 6.390 5.996 5.512 6.589 6.061 6.688 7.993 8.034 7.163 5.775 6.042 5.691 6.205 5.294 5.819 6.808 6.972 7.495 7.770 7.679 6.796 7.547 6.819 7.053 8.057 7.276 7.122
+ 5.027 5.775 5.720 7.877 8.673 8.483 8.988 8.254 7.886 6.580 6.338 5.356 4.634 6.184 5.948 7.120 7.742 7.260 7.048 6.863 5.541 5.548 5.465 6.542 7.279 6.881 8.158 8.060 7.637 7.677 7.812 7.961 7.512 7.752 6.935 7.516
+ 5.803 6.053 5.451 8.442 9.338 7.206 8.329 8.540 6.548 4.067 5.988 6.431 5.971 6.987 7.174 7.596 7.324 6.893 7.163 7.735 5.699 5.639 6.199 7.706 7.936 8.311 8.031 7.826 7.310 8.239 8.065 7.567 6.800 7.035 7.124 6.812
+ 6.202 6.033 6.627 8.555 9.983 8.722 8.054 9.072 7.882 5.456 5.573 6.311 7.479 7.211 8.103 6.939 7.482 6.890 6.222 7.858 5.354 5.657 6.632 7.268 7.982 7.844 7.301 8.001 7.998 7.521 6.845 6.778 7.111 6.721 6.986 6.452
+ 6.061 5.777 5.068 8.251 9.523 7.650 5.935 6.805 4.853 5.388 5.787 5.736 5.629 5.274 7.316 6.817 5.943 6.087 5.735 6.346 4.474 5.556 5.846 5.484 6.716 7.178 6.755 6.237 7.349 6.050 5.513 5.769 5.846 6.024 5.659 5.218
+ 5.800 6.466 4.629 7.662 9.293 7.518 6.929 7.913 6.049 4.630 5.440 3.747 3.698 4.189 5.130 4.616 5.302 7.046 6.566 6.890 5.697 5.192 4.487 5.311 5.050 5.517 5.657 6.332 5.633 5.563 4.351 4.273 4.470 5.196 4.062 2.733
+ 5.720 5.351 4.486 7.782 9.281 7.537 6.688 8.495 7.192 6.347 6.402 4.359 4.913 4.871 5.102 5.248 5.637 8.724 8.071 8.359 6.163 5.419 5.064 5.698 5.331 6.125 6.921 7.301 5.585 5.539 5.946 5.753 5.927 6.005 4.404 3.205
+ 3.865 4.409 5.188 7.101 8.955 7.436 6.489 9.143 8.186 8.107 8.263 5.365 6.355 5.218 5.700 5.894 6.683 9.664 9.508 10.383 7.096 5.533 5.180 5.269 5.633 6.344 7.735 8.691 6.399 5.246 5.151 6.707 6.779 5.989 4.448 2.637
+ 4.477 4.115 2.936 7.214 8.875 7.305 6.764 8.970 8.245 9.127 9.284 6.467 7.817 5.569 5.304 6.758 6.857 10.153 10.197 10.805 7.476 5.879 5.758 5.336 5.415 6.865 8.304 9.481 6.904 5.620 6.308 7.283 7.453 6.648 5.759 3.443
+ 2.526 3.747 3.811 7.042 8.709 7.194 5.957 6.307 6.328 9.389 9.667 7.141 8.438 6.638 6.865 7.365 8.082 10.862 10.653 11.104 7.237 6.792 6.316 5.987 5.680 5.902 7.676 8.927 6.399 5.822 6.539 7.815 7.670 6.470 5.779 2.775
+ 2.931 3.815 3.855 7.512 8.361 5.855 6.537 8.017 6.664 9.417 9.665 7.661 9.114 6.852 7.311 8.279 8.654 11.233 10.829 11.057 7.371 6.398 6.187 6.080 6.182 6.279 8.265 9.515 6.908 5.685 6.308 8.010 8.347 6.871 5.768 2.688
+ 4.344 4.997 4.146 7.403 8.237 6.039 6.588 7.891 5.722 9.093 9.538 7.771 9.317 6.981 7.581 7.889 8.752 11.705 11.157 10.750 7.458 6.762 6.425 6.149 6.418 6.614 8.556 9.456 7.199 6.240 6.896 7.946 8.163 6.654 5.074 3.059
+ 5.293 4.760 3.387 6.250 8.051 6.862 5.838 7.406 5.927 9.006 9.583 7.861 9.669 7.878 8.779 7.852 8.713 11.553 11.200 9.265 7.809 6.727 6.029 5.861 7.299 7.077 9.442 9.904 8.479 6.745 5.965 7.596 7.137 5.285 4.404 3.914
+ 4.888 4.633 3.816 5.944 7.587 6.169 4.832 6.394 5.076 9.109 9.682 7.748 9.774 7.845 9.086 7.610 8.341 11.169 11.184 9.719 7.839 7.235 5.303 5.672 6.705 7.239 9.545 9.901 8.856 6.368 5.231 6.418 6.571 5.823 4.034 2.943
+ 5.804 4.883 2.366 5.422 7.290 5.917 3.371 4.974 4.453 9.089 9.656 7.748 10.029 8.475 9.520 7.485 8.079 11.056 11.121 10.547 8.443 7.020 4.074 6.023 6.378 6.630 9.210 9.122 7.840 6.267 6.242 6.588 8.411 7.586 5.211 2.572
+ 5.763 5.672 3.405 5.576 7.280 5.893 5.886 6.859 5.782 8.453 9.241 7.809 10.262 8.646 9.708 8.026 8.827 10.925 10.992 10.515 8.501 7.304 4.901 6.467 6.328 6.972 8.453 8.814 7.970 6.535 6.432 6.718 8.567 7.857 4.755 2.765
+ 3.050 4.393 4.259 6.150 7.760 6.078 5.642 7.329 5.281 7.690 8.927 8.213 10.521 8.784 9.758 8.564 9.583 10.335 10.526 10.598 8.782 7.036 4.733 6.614 6.542 6.894 9.055 8.668 7.030 5.751 6.793 7.028 7.993 7.567 4.983 3.029
+ 4.977 4.561 2.344 6.414 7.988 6.438 5.705 7.712 6.238 7.664 9.035 7.925 10.612 9.187 10.111 9.024 10.235 9.878 9.889 10.215 9.078 7.721 5.931 5.848 6.899 7.731 8.556 8.486 7.385 5.890 5.637 7.106 7.397 6.821 4.566 2.688
+ 4.532 3.397 3.425 6.040 8.168 6.953 5.632 8.458 7.521 8.740 9.735 7.841 10.518 9.226 9.514 9.414 11.031 8.926 9.010 10.483 9.452 7.232 5.616 5.520 7.292 7.956 8.647 8.842 8.211 6.739 6.563 8.173 7.668 5.983 4.857 2.668
+ 1.787 2.237 2.497 5.704 7.925 6.851 6.621 9.112 8.023 8.611 9.619 6.991 9.872 9.157 9.036 9.182 9.970 8.815 9.775 9.634 9.470 7.868 6.609 6.263 7.137 8.544 9.450 9.247 6.845 6.316 5.873 8.249 8.262 5.668 4.169 3.065
+ 3.872 3.637 3.026 4.923 7.604 6.896 6.371 9.383 8.642 8.007 8.868 6.054 8.539 8.325 9.369 8.972 7.421 8.287 9.846 10.438 10.127 8.551 6.428 6.235 7.223 8.072 8.048 7.896 5.580 5.871 6.073 8.555 8.131 5.484 3.854 2.718
+ 3.125 3.885 3.159 5.652 7.516 6.262 6.663 9.381 8.560 7.576 7.147 6.661 9.282 8.092 9.619 8.986 8.815 9.080 9.879 10.831 10.227 7.943 5.981 5.571 7.288 7.578 7.270 7.265 6.414 6.119 6.629 8.692 7.904 5.447 4.463 2.162
+ 5.067 4.708 3.420 5.528 6.888 5.677 6.282 8.189 8.115 9.108 7.791 8.031 10.197 8.550 9.145 9.097 9.377 10.061 9.645 9.636 9.148 6.511 4.368 5.953 7.215 7.785 8.407 7.391 6.603 6.383 6.434 7.306 7.465 6.558 4.438 2.334
+ 5.867 5.791 3.792 5.238 6.264 6.380 6.271 7.538 8.318 9.492 8.654 8.041 9.358 8.728 8.354 7.979 9.075 9.492 8.945 8.583 8.270 7.294 5.001 4.820 5.214 6.060 8.567 8.374 6.813 6.074 5.631 6.189 7.071 7.003 4.791 3.016
+ 5.455 5.801 4.600 4.932 5.842 5.777 6.680 6.770 7.227 7.286 7.360 7.537 6.943 7.234 6.795 6.703 8.165 8.444 8.004 7.490 6.642 4.760 4.827 4.809 4.100 4.911 6.384 6.909 5.591 5.426 4.834 5.993 6.122 6.448 5.241 2.729
+ 5.010 5.225 4.583 5.235 6.277 6.376 6.265 7.735 7.859 7.466 7.414 6.957 7.553 7.599 7.471 6.640 6.656 7.790 8.436 7.780 5.360 4.182 4.034 5.187 4.927 4.908 6.230 6.227 5.404 4.840 4.010 5.333 5.111 5.058 5.024 3.416
+ 4.252 5.472 4.852 5.089 5.070 5.370 5.953 7.739 8.261 8.642 7.393 6.752 6.879 5.432 7.445 6.401 7.223 7.860 7.530 6.691 5.713 5.735 5.469 5.005 4.789 5.597 6.496 6.495 5.526 4.948 4.931 5.743 5.717 5.368 4.715 2.845
+ 6.303 5.209 4.134 5.041 5.398 4.884 4.135 7.833 8.797 8.074 6.978 6.604 6.128 4.919 7.210 5.815 7.080 8.314 8.078 6.195 4.451 5.023 4.071 4.271 4.446 5.514 6.468 6.104 4.585 4.963 4.345 4.409 5.312 4.471 4.393 3.230
+ 5.823 6.152 4.709 3.951 5.042 5.548 5.734 7.719 8.063 6.797 4.928 3.584 6.545 5.684 6.296 4.592 6.708 6.321 6.553 6.519 4.661 5.117 4.425 3.672 4.749 4.504 4.665 5.722 4.881 4.539 3.966 4.312 4.747 4.097 2.870 2.329
+ 5.976 6.179 4.895 4.599 4.106 5.568 5.229 4.794 5.104 6.489 6.017 6.597 7.259 8.114 8.031 8.273 7.621 7.348 5.943 5.904 6.717 6.263 6.083 6.068 6.851 8.190 7.842 6.984 7.280 6.504 6.560 5.341 5.374 6.041 5.999 6.135
+ 7.887 6.636 6.257 5.706 5.667 8.061 8.486 6.777 7.262 7.444 7.745 8.442 9.443 10.194 10.856 11.224 10.630 9.052 7.764 7.669 8.571 8.107 9.029 9.523 10.316 11.276 10.413 10.493 9.757 9.041 8.596 7.958 8.191 8.794 9.054 9.017
+ 6.578 6.744 7.606 7.256 7.494 9.626 8.966 7.445 6.857 8.385 9.473 9.232 8.309 9.398 11.525 10.595 10.936 10.343 10.514 8.999 8.768 9.038 9.866 10.642 11.446 12.032 10.843 11.591 9.758 9.125 8.525 8.618 9.159 8.790 9.297 8.996
+ 7.634 7.632 7.934 5.845 6.237 8.648 9.081 9.366 8.133 8.121 9.363 8.893 9.278 10.555 10.972 10.980 10.654 10.732 10.665 9.470 9.042 9.262 10.078 10.756 11.155 11.913 11.192 11.137 9.829 10.090 9.384 8.660 8.788 8.786 9.613 9.386
+ 9.074 8.631 7.673 7.433 8.843 8.393 8.079 10.004 9.459 7.555 8.271 8.558 8.532 11.086 11.719 10.956 9.452 10.640 9.558 8.008 7.848 8.546 9.218 10.190 10.873 11.340 10.476 10.116 9.626 9.865 9.127 9.213 8.505 10.137 9.954 9.230
+ 9.123 7.923 7.721 8.341 10.402 10.412 8.921 9.926 9.287 9.468 8.897 9.781 9.620 10.649 10.926 11.574 10.032 10.530 9.826 9.191 8.424 9.088 9.655 9.238 10.604 11.831 11.358 11.027 9.398 10.067 9.974 9.269 9.772 9.608 9.798 8.843
+ 8.600 9.193 9.052 7.661 8.776 10.140 10.061 10.085 9.583 9.023 7.864 9.226 9.031 9.006 11.249 11.397 11.276 11.047 11.745 10.085 9.094 9.182 9.510 10.689 11.245 11.250 11.063 10.913 9.922 10.242 10.808 10.321 9.897 9.362 10.151 9.426
+ 8.732 10.313 9.128 7.147 6.677 9.887 9.959 9.006 9.274 9.808 9.522 8.910 9.835 10.067 10.878 10.860 11.246 10.998 11.644 10.383 8.729 9.865 9.961 10.529 10.722 11.693 11.410 11.086 10.569 10.206 9.986 8.921 8.922 9.802 10.713 9.928
+ 10.459 10.162 9.074 9.240 8.817 10.345 11.082 10.049 10.668 11.198 9.742 9.215 9.942 10.224 9.982 10.695 10.974 11.091 10.620 9.496 9.351 9.088 9.177 10.021 10.314 10.177 10.547 9.496 10.080 9.854 9.250 7.982 8.573 9.386 9.751 8.962
+ 10.418 9.703 8.505 8.971 10.167 10.156 9.935 8.619 8.400 9.103 8.276 8.875 8.290 10.195 10.059 9.907 9.688 9.693 9.127 7.934 7.390 7.801 8.039 9.394 9.188 8.858 8.784 8.153 7.956 9.410 8.839 8.198 8.505 9.031 9.015 7.547
+ 8.899 7.308 7.335 7.199 6.759 8.734 9.435 8.912 8.646 8.271 7.929 8.167 8.051 8.990 9.579 10.085 10.188 8.184 9.137 8.522 6.843 8.221 8.071 7.293 8.671 9.018 8.018 8.895 8.431 8.558 9.208 8.286 8.099 8.295 8.393 6.460
+ 9.382 8.526 7.291 7.436 6.424 8.090 8.929 8.943 9.024 9.120 6.928 7.195 7.301 8.348 7.811 7.924 7.954 8.094 8.743 8.030 7.441 6.982 8.382 8.048 8.285 7.735 7.319 8.170 8.293 8.624 8.043 7.692 7.964 8.750 7.864 6.995
+ 8.135 7.953 7.243 6.838 5.806 6.759 7.122 6.732 7.568 8.235 6.854 7.488 5.815 6.338 6.685 7.220 7.141 7.267 7.566 6.793 6.023 6.815 7.137 6.402 6.842 6.931 6.428 7.280 7.221 8.480 8.430 6.887 6.923 7.217 6.730 6.283
+ 7.711 6.237 5.463 4.871 6.047 7.634 6.887 5.151 6.252 5.616 4.790 5.091 5.582 5.077 5.236 5.614 5.575 5.665 5.469 4.134 4.763 5.867 5.066 5.687 6.012 6.179 5.917 6.554 5.878 6.115 6.124 5.695 6.036 5.698 5.517 5.733
+ 5.039 4.768 4.074 4.197 5.560 6.301 6.360 4.892 5.423 4.896 3.938 4.432 4.168 4.049 3.686 4.601 5.477 6.074 5.569 4.690 4.003 3.454 3.995 4.521 5.702 5.878 5.969 5.497 6.487 7.115 6.294 6.470 6.432 5.122 4.937 4.547
+ 5.794 4.339 4.259 2.556 3.684 5.602 5.410 4.513 3.604 4.589 4.032 5.144 3.556 4.113 4.253 5.574 4.447 4.273 4.794 5.818 5.840 5.401 5.091 5.899 5.702 5.762 5.195 5.505 6.035 6.549 6.082 6.211 5.619 5.424 4.436 4.082
+ 6.307 5.309 5.364 6.016 5.607 5.050 4.985 4.719 4.907 4.985 3.907 4.487 3.906 4.377 5.317 3.943 5.514 5.484 4.540 5.038 5.077 4.279 5.358 4.820 5.827 5.396 4.730 5.880 6.026 5.259 5.445 6.185 5.550 4.454 4.039 4.454
+ 6.553 5.952 6.006 5.316 5.928 5.808 5.543 5.568 4.731 5.323 3.754 3.252 4.242 4.329 4.696 4.909 5.953 6.569 5.509 5.345 4.770 3.872 3.594 4.496 5.310 5.486 5.375 5.480 6.138 6.374 5.477 5.772 5.401 5.762 5.505 5.154
+ 6.120 5.966 5.309 4.999 4.520 3.623 3.495 4.421 6.247 5.445 4.734 5.150 4.033 5.478 5.507 5.871 5.915 6.013 5.666 6.033 5.252 4.208 3.766 5.370 5.475 5.931 6.314 5.895 6.447 7.067 6.539 5.786 6.078 6.585 5.645 4.665
+ 6.772 6.015 5.716 4.982 5.766 4.455 4.687 4.969 5.955 5.438 4.154 5.113 4.635 4.545 5.179 3.812 4.545 5.070 4.974 5.906 5.688 4.868 4.999 5.267 5.310 5.126 4.678 5.569 6.497 6.088 6.480 6.267 6.202 5.770 5.619 4.996
+ 5.699 4.189 4.396 5.327 6.967 5.864 6.670 5.943 7.322 6.793 4.119 3.909 4.265 4.902 4.518 3.713 3.802 5.861 5.538 5.439 5.414 4.498 5.409 5.177 5.943 5.595 4.694 5.518 6.456 6.225 6.355 6.604 6.356 5.991 5.418 4.804
+ 5.632 6.626 7.080 7.320 7.179 5.758 6.235 6.546 6.019 6.860 6.048 5.554 5.379 6.331 5.408 4.322 4.725 5.100 4.199 5.703 5.043 4.272 5.045 4.416 5.154 5.854 5.428 5.863 5.898 6.215 6.087 6.002 5.810 5.956 5.208 5.153
+ 10.766 10.607 10.325 8.910 5.957 7.247 7.678 7.735 6.984 7.894 7.617 7.781 8.216 7.601 5.698 6.008 5.523 5.465 5.879 5.897 5.941 5.842 5.216 6.468 6.287 6.389 6.431 5.615 6.254 6.806 6.262 7.169 6.587 7.032 5.880 5.893
+ 9.584 8.324 7.963 8.164 7.164 6.093 7.277 7.696 7.870 6.765 5.784 5.422 5.832 5.178 4.719 5.020 5.469 5.241 3.668 4.741 5.738 5.283 4.856 4.095 5.010 5.835 5.846 5.992 6.439 5.960 6.768 6.865 6.899 6.984 5.782 4.294
+ 4.680 5.433 6.236 5.301 5.491 6.276 8.292 8.124 6.872 7.500 7.071 6.189 5.614 4.774 5.559 4.414 4.558 3.823 3.451 4.930 5.964 5.691 6.208 5.473 4.960 5.479 5.660 5.603 6.536 6.547 7.032 6.719 6.185 5.651 5.548 5.066
+ 7.113 5.579 7.163 6.698 6.197 6.039 7.031 8.078 7.200 6.499 5.264 6.505 6.208 4.890 3.820 4.702 5.909 5.283 5.309 4.964 5.471 5.038 5.701 5.920 5.992 6.376 5.636 5.558 6.350 6.820 6.917 7.414 6.465 6.261 5.491 5.376
+ 8.327 6.764 6.624 7.305 6.195 6.447 6.329 6.973 6.141 6.875 5.798 5.813 5.533 5.547 5.077 4.983 4.797 3.950 4.862 4.996 4.533 4.429 4.843 5.343 4.614 5.372 5.438 5.682 6.427 6.249 5.874 6.813 6.395 6.259 5.581 5.481
+ 8.172 7.986 8.148 7.353 7.361 6.249 7.406 6.776 6.067 7.128 6.129 5.826 4.870 4.800 4.393 5.052 5.264 5.117 4.772 4.523 5.927 5.611 5.441 5.324 4.768 5.485 6.792 6.415 6.564 6.205 5.808 6.487 6.832 6.310 5.378 4.883
+ 10.504 9.883 8.639 8.306 8.376 8.794 7.868 8.485 7.689 6.375 5.865 4.776 4.540 2.388 3.997 5.617 6.308 6.387 5.182 3.715 4.593 5.075 5.216 5.441 5.484 5.848 5.714 6.061 6.698 6.032 6.156 6.193 6.066 6.557 5.759 5.051
+ 7.223 8.386 8.334 8.172 8.182 8.573 7.991 7.270 5.973 5.080 4.644 5.579 6.100 4.280 5.902 6.179 6.838 6.364 4.732 2.985 4.217 4.768 5.762 5.754 5.227 5.383 5.151 4.541 5.547 5.651 5.383 5.831 5.894 5.509 5.676 4.421
+ 6.032 7.924 8.872 7.621 8.008 8.996 8.433 9.045 8.672 8.734 8.607 8.809 8.839 8.612 8.574 8.583 8.762 8.900 8.847 8.776 8.979 8.030 6.712 6.924 7.225 6.725 6.726 6.397 5.791 6.628 7.477 7.363 7.137 7.269 7.446 7.260
+ 8.932 8.647 9.757 9.044 9.031 9.299 9.145 9.330 9.300 9.309 9.251 9.490 9.428 9.319 9.294 9.377 9.427 9.532 9.577 9.815 9.874 8.794 7.154 6.983 7.846 7.274 7.489 6.836 6.406 7.348 7.791 7.010 7.841 7.756 8.030 8.000
+ 7.306 7.965 8.054 8.403 7.408 6.666 6.809 6.734 5.740 5.661 5.324 4.395 4.250 3.887 4.630 4.896 5.065 4.722 3.802 4.515 4.455 4.406 4.684 6.287 5.417 4.749 5.186 5.152 5.794 6.008 5.921 6.032 6.349 5.837 5.834 5.221
+ 6.972 8.049 8.142 7.552 7.417 6.124 6.071 6.342 5.811 4.862 4.767 6.087 4.968 5.395 5.120 5.251 4.765 5.045 4.112 3.880 4.912 4.363 4.711 4.693 4.368 4.872 5.233 6.160 4.836 5.058 5.265 5.821 6.466 6.143 5.487 4.349
+ 7.733 8.979 8.520 6.655 6.398 5.895 4.870 6.060 6.699 6.122 6.423 5.601 4.799 6.309 6.021 4.106 4.688 4.417 4.917 3.403 5.056 3.815 4.314 4.587 4.565 5.267 5.081 5.157 4.809 5.379 5.803 6.226 6.708 5.680 6.532 5.050
+ 7.094 7.338 6.082 6.038 6.909 6.584 6.912 5.974 7.364 6.699 5.948 5.289 4.791 4.781 5.514 5.509 4.151 4.720 4.636 4.943 4.904 5.303 5.250 5.721 5.530 5.511 5.225 5.042 5.335 5.736 5.629 6.152 6.168 5.828 5.900 5.194
+ 6.759 7.766 6.344 6.754 7.568 7.189 6.802 5.115 6.547 6.881 7.361 7.134 6.904 6.856 7.091 6.901 6.526 6.484 6.597 6.864 6.686 6.517 6.449 6.918 6.617 6.232 6.672 6.194 6.885 7.237 7.485 7.838 7.926 7.772 7.236 6.783
+ 6.179 6.448 4.745 6.561 6.789 5.956 5.433 5.844 5.417 4.432 3.960 4.676 5.144 4.514 5.104 4.730 4.677 5.024 4.984 5.444 4.824 4.059 5.047 5.013 4.686 4.819 5.198 5.090 3.797 4.094 4.633 5.148 4.925 4.899 4.689 4.567
+ 6.790 6.565 6.768 5.896 3.534 4.657 4.782 4.928 4.794 4.185 3.856 4.852 4.247 4.508 4.234 3.190 4.716 4.803 4.665 4.643 5.143 4.962 4.460 4.766 4.228 4.781 4.415 4.397 4.580 4.607 4.651 4.681 4.424 4.782 4.639 3.021
+ 6.476 6.541 6.463 6.088 5.827 6.121 6.511 4.932 4.963 5.681 5.193 4.802 4.341 4.025 4.309 3.995 5.630 3.811 4.356 4.627 4.400 4.535 3.997 4.235 3.929 4.640 4.017 4.135 3.950 4.716 4.921 4.528 4.270 4.205 4.585 3.890
+ 6.764 5.606 6.375 5.937 5.273 5.505 5.322 4.142 4.879 4.901 4.629 4.950 5.087 4.329 4.584 3.872 5.261 5.083 3.584 5.196 5.473 4.259 4.779 4.380 4.604 4.490 4.068 3.764 3.555 4.877 5.152 4.869 4.621 4.153 3.842 3.734
+ 3.476 6.030 5.919 5.139 6.694 7.125 6.565 6.042 5.591 5.907 4.004 5.459 5.788 5.839 4.844 4.402 5.078 4.343 3.850 4.387 4.262 4.151 5.191 4.830 4.384 5.068 5.180 5.438 4.306 4.737 5.644 5.018 4.847 5.241 4.214 4.155
+ 2.444 5.577 6.492 5.129 5.584 6.054 5.865 6.192 5.231 4.940 4.357 4.349 3.751 4.705 4.077 4.043 5.266 4.114 4.608 4.693 4.489 4.555 4.399 4.134 4.120 3.820 4.835 5.382 3.610 4.409 5.175 4.668 4.178 5.218 3.993 2.985
+ 6.282 5.874 6.009 4.739 3.378 6.243 6.874 5.452 4.093 4.984 5.241 5.363 5.845 5.247 4.554 4.484 4.692 3.918 4.038 4.247 4.502 4.296 4.790 4.680 5.070 4.800 5.386 5.010 3.943 4.645 4.020 3.860 4.892 4.974 4.556 4.060
+ 6.205 5.154 4.697 5.647 6.139 6.866 5.080 4.683 4.020 5.474 5.819 5.203 5.093 4.201 4.638 3.510 4.207 4.294 3.495 5.066 5.306 3.845 4.940 4.711 5.237 5.502 4.973 4.332 4.801 4.369 4.162 4.370 5.309 4.799 4.009 3.482
+ 5.751 5.637 5.868 4.845 5.533 6.443 6.712 6.734 6.022 6.244 5.599 5.623 5.635 3.811 4.356 5.047 4.731 4.491 4.298 4.547 4.580 3.842 5.589 5.618 5.031 4.631 5.327 5.051 5.550 5.369 5.095 4.442 4.576 5.074 4.654 4.723
+ 3.998 5.224 5.489 6.206 6.687 7.169 7.131 6.673 6.210 6.014 5.904 5.128 5.483 6.280 6.336 6.576 6.419 6.608 6.825 6.342 6.618 7.130 6.896 6.917 6.970 7.377 7.652 7.509 7.743 7.932 7.928 8.143 8.070 8.030 7.900 7.245
+ 5.701 5.408 5.596 6.537 8.074 7.607 6.371 6.152 6.212 6.650 5.846 6.037 6.304 5.055 5.000 5.492 4.992 5.167 5.086 4.681 4.887 5.765 5.591 5.495 5.502 6.034 6.263 6.368 6.272 6.260 6.227 6.476 6.647 6.596 6.561 6.116
+ 7.158 5.765 4.678 6.877 7.936 7.104 7.029 6.753 5.700 4.508 6.036 5.725 5.009 4.679 4.422 4.026 3.922 4.455 4.219 5.237 5.236 5.137 4.689 5.740 4.926 5.308 5.136 4.993 5.453 4.944 4.201 3.501 3.866 4.145 3.812 4.157
+ 6.891 5.328 6.457 7.318 7.524 6.623 5.976 5.542 5.291 4.458 6.154 5.950 5.058 4.190 4.562 4.792 4.412 4.022 4.269 4.233 3.874 4.749 4.855 4.447 4.519 4.105 4.625 3.843 4.770 4.493 4.141 3.683 5.220 5.166 4.259 4.263
+ 6.620 5.833 5.655 5.824 5.746 5.212 5.321 5.440 5.123 4.648 5.809 6.716 4.864 4.556 4.844 4.900 5.588 4.666 4.727 4.709 4.418 4.706 4.872 5.571 5.248 5.509 5.672 5.634 5.431 4.303 4.640 4.648 4.602 4.995 4.923 4.136
+ 4.762 5.715 6.074 5.664 6.177 6.684 5.140 5.508 5.754 4.867 4.375 5.326 3.599 5.144 5.049 5.765 4.757 3.589 4.268 3.659 3.368 5.219 5.939 4.866 4.325 5.117 5.063 5.136 4.609 3.419 5.283 5.229 5.154 5.207 4.948 4.124
+ 4.325 3.482 5.018 5.073 6.137 5.464 5.434 3.735 4.282 4.006 5.023 3.956 2.780 4.246 4.526 4.077 4.217 4.020 3.278 4.225 4.203 4.675 4.937 4.304 3.862 4.463 4.837 4.603 3.186 2.550 3.153 3.360 4.095 3.926 4.000 3.827
+ 3.764 4.034 4.971 4.378 3.455 4.023 4.780 4.922 4.623 4.127 4.634 4.248 3.950 3.512 4.196 4.130 4.625 4.218 2.921 4.263 4.562 5.940 4.803 4.324 4.306 4.248 4.221 4.265 4.049 4.378 3.438 4.601 4.792 3.887 3.645 2.687
+ 4.684 4.091 4.132 3.735 4.716 4.691 5.247 4.415 2.943 3.627 3.666 4.770 3.754 4.532 3.429 3.976 4.250 4.393 4.142 4.617 4.713 5.170 4.152 5.104 4.683 4.233 4.208 3.844 3.684 4.195 3.907 3.729 4.199 4.236 3.775 2.988
+ 2.818 5.334 6.112 4.758 4.923 4.305 4.735 4.767 4.411 5.567 5.101 4.303 4.139 4.540 4.102 3.520 3.961 4.385 5.029 4.920 4.615 5.434 5.559 4.961 4.350 4.238 3.923 3.661 3.121 4.248 4.650 3.436 4.181 3.638 3.017 2.522
+ 3.698 5.977 6.366 4.672 5.425 5.218 4.533 3.088 4.330 3.992 3.447 3.527 3.901 4.379 3.559 4.392 2.440 4.199 3.640 3.953 4.668 4.794 4.661 4.711 4.334 3.728 4.320 3.904 3.576 4.404 3.893 3.315 3.158 3.258 3.226 2.519
+ 4.380 5.806 5.336 4.252 3.829 4.483 3.236 3.424 3.349 4.070 5.053 4.499 3.859 3.494 2.362 4.145 3.599 4.623 4.212 4.867 4.958 4.930 4.913 4.227 4.947 3.790 3.471 3.367 3.706 3.661 3.024 2.918 2.818 3.534 3.480 2.781
+ 5.192 5.089 5.829 4.135 3.081 2.487 2.642 3.804 4.526 4.931 4.219 3.638 4.408 5.501 3.930 2.820 3.182 3.874 4.847 3.620 5.269 5.088 5.997 4.673 4.677 4.278 4.147 3.879 3.325 3.237 3.108 2.993 3.285 4.074 3.400 3.170
+ 4.175 5.164 5.148 4.423 4.501 4.353 5.273 5.593 5.220 4.135 5.010 4.715 4.469 4.961 4.856 4.647 3.629 4.186 4.326 3.556 4.701 4.922 3.634 4.262 4.507 4.164 4.181 3.947 3.160 3.404 3.556 3.951 3.339 2.829 2.782 2.268
+ 5.478 4.523 5.149 4.930 4.964 4.252 4.339 3.748 5.053 3.950 4.693 4.377 3.911 4.517 4.265 4.590 3.730 3.722 4.545 4.148 4.385 3.271 4.100 4.483 4.396 4.840 4.257 4.132 3.772 3.387 2.900 3.689 2.767 2.439 3.184 2.901
+ 4.773 4.128 5.266 5.192 5.521 4.974 3.009 4.783 4.824 4.420 5.500 4.596 3.978 4.517 4.420 4.149 3.739 4.035 4.010 4.756 4.844 4.071 4.902 3.699 4.143 3.951 3.863 4.402 4.181 3.997 4.509 5.768 5.763 5.677 5.471 4.709
+ 5.771 5.664 5.615 5.137 5.121 4.239 4.860 5.675 5.626 4.629 3.566 5.330 5.341 4.075 5.040 4.974 4.629 4.136 3.208 4.329 4.660 4.325 4.770 3.912 2.997 2.982 4.403 4.446 3.973 4.516 5.004 5.298 5.423 5.320 5.060 4.141
+ 5.034 6.215 5.576 4.103 4.538 4.991 6.164 5.789 5.066 4.759 5.751 5.078 3.690 4.570 4.800 5.447 3.355 4.887 4.599 4.201 4.814 5.054 3.885 4.678 4.702 4.907 4.529 4.711 3.985 4.393 4.109 3.786 4.135 3.409 2.587 3.248
+ 4.377 5.335 5.661 5.502 5.051 4.571 4.166 3.910 4.763 5.282 6.159 4.933 4.655 4.786 4.814 5.180 3.516 3.658 3.475 5.122 4.510 4.766 4.286 5.185 4.825 3.991 4.779 4.342 4.769 4.617 3.987 3.416 3.952 3.692 3.472 3.565
+ 5.149 6.250 5.634 4.661 4.814 4.575 5.101 5.712 5.730 5.667 5.409 4.918 4.295 3.864 4.465 4.394 3.910 2.833 3.097 3.674 4.374 4.925 5.028 3.122 3.645 4.531 4.666 3.981 4.402 4.095 3.983 3.661 3.451 2.979 3.460 2.828
+ 3.926 4.104 4.137 4.355 5.279 5.518 5.006 5.769 5.083 5.533 4.821 3.473 3.201 2.891 3.308 3.864 4.817 4.532 4.744 4.828 3.838 4.934 5.154 3.986 4.147 4.762 4.505 3.679 4.248 4.413 3.220 3.984 3.893 4.583 3.896 3.508
+ 5.567 5.924 6.302 6.132 4.965 4.410 5.655 5.092 6.279 7.140 4.994 3.200 3.924 3.879 4.441 3.636 3.745 4.308 4.322 3.901 5.763 5.397 4.968 4.276 3.599 5.165 5.619 4.420 4.316 4.795 3.806 4.570 4.057 5.059 4.776 3.826
+ 5.456 6.556 6.441 6.698 6.849 5.489 6.202 6.211 5.891 5.957 6.216 6.214 5.903 5.664 5.165 4.791 3.969 4.761 4.426 4.195 5.465 5.196 5.756 5.137 4.546 4.049 4.615 4.643 5.324 4.410 3.916 4.408 3.543 4.047 4.609 3.699
+ 3.317 5.245 5.391 5.182 5.706 6.243 6.617 6.826 6.580 5.946 6.212 6.387 5.257 4.499 5.141 3.998 3.598 3.684 4.807 4.742 5.070 4.833 5.399 5.298 5.850 5.320 4.802 5.121 5.164 4.216 3.669 4.291 5.177 4.917 4.861 3.734
+ 4.547 5.332 5.745 6.300 6.751 5.247 5.142 5.701 6.528 6.287 5.632 6.358 4.646 4.897 4.930 4.288 3.766 3.194 4.134 3.722 4.214 5.221 5.637 5.609 6.294 5.553 5.188 4.693 4.956 4.718 4.055 4.232 4.790 4.828 4.309 3.460
+ 6.221 5.204 5.270 5.613 6.187 5.850 6.831 6.075 5.159 5.758 5.874 5.431 5.263 5.620 5.617 5.719 4.936 3.843 5.348 4.805 4.357 5.634 5.352 5.022 5.098 4.512 5.207 4.109 4.078 3.578 3.935 4.002 2.935 3.397 3.279 1.602
+ 5.726 4.992 6.197 6.566 6.582 5.134 5.618 5.212 5.214 5.440 5.709 4.191 5.069 3.725 3.655 4.193 4.435 4.324 4.974 4.435 2.505 4.009 3.399 5.086 5.080 4.850 3.954 4.310 3.996 3.782 3.340 3.577 3.084 3.847 3.553 2.220
+ 4.555 6.269 6.866 4.992 5.283 5.647 6.692 6.753 5.524 5.257 5.566 6.045 5.418 5.672 5.284 4.600 5.748 4.882 4.000 4.785 4.495 4.148 4.998 5.707 5.107 4.101 4.190 4.377 3.248 3.591 3.397 3.254 3.327 4.150 3.641 2.215
+ 5.029 6.758 6.727 6.473 5.537 4.695 5.551 5.653 5.617 5.656 5.555 6.982 6.409 5.206 4.559 2.684 4.510 4.824 4.557 4.034 4.684 4.100 4.160 4.478 4.507 4.891 5.161 3.538 3.032 3.919 3.354 3.639 3.943 2.986 3.045 2.809
+ 5.998 4.337 5.177 5.996 5.795 6.453 5.656 5.549 5.909 5.930 6.471 5.536 4.889 4.625 4.639 4.819 3.667 4.712 4.671 3.539 4.254 4.375 4.759 4.795 4.821 4.592 5.109 3.586 3.361 4.402 3.597 3.971 3.815 3.538 2.577 2.811
+ 6.444 5.128 5.580 6.238 6.757 6.928 5.789 6.673 6.222 7.403 7.843 6.638 5.300 5.163 5.769 5.185 4.717 5.066 4.809 5.004 3.669 4.445 4.630 5.278 5.226 4.356 4.821 4.546 4.310 3.817 3.341 3.311 3.226 3.300 2.964 2.992
+ 5.862 7.122 7.051 7.193 7.291 5.589 6.537 6.518 4.934 6.599 6.334 4.551 5.470 6.458 6.097 4.894 4.205 4.450 4.776 4.408 4.031 5.277 5.915 5.446 6.005 6.495 4.621 4.127 3.384 3.315 3.437 3.619 4.137 3.138 2.890 2.397
+ 6.556 6.729 5.255 6.161 7.350 7.079 5.228 5.104 6.613 5.655 4.840 4.940 4.248 4.713 4.740 3.074 3.362 3.707 4.639 4.598 3.876 4.758 5.625 5.694 5.687 5.498 4.397 4.376 3.260 4.038 4.467 4.244 4.587 3.904 3.625 1.784
+ 6.277 6.791 5.203 7.313 8.550 7.126 4.879 6.843 7.077 6.018 5.455 5.435 6.220 5.519 4.002 3.640 4.198 4.776 4.911 4.366 3.629 3.400 3.956 4.882 6.684 6.754 4.119 4.763 3.955 3.633 3.933 3.634 3.601 3.110 2.744 2.263
+ 6.528 6.487 3.463 4.727 7.900 7.217 5.799 5.076 4.918 4.894 5.698 5.922 5.799 4.429 2.357 3.324 3.697 4.902 4.362 5.838 5.463 5.689 5.969 5.291 5.740 5.991 4.201 5.050 4.059 4.343 3.358 2.923 3.014 3.308 2.870 2.447
+ 7.674 7.690 5.706 5.742 8.678 8.225 5.748 6.947 6.091 3.669 5.821 5.375 5.284 3.974 6.394 6.409 4.544 5.113 5.049 5.590 5.299 5.863 6.098 4.586 4.918 5.145 4.782 5.074 3.685 3.258 3.323 3.894 4.513 3.999 3.609 3.270
+ 7.457 7.746 6.051 7.517 9.488 8.506 5.202 7.661 7.307 4.768 4.593 3.550 3.920 5.443 7.804 7.386 3.692 4.571 4.746 5.993 5.616 4.802 4.894 4.136 5.910 6.597 6.459 4.899 4.219 4.606 4.355 4.475 4.229 4.847 4.397 4.073
+ 7.136 7.255 5.089 6.882 9.532 8.625 5.896 8.684 7.894 4.781 5.740 4.999 5.374 5.080 7.772 7.494 4.609 3.971 4.865 6.354 6.281 5.987 5.647 4.662 6.641 7.548 6.197 4.338 3.648 5.101 5.769 5.083 4.419 5.501 4.946 3.722
+ 7.140 7.364 4.906 6.500 9.634 8.995 5.049 8.674 8.195 5.148 6.079 4.900 5.368 4.394 7.549 7.656 3.955 3.516 4.608 5.632 5.656 5.334 5.390 5.797 6.219 7.061 5.917 3.850 3.962 4.987 6.034 4.507 4.769 5.895 4.069 3.145
+ 7.292 7.697 5.893 7.347 10.060 9.360 5.654 8.573 7.939 5.371 6.746 5.632 3.701 4.959 7.644 7.835 4.262 3.055 4.007 4.318 4.497 4.655 5.037 6.168 6.913 6.653 5.760 3.283 4.290 5.506 5.036 3.987 4.502 5.846 3.555 2.427
+ 7.462 7.636 5.497 7.322 10.238 9.488 5.235 8.561 8.321 5.338 6.558 5.127 4.084 5.134 7.882 7.773 3.445 3.592 4.876 4.112 4.566 4.602 5.322 5.709 6.635 7.518 5.812 3.514 4.245 5.789 6.132 4.542 4.970 5.925 3.727 2.270
+ 7.620 7.900 6.558 7.977 10.400 9.601 6.076 8.729 8.020 4.438 6.375 5.669 4.691 3.511 8.319 8.299 3.531 3.127 3.629 4.063 4.732 5.253 5.556 5.764 6.228 6.965 4.673 3.975 4.484 5.599 6.125 4.695 5.225 6.722 4.035 3.054
+ 6.798 7.442 5.851 7.941 10.363 9.281 5.553 8.246 7.855 5.469 7.277 6.343 4.926 5.225 8.946 8.546 4.816 3.747 4.913 5.947 5.627 5.283 6.252 5.817 6.803 7.688 6.036 4.136 3.990 4.852 5.328 4.894 5.732 6.203 3.983 2.606
+ 8.295 8.130 5.688 8.677 10.567 9.144 4.780 7.213 5.831 5.314 6.516 6.155 6.967 5.996 8.684 7.987 4.720 4.415 5.414 6.445 6.225 6.351 5.256 5.241 6.072 6.280 5.393 4.894 4.714 4.961 5.492 4.794 5.516 6.130 4.282 3.489
+ 7.565 8.266 6.336 7.885 9.955 9.143 6.488 7.474 6.228 4.125 5.008 4.888 5.876 5.568 7.384 6.369 4.517 4.719 3.710 4.950 5.285 5.983 5.554 5.478 5.629 5.978 4.684 4.395 4.488 5.864 6.453 4.478 5.133 4.999 3.685 3.233
+ 9.202 9.771 10.051 9.099 8.004 7.708 6.375 6.653 7.398 7.994 8.616 7.647 5.621 5.842 6.487 6.297 5.108 4.881 4.091 5.522 6.009 6.199 4.938 5.180 5.471 5.748 4.866 4.528 3.987 5.320 5.739 5.272 4.538 5.288 5.395 4.498
+ 10.423 10.510 10.508 10.089 10.004 8.467 6.205 6.926 6.960 6.615 7.874 6.426 4.846 4.155 5.964 6.043 4.764 3.672 4.770 4.766 5.191 4.975 4.962 5.256 5.823 6.054 5.119 5.360 4.899 5.311 5.546 5.378 5.337 5.271 4.917 4.281
+ 8.856 7.722 6.303 6.417 9.149 8.449 7.667 6.932 5.967 6.532 6.579 6.391 5.207 5.287 5.343 5.796 5.303 4.425 4.421 4.510 4.752 5.052 4.654 5.570 5.770 5.703 5.747 4.810 5.022 4.996 5.509 4.740 4.497 4.621 4.686 4.278
+ 6.519 6.890 6.378 6.754 8.491 7.778 6.627 6.062 3.947 4.537 5.607 4.244 3.801 5.853 5.300 4.908 4.928 5.137 5.343 6.031 5.072 5.160 5.983 6.133 5.936 5.466 5.374 4.916 5.010 5.099 5.418 5.225 4.988 5.484 4.726 3.598
+ 6.012 5.921 4.820 7.000 8.862 8.231 6.613 5.709 4.692 4.948 5.176 3.612 5.398 6.115 4.846 5.703 5.943 5.751 5.034 6.019 6.806 6.106 6.551 6.683 7.876 7.439 5.731 5.440 5.143 5.767 5.725 5.291 5.512 5.611 5.623 5.521
+ 8.612 8.097 7.296 7.162 8.973 9.545 7.801 8.607 7.815 7.801 5.612 6.485 6.431 5.935 6.245 7.175 7.247 6.116 5.343 5.764 7.245 7.718 7.061 8.394 9.186 9.453 7.403 6.435 6.777 6.851 6.482 7.356 6.620 6.894 6.362 5.702
+ 12.430 11.259 9.238 9.899 11.099 11.762 11.518 11.058 10.602 9.828 8.953 7.932 7.293 7.724 8.355 9.275 9.435 8.313 6.249 7.021 7.408 8.325 8.284 7.418 9.520 10.168 9.319 8.826 9.372 8.771 8.334 9.478 8.595 7.766 7.932 6.200
+ 11.049 9.739 9.307 9.397 9.465 8.800 8.823 7.773 7.334 7.748 6.923 6.344 5.584 6.583 6.712 6.282 6.781 6.403 5.436 6.009 7.202 7.938 8.638 8.296 10.160 10.351 9.274 6.601 6.714 6.963 6.587 6.871 7.431 7.355 7.162 5.696
+ 11.803 12.089 10.696 11.567 10.864 9.602 10.616 9.639 9.123 9.676 9.267 9.197 9.137 8.804 8.919 8.441 8.092 8.044 7.899 7.330 7.184 8.833 9.339 8.710 9.602 10.089 8.818 8.066 7.699 7.080 8.098 8.035 8.128 8.672 7.950 5.586
+ 13.393 13.055 12.316 12.188 11.168 10.650 10.840 10.115 9.039 9.816 10.156 10.299 9.887 9.959 9.791 9.267 8.535 7.483 7.508 7.621 7.519 8.215 8.382 9.417 9.818 10.838 10.012 8.723 7.908 7.571 8.273 8.399 7.700 8.663 8.065 6.426
+ 11.110 9.655 7.014 9.325 8.760 6.907 7.190 6.904 7.228 7.681 7.207 6.624 6.366 6.575 6.130 6.199 4.113 4.903 5.401 5.601 5.568 6.166 7.839 8.410 9.445 10.266 8.599 6.166 5.660 5.763 6.427 6.978 7.687 8.156 7.809 5.429
+ 7.222 7.236 6.545 7.622 8.703 8.419 9.538 8.320 6.313 6.992 6.878 7.080 6.176 5.165 6.713 6.556 4.196 5.271 5.007 4.777 5.248 5.376 7.144 8.598 9.818 9.963 8.861 6.801 5.657 6.308 5.505 6.454 6.831 7.352 7.482 5.486
+ 7.623 6.033 5.166 7.951 8.844 8.011 9.384 7.510 6.172 6.342 5.844 5.110 5.392 5.493 6.261 5.346 4.630 5.090 4.852 5.094 4.994 5.651 6.462 8.123 8.724 10.297 9.352 6.904 4.919 4.822 5.179 5.604 7.213 7.845 7.542 5.487
+ 7.472 6.806 6.747 9.836 9.759 8.973 9.263 6.209 6.933 6.116 5.603 4.599 4.855 5.287 5.399 5.221 5.278 4.193 4.736 4.847 5.311 5.813 6.871 8.398 9.387 10.772 9.216 6.907 5.875 6.114 6.417 6.056 6.765 7.206 6.546 5.458
+ 5.553 6.123 7.275 10.415 9.793 8.613 9.607 7.146 6.427 5.780 5.789 5.505 2.288 5.597 6.807 6.627 6.157 4.718 6.006 5.958 5.967 5.689 7.413 9.716 10.540 11.061 10.186 7.564 6.438 6.900 7.337 7.214 7.669 7.252 7.739 6.303
+ 4.225 4.559 8.711 10.759 9.744 8.968 8.744 7.297 6.474 6.259 5.109 5.613 4.720 5.174 5.896 5.564 4.650 4.667 4.119 4.906 5.757 6.045 7.563 10.334 10.688 10.801 10.233 7.995 5.891 6.039 6.756 6.148 6.975 7.661 7.749 5.714
+ 6.147 4.971 8.296 10.129 9.137 8.388 6.947 8.621 9.006 6.627 5.753 6.208 5.027 5.378 4.433 4.658 4.646 4.309 4.301 4.853 5.647 6.863 8.686 10.422 10.703 11.281 10.153 8.000 6.362 5.850 6.712 6.802 7.931 8.784 8.097 5.932
+ 3.478 5.322 6.140 7.602 8.580 9.047 7.668 9.742 9.762 7.045 6.031 4.288 4.010 5.566 4.682 4.492 3.300 3.551 4.854 5.056 5.462 6.586 9.353 10.872 11.184 11.091 10.031 8.142 5.906 6.081 6.849 6.969 7.435 8.737 8.291 6.508
+ 3.468 5.664 6.255 5.622 7.187 9.172 7.875 9.006 8.651 7.438 6.792 6.209 4.566 4.931 6.085 5.089 4.224 4.381 4.787 5.716 5.114 5.452 9.254 10.619 10.350 10.925 10.260 7.839 5.906 5.898 5.811 6.968 6.763 7.977 8.291 6.651
+ 3.395 4.983 5.575 7.086 7.581 9.214 7.785 8.994 8.519 7.194 6.223 4.931 5.747 5.452 5.603 5.768 3.953 5.102 5.535 4.713 5.931 5.129 9.184 10.998 10.529 10.824 9.702 7.719 6.378 5.958 6.247 5.779 6.009 7.914 8.025 5.843
+ 4.571 4.843 7.424 8.092 7.683 9.256 8.124 8.617 7.761 7.404 6.883 4.491 4.487 4.793 4.496 3.676 3.835 5.260 6.593 5.747 5.497 5.528 7.888 9.632 10.145 9.729 7.919 7.151 5.857 4.585 5.761 5.908 7.497 7.853 7.368 6.176
+ 4.795 4.614 6.527 8.084 6.994 7.351 6.728 7.438 6.290 4.931 6.174 5.836 4.188 4.293 5.389 4.120 3.324 3.794 3.905 3.668 4.803 4.737 6.420 9.019 9.698 9.593 8.198 6.611 5.298 5.393 5.263 5.238 6.550 7.643 7.602 5.183
+ 7.428 6.671 7.307 7.479 6.818 7.285 6.755 7.670 7.580 6.919 6.514 4.229 3.350 4.753 4.578 3.876 4.805 4.779 4.462 4.415 5.702 6.116 6.001 8.142 9.179 9.336 6.507 5.924 5.169 5.314 5.476 5.893 6.303 6.849 6.549 4.208
+ 8.778 7.207 7.883 7.146 6.894 6.657 7.081 6.925 6.157 5.744 5.864 5.073 4.845 5.157 5.331 4.683 4.434 4.556 5.350 5.433 6.092 6.480 6.147 6.818 7.862 8.055 6.064 6.200 6.566 5.880 4.455 5.380 6.266 6.570 6.754 5.500
+ 8.521 7.707 6.865 7.062 7.178 7.286 5.903 6.095 6.258 5.911 5.019 5.335 3.848 4.798 5.794 4.942 4.773 5.024 5.763 5.762 5.718 5.413 6.984 7.171 7.085 6.165 5.981 5.566 5.889 5.660 5.194 5.625 6.281 7.356 6.630 5.551
+ 6.472 5.815 6.479 6.358 6.082 7.771 6.612 6.205 5.702 5.804 4.108 4.990 5.342 4.009 5.256 5.009 3.880 4.874 4.852 4.880 5.521 6.320 6.290 5.998 5.739 4.624 5.961 5.820 5.906 5.534 5.206 5.180 5.152 5.857 6.053 4.544
+ 7.465 7.806 6.971 6.810 7.708 7.498 6.977 6.427 5.172 6.195 6.225 5.390 4.886 4.620 4.730 5.466 4.393 5.129 5.377 5.014 5.208 5.427 5.786 7.326 6.735 6.864 6.445 5.632 5.260 4.867 4.627 4.764 5.077 5.173 5.287 3.765
+ 9.557 9.265 7.950 7.692 7.952 8.080 7.723 5.844 5.894 5.309 6.229 5.076 4.526 5.340 4.977 5.808 6.223 5.050 4.774 5.288 5.722 5.095 5.190 6.793 6.048 6.007 5.772 6.342 5.047 5.912 6.007 6.337 6.440 5.904 5.319 3.876
+ 7.839 7.437 6.519 6.245 5.589 6.751 7.024 6.351 5.247 5.668 6.183 6.384 5.479 5.663 6.335 5.122 5.949 6.038 4.661 4.456 4.214 5.394 5.773 6.444 6.891 6.723 6.440 6.676 6.226 5.881 5.168 5.585 6.641 6.142 6.651 4.931
+ 6.727 6.904 7.857 8.086 6.922 7.226 7.057 6.417 6.852 7.611 5.750 5.297 5.045 6.019 5.823 5.181 5.089 5.145 4.608 5.277 6.028 5.689 5.740 7.690 8.748 8.898 7.592 6.135 5.543 6.062 5.447 5.468 6.272 6.729 6.196 5.522
+ 5.836 7.208 8.004 6.755 7.451 8.750 6.896 5.895 5.976 6.972 5.021 4.528 3.479 5.433 5.366 5.032 5.001 4.303 4.900 4.849 6.390 6.137 5.720 9.197 8.925 9.618 8.017 6.854 6.099 5.871 5.783 5.552 6.431 6.933 7.217 5.733
+ 5.688 6.642 7.165 6.693 8.094 9.566 7.838 7.564 6.869 6.030 5.212 4.206 3.924 4.684 5.835 5.018 4.936 3.625 3.971 4.850 5.015 5.635 7.356 9.333 9.206 8.647 9.123 7.854 6.546 5.377 6.687 6.681 6.726 7.613 7.341 5.275
+ 7.135 6.762 7.090 7.429 8.680 8.997 8.275 9.119 8.204 6.939 5.897 3.844 3.943 5.674 5.847 5.152 4.219 4.157 3.802 6.567 6.934 7.068 9.024 9.600 9.157 9.103 9.252 8.040 7.601 6.425 6.929 6.504 6.846 7.296 7.680 5.752
+ 5.273 5.932 6.816 7.400 7.660 6.891 7.819 8.068 7.216 7.428 5.990 5.873 5.859 6.421 6.143 4.713 4.094 6.223 5.921 7.388 7.808 8.039 9.209 8.378 8.693 9.095 9.215 7.620 6.540 6.021 6.789 6.148 7.299 7.493 7.904 5.824
+ 6.212 5.601 6.839 6.415 4.956 4.659 6.447 6.244 7.995 7.491 4.569 5.906 6.200 5.650 6.402 5.543 4.190 5.425 5.575 7.131 8.119 9.248 8.562 7.515 8.345 8.824 8.685 6.776 6.276 6.182 5.960 6.160 8.267 7.938 7.435 5.470
+ 6.330 6.408 7.313 6.121 6.803 6.196 6.070 6.173 8.353 7.704 4.992 4.119 5.276 6.044 6.155 5.848 4.695 5.816 6.328 6.937 8.531 9.297 6.980 6.940 7.616 8.669 8.109 7.089 6.251 6.080 5.985 6.196 7.697 7.969 7.219 6.104
+ 6.325 6.462 7.800 7.098 7.242 7.048 8.119 6.878 7.260 6.737 5.876 4.177 4.927 7.134 5.826 5.551 5.433 6.113 6.518 8.316 8.893 8.271 7.864 8.030 7.444 8.300 8.624 7.283 5.839 5.481 5.826 6.019 7.053 7.597 7.807 5.845
+ 6.526 6.529 5.862 6.232 6.006 6.698 8.155 7.021 7.270 7.426 7.532 5.028 5.901 6.699 6.445 5.280 5.264 6.479 6.036 9.490 9.584 8.102 6.609 7.116 7.342 8.339 8.498 7.206 4.808 5.137 6.110 6.491 7.361 7.753 7.505 5.500
+ 3.993 5.303 4.408 5.841 6.210 6.231 6.710 7.384 8.111 8.784 8.033 7.521 6.357 6.501 7.101 5.281 5.402 7.069 7.361 9.963 9.900 8.114 6.036 6.504 6.661 7.429 7.692 6.504 4.988 4.709 4.832 6.335 7.430 7.278 7.376 4.190
+ 12.027 12.296 12.049 12.092 12.148 12.246 12.185 12.001 10.603 10.613 10.671 11.058 10.633 9.528 9.681 9.592 9.746 9.362 8.840 10.096 10.040 8.433 7.402 8.169 7.332 8.566 7.996 7.706 6.446 6.453 5.730 6.984 7.247 7.221 7.077 5.612
+ 14.514 13.391 12.764 11.981 12.837 12.662 13.078 12.950 11.241 9.299 11.198 11.883 10.970 9.050 9.808 9.666 10.117 9.610 8.815 10.155 10.343 9.374 8.219 8.845 8.475 9.403 8.336 7.893 6.848 7.066 7.048 7.514 7.784 6.599 7.071 6.628
+ 12.232 10.779 8.778 9.806 9.153 9.607 8.896 8.104 9.558 9.626 8.488 8.073 8.040 7.124 6.935 6.300 5.531 6.744 7.285 9.986 9.990 8.083 6.075 6.807 6.479 7.067 7.761 6.946 5.895 4.647 5.510 5.694 6.150 6.183 6.607 4.725
+ 10.314 6.655 6.638 5.835 6.693 6.013 6.368 8.220 8.477 8.652 7.515 6.950 6.974 5.654 5.260 4.441 5.747 6.392 7.801 9.017 8.948 6.114 4.764 6.252 6.309 6.988 8.537 7.176 5.036 5.546 5.408 6.482 7.220 6.596 6.872 5.240
+ 6.967 6.097 6.114 6.203 6.966 6.013 4.404 6.800 8.957 8.614 6.101 7.182 6.354 5.723 6.115 3.977 4.302 6.969 8.003 9.819 9.816 6.895 6.252 5.450 6.409 6.336 7.711 7.590 6.324 5.540 5.439 6.505 7.279 6.201 6.173 4.597
+ 5.123 5.667 5.841 6.185 7.078 6.802 6.107 7.113 8.007 9.195 6.887 6.411 7.122 6.365 6.680 5.074 5.549 6.123 6.941 9.684 9.318 7.466 6.073 5.862 6.774 6.284 7.730 7.145 5.363 5.119 5.370 6.281 7.065 6.223 5.608 3.594
+ 7.376 6.858 7.019 7.501 6.874 7.278 6.607 7.896 8.331 9.236 7.398 6.776 6.010 6.948 5.951 5.009 5.843 7.421 8.088 10.077 9.146 7.240 5.484 5.009 5.850 6.484 7.335 7.039 5.768 5.728 5.131 5.360 5.222 5.792 6.177 3.613
+ 7.965 8.882 9.194 9.687 9.657 10.493 10.932 10.204 10.223 10.622 9.682 9.690 9.213 8.969 8.883 8.192 8.599 7.845 7.936 8.002 8.460 7.993 7.971 8.142 8.988 8.053 7.878 7.744 7.067 7.179 7.715 8.865 9.665 8.188 8.703 7.583
+ 11.469 9.487 8.315 9.343 9.064 10.264 10.781 10.443 9.734 10.143 9.597 9.298 8.437 7.431 7.962 7.643 8.092 7.990 7.471 7.275 8.408 8.769 8.474 9.724 10.272 9.129 9.163 8.644 7.683 8.153 8.786 9.369 9.872 9.315 8.792 7.745
+ 11.094 10.656 10.531 10.753 10.552 10.255 9.994 10.713 10.265 10.119 9.683 8.607 8.592 8.532 7.655 8.041 8.562 8.999 9.318 8.646 8.732 8.702 9.625 10.653 11.227 10.869 9.780 8.508 9.901 10.557 11.013 11.539 11.729 11.343 10.492 8.641
+ 12.155 9.570 8.450 9.035 7.872 7.601 8.804 9.130 7.976 7.017 6.921 5.569 5.331 5.041 5.011 5.007 5.987 6.566 6.602 7.297 7.347 7.274 6.245 7.390 7.620 7.401 6.430 6.507 6.412 6.621 6.905 7.629 7.710 7.305 7.019 5.636
+ 8.859 8.193 8.415 9.588 8.212 6.147 7.169 8.767 8.995 8.651 7.056 5.391 5.762 6.217 5.559 4.897 4.360 5.489 6.264 6.650 6.483 7.154 6.263 6.402 5.464 6.182 6.199 6.422 5.810 5.899 6.493 6.516 6.262 5.550 6.382 5.781
+ 7.678 7.490 7.139 8.102 7.915 7.498 6.673 5.881 6.304 6.997 6.456 5.609 5.219 5.778 6.267 4.212 4.956 5.378 5.649 7.324 7.092 5.657 5.651 6.602 5.295 5.699 5.605 5.917 5.348 4.876 5.461 6.407 5.873 6.102 5.662 5.199
+ 8.048 7.805 7.583 7.748 8.675 7.286 6.573 7.025 7.907 8.213 7.422 6.586 6.652 6.272 5.857 5.876 4.687 4.192 6.143 6.387 6.916 7.036 5.851 6.030 5.564 5.888 6.034 6.135 5.891 5.455 4.407 5.350 5.226 5.724 5.500 5.984
+ 9.106 8.969 8.577 8.961 9.045 8.360 7.609 6.774 6.866 6.805 6.220 6.534 5.195 6.427 6.457 5.068 4.172 4.298 4.976 6.450 6.166 5.835 5.715 6.345 6.071 6.407 5.756 6.046 5.753 5.760 5.359 6.122 6.061 6.306 5.126 5.365
+ 6.773 7.916 7.545 9.689 9.507 6.585 6.986 6.952 5.262 6.377 6.990 5.423 4.704 6.825 7.110 6.374 3.823 3.828 4.688 5.940 5.499 6.078 5.123 6.389 5.679 5.163 5.820 5.933 6.279 5.813 5.847 6.248 6.359 6.049 5.185 4.351
+ 6.681 5.279 6.396 8.536 8.333 7.508 7.151 6.873 6.649 6.290 5.672 5.864 5.712 5.372 5.429 5.063 4.842 4.441 4.642 5.932 5.939 6.599 5.611 6.401 5.741 5.630 5.125 4.933 5.209 4.843 4.812 5.117 5.403 5.941 5.741 4.900
+ 6.094 5.468 5.909 6.632 6.697 6.862 7.213 6.268 5.547 5.037 6.300 5.526 3.547 2.992 4.421 4.916 4.751 5.123 4.360 4.601 6.251 6.069 5.520 5.988 6.601 5.359 5.096 4.892 5.173 5.614 4.769 4.529 5.483 5.445 4.597 4.094
+ 5.624 5.314 6.519 7.402 6.569 6.411 5.805 5.666 6.581 6.278 6.231 5.576 4.177 3.696 4.927 4.579 4.093 4.879 4.585 5.152 6.050 6.281 6.794 5.471 6.016 5.311 4.450 4.597 4.712 4.436 5.039 4.545 4.960 5.364 4.974 3.886
+ 7.354 6.500 5.898 7.948 8.422 7.849 7.636 7.510 6.604 6.875 5.950 5.291 7.467 6.900 5.971 5.503 4.196 5.380 4.519 5.504 5.293 5.560 5.792 5.738 5.094 5.145 5.509 5.193 4.792 5.163 5.872 5.516 5.679 5.545 5.930 4.058
+ 5.384 6.927 6.860 7.089 7.242 6.679 6.834 6.044 5.632 5.916 7.369 7.889 7.624 6.213 6.377 6.159 3.929 4.841 5.166 5.494 5.258 6.331 6.091 4.921 4.673 4.808 5.427 5.177 3.864 3.216 4.497 4.752 5.171 4.868 4.532 3.305
+ 8.453 6.737 7.186 7.283 6.064 6.558 8.195 8.090 6.929 7.430 8.030 6.829 5.769 6.662 6.483 6.506 6.022 4.965 5.266 5.311 5.164 5.375 7.485 6.736 5.241 5.888 5.025 4.397 4.609 4.742 4.273 4.985 4.998 4.877 4.876 3.417
+ 10.774 10.633 9.958 8.669 7.829 7.240 7.054 8.472 8.558 7.330 7.732 7.176 6.776 7.313 7.318 6.431 6.206 5.311 3.815 5.145 5.684 5.782 6.029 5.991 5.763 5.342 5.029 4.616 4.416 5.340 4.927 4.813 4.807 5.012 5.370 5.057
+ 8.997 9.143 7.638 6.807 6.958 7.621 7.843 7.183 7.633 6.163 6.635 7.909 6.494 7.475 7.001 5.414 5.570 6.382 5.726 5.561 5.534 5.520 5.895 6.124 5.492 5.673 5.319 4.414 5.151 5.183 5.142 5.650 5.764 5.172 5.386 5.138
+ 6.008 6.296 7.542 6.724 6.555 6.071 6.920 6.662 7.324 6.648 6.758 6.400 6.141 6.162 5.321 5.335 5.220 4.762 4.930 5.691 5.748 6.136 5.713 4.769 5.328 5.265 5.126 5.118 5.490 5.622 4.996 4.921 5.712 6.450 5.184 5.044
+ 6.514 5.635 5.780 6.786 7.404 5.219 5.054 6.091 6.761 6.468 6.911 6.540 6.774 5.506 4.483 4.901 5.514 4.031 4.208 5.874 6.234 5.433 6.091 5.657 4.567 5.813 5.319 4.805 5.076 5.385 5.184 4.800 4.932 4.464 4.646 4.897
+ 5.520 6.878 6.889 7.174 6.048 5.167 4.494 6.717 7.150 5.292 6.445 7.076 5.482 3.858 5.360 4.458 5.880 6.241 4.964 5.265 5.848 5.547 5.185 5.231 5.768 5.214 4.768 4.337 4.623 5.318 5.351 5.245 4.429 4.662 5.212 4.346
+ 5.937 5.961 5.289 7.248 7.153 6.160 6.225 5.131 5.734 5.740 6.750 7.334 5.683 5.784 6.034 5.664 5.490 5.971 5.848 5.816 5.863 5.664 5.662 5.511 5.648 5.017 4.499 5.665 5.071 5.267 5.185 5.855 5.890 5.077 5.366 4.166
+ 6.192 6.049 6.024 6.312 6.500 5.785 6.970 6.534 6.066 6.082 7.261 6.801 3.933 5.701 5.501 5.557 5.627 6.182 5.615 5.476 5.654 5.865 5.628 5.800 5.026 6.067 5.690 5.527 5.594 5.447 5.813 5.874 5.930 4.971 5.695 5.187
+ 5.509 4.231 4.607 6.548 5.501 5.430 6.303 6.755 6.535 7.271 6.728 6.208 6.701 6.803 6.753 6.104 6.054 6.480 6.262 6.197 6.316 5.875 5.945 4.972 4.684 6.079 6.016 5.429 5.259 5.371 5.898 5.859 7.208 6.990 6.873 6.546
+ 7.202 5.450 5.258 6.357 6.729 5.476 6.363 6.074 5.784 6.571 6.045 5.335 6.095 5.746 4.450 4.780 4.886 5.265 4.727 5.347 5.920 4.904 5.581 5.232 5.865 5.315 5.582 5.683 5.123 5.455 6.153 5.934 6.402 6.045 6.442 5.874
+ 6.889 5.715 4.415 5.497 5.298 5.368 5.769 5.593 6.488 6.640 6.749 5.687 4.998 5.192 4.802 4.633 4.584 4.783 4.956 5.481 5.180 4.382 5.215 4.555 5.672 5.205 4.772 5.411 5.794 5.331 5.773 5.482 5.550 6.187 5.544 5.705
+ 4.459 6.796 6.717 6.666 6.458 5.233 5.008 4.656 6.666 6.135 6.036 6.416 6.442 7.136 6.209 5.018 5.113 5.630 5.037 4.651 5.107 5.151 5.540 5.207 5.378 5.479 4.802 5.258 4.957 5.219 5.648 5.895 5.617 5.444 5.386 4.966
+ 5.960 6.547 6.363 5.079 3.008 5.327 6.499 5.626 6.213 5.470 5.355 5.125 4.612 5.792 4.823 5.278 6.066 4.977 4.803 3.436 4.693 5.750 5.528 5.533 5.389 5.638 5.200 5.144 5.044 4.949 5.848 6.491 5.388 5.602 5.753 4.751
+ 5.059 6.064 6.700 5.591 4.958 5.496 5.055 4.304 5.612 4.912 4.947 3.363 4.413 4.770 3.372 3.550 5.156 4.205 3.421 3.620 5.165 5.704 5.073 4.366 5.019 5.776 4.410 4.320 4.819 4.623 5.245 5.330 4.380 4.615 4.220 3.544
+ 5.677 6.817 6.409 5.517 5.891 6.825 6.829 5.981 6.034 5.774 5.426 4.930 4.886 4.832 4.328 4.374 4.942 5.481 4.188 4.731 5.209 3.855 3.877 5.342 5.730 5.728 5.462 4.360 5.722 5.839 5.874 5.321 5.122 5.015 5.332 3.909
+ 5.702 6.022 5.579 5.200 5.186 7.317 6.772 5.787 6.090 5.653 5.887 5.724 5.071 6.113 5.581 5.013 4.745 4.507 4.061 4.992 4.732 5.365 5.787 5.661 4.937 4.900 4.892 5.034 4.821 5.428 5.092 4.463 5.192 4.909 5.102 4.296
+ 3.519 2.844 4.820 6.471 5.921 4.854 5.722 5.754 6.037 6.124 5.175 6.366 5.424 5.602 6.415 5.110 6.266 5.465 4.437 4.257 5.363 5.245 5.310 4.231 5.000 5.611 4.522 4.765 4.268 5.490 5.163 5.033 4.738 4.981 4.725 3.359
+ 3.782 2.892 4.659 6.414 5.882 5.220 4.793 5.054 5.962 5.828 5.130 5.158 5.160 3.986 4.699 5.522 5.502 5.520 4.672 4.632 5.961 4.925 5.470 5.137 5.243 4.825 4.626 4.688 4.526 4.919 4.528 4.716 4.327 4.192 3.999 3.326
+ 4.614 5.713 6.477 4.829 5.580 5.471 4.833 3.550 5.724 5.500 4.538 5.247 5.833 5.271 5.082 5.552 5.389 5.278 5.362 4.741 5.096 5.306 6.516 5.680 5.680 5.036 4.954 4.954 4.359 5.087 3.984 4.005 4.286 4.047 3.686 3.043
+ 3.922 4.720 6.278 5.631 5.995 6.364 5.874 4.360 4.171 3.442 5.591 5.558 4.687 4.142 4.378 4.471 5.484 5.035 4.684 4.736 5.874 6.027 5.158 5.095 4.614 5.074 5.197 4.849 5.356 5.010 4.409 3.683 3.884 3.914 3.669 2.701
+ 6.222 6.539 5.107 2.327 3.514 4.335 5.489 5.698 3.595 4.468 5.374 4.108 3.151 3.862 3.521 4.112 4.550 4.884 4.475 4.019 4.265 4.861 5.565 5.289 4.781 4.182 3.828 3.900 3.871 3.875 3.913 2.750 3.419 3.554 3.332 2.578
+ 6.666 5.691 5.541 4.465 3.839 3.423 4.658 4.606 3.937 6.253 5.648 5.220 4.883 3.935 3.648 3.376 3.991 4.640 4.335 4.827 5.350 4.954 4.688 4.782 5.187 3.826 3.816 3.418 3.968 4.312 3.116 3.390 2.903 3.527 3.264 1.950
+ 4.245 5.905 6.384 5.465 3.707 3.828 3.649 3.247 3.153 6.382 6.215 4.768 4.405 4.511 4.564 3.751 4.305 4.529 5.474 4.983 5.473 5.659 5.651 5.680 5.609 4.121 3.753 3.896 3.823 3.841 3.253 3.580 3.688 3.559 2.862 3.088
+ 5.366 5.580 5.036 5.091 4.557 3.945 3.880 4.513 4.608 5.821 5.056 4.755 4.796 5.368 4.543 4.693 4.688 4.992 3.867 4.539 4.586 5.838 5.359 5.424 5.015 5.085 3.725 3.375 3.887 3.883 3.268 3.648 3.140 4.064 3.804 2.750
+ 3.878 4.642 5.553 3.645 5.849 5.627 4.717 3.819 4.280 4.215 5.612 5.403 4.718 4.802 4.820 4.220 3.615 3.561 3.297 3.855 5.483 5.885 5.163 3.624 4.415 5.034 4.706 3.818 3.846 4.461 3.493 4.096 3.536 3.105 3.149 2.251
+ 4.072 6.140 6.532 6.531 5.842 5.762 5.121 3.531 4.077 4.155 6.317 5.484 4.577 5.507 5.064 3.298 3.362 4.539 4.330 4.765 5.056 5.066 5.526 4.583 4.400 5.036 4.386 3.442 2.892 3.212 3.772 3.549 3.050 3.016 3.309 2.169
+ 4.705 5.969 5.727 6.299 5.671 4.074 4.613 4.761 4.411 3.985 4.873 3.638 4.739 5.042 4.216 4.312 4.541 3.991 4.133 4.378 4.820 5.292 5.233 4.253 3.796 3.720 5.161 3.860 3.482 3.864 3.588 3.447 3.370 3.804 3.283 2.152
+ 3.667 4.552 4.887 5.473 5.657 3.742 3.671 3.679 2.419 3.105 3.496 2.979 3.589 5.126 4.660 3.564 3.148 3.434 3.530 4.976 4.845 5.402 5.223 5.781 5.743 3.712 4.080 4.137 3.873 3.514 3.381 3.600 3.948 3.787 4.034 3.612
+ 3.866 5.882 5.179 3.401 4.228 4.511 4.677 4.439 4.296 5.467 4.427 3.641 3.832 4.523 3.650 2.819 3.947 4.596 4.787 3.802 3.905 5.616 5.347 5.381 5.566 4.413 4.433 4.621 4.670 4.699 4.388 4.236 4.946 4.677 4.291 3.673
+ 5.966 5.606 5.716 5.962 4.452 4.130 5.914 6.161 4.974 6.187 6.029 4.939 3.487 4.380 4.367 4.248 4.708 5.352 4.872 4.443 4.340 4.636 5.290 5.227 4.718 4.567 4.989 4.156 4.481 4.260 3.904 4.559 5.522 5.087 3.920 2.820
+ 6.886 6.729 5.910 5.913 6.380 5.107 5.574 6.764 5.676 6.099 5.369 4.184 4.905 5.695 5.815 3.966 3.431 4.183 4.108 4.529 5.278 4.469 5.418 5.339 4.922 5.007 4.774 4.745 5.068 5.067 3.956 3.760 4.303 4.019 3.648 2.606
+ 7.424 8.777 8.085 6.922 6.801 7.750 7.935 5.935 6.202 7.038 5.788 5.355 5.360 5.612 4.723 4.217 4.278 4.010 4.508 4.942 4.973 5.922 6.548 6.978 6.372 6.193 6.858 6.179 5.840 5.393 5.818 5.813 6.408 5.012 4.701 4.481
+ 7.376 7.557 7.608 5.741 6.603 6.896 7.689 7.133 5.804 4.624 5.955 5.273 3.822 4.718 5.024 4.572 5.147 4.792 4.335 5.689 5.331 5.954 7.490 7.502 7.233 6.798 7.228 7.078 5.760 5.490 5.408 4.556 5.618 5.455 4.862 3.654
+ 7.474 8.188 7.432 5.470 6.234 8.039 8.456 6.177 4.585 4.529 5.960 5.374 4.011 4.896 4.758 5.495 5.023 4.918 4.221 6.080 5.824 6.694 8.168 7.956 7.783 7.658 8.050 8.241 6.819 5.966 5.447 6.023 6.086 5.305 4.633 4.141
+ 6.552 6.885 7.415 7.870 7.940 6.803 8.738 8.067 6.310 6.982 5.399 5.229 5.156 5.192 5.731 5.785 4.878 4.936 5.556 5.893 5.576 7.045 8.799 7.534 7.070 7.059 7.037 7.627 7.106 5.239 6.319 6.477 6.518 5.716 4.939 4.450
+ 10.008 10.007 9.580 7.858 6.862 7.897 8.357 7.077 8.445 8.684 6.478 6.137 5.661 4.822 5.381 5.101 5.339 4.972 6.310 5.720 5.543 7.696 8.745 8.083 7.649 7.401 7.965 8.633 6.828 5.065 6.147 6.692 6.387 6.193 5.888 5.895
+ 11.724 11.304 10.849 10.076 10.424 10.586 10.232 9.185 7.338 7.621 8.367 8.092 7.773 7.350 6.805 5.789 4.956 5.191 5.544 5.333 5.801 6.015 7.201 6.630 7.230 7.370 7.309 7.739 6.854 5.586 5.735 5.437 6.052 5.905 6.577 5.553
+ 10.531 11.283 10.551 9.711 9.970 10.457 10.689 8.299 8.250 8.646 8.055 8.189 7.926 7.815 7.216 6.560 6.350 6.813 6.982 6.068 5.947 7.624 7.678 6.568 8.147 8.644 7.839 8.325 7.100 6.170 7.153 7.422 7.816 5.971 6.317 5.287
+ 10.889 10.396 10.294 9.891 11.003 11.424 10.218 8.736 7.495 8.839 8.770 7.669 8.438 8.144 7.484 7.826 7.915 8.560 8.647 7.689 6.794 7.793 7.425 7.638 8.407 8.850 7.741 6.935 6.305 6.663 6.532 7.183 7.348 7.079 6.898 5.702
+ 11.832 12.124 11.879 11.965 11.922 12.010 11.077 8.666 7.981 8.540 9.212 7.734 8.694 8.536 8.545 8.505 8.572 8.774 8.323 7.104 7.442 7.901 7.168 8.044 9.087 8.506 7.563 6.453 6.256 7.051 7.460 7.936 7.720 7.228 6.423 6.202
+ 7.760 8.036 8.071 9.205 8.531 9.756 9.264 6.908 7.144 7.226 7.435 5.962 5.551 5.955 6.025 6.651 6.049 6.670 8.263 8.439 7.466 6.592 6.473 7.310 7.768 7.431 6.671 7.544 6.918 7.594 7.052 7.099 7.469 7.506 7.333 6.587
+ 8.788 7.901 6.998 8.087 8.460 8.650 8.115 7.943 7.676 7.895 7.916 6.900 6.972 7.248 7.494 7.787 8.152 7.536 7.509 8.461 8.883 8.253 8.345 9.529 10.143 9.411 7.936 8.176 7.905 7.832 8.935 8.857 9.594 9.651 9.399 8.492
+ 8.056 7.809 8.516 7.506 6.981 9.095 8.158 7.423 7.752 7.364 6.394 6.170 6.089 6.451 5.887 6.261 7.204 7.024 6.943 7.187 7.718 6.916 6.723 8.285 8.777 8.303 7.235 7.177 7.284 8.012 8.321 7.466 8.343 8.832 8.500 7.399
+ 7.925 8.077 8.279 7.561 7.742 9.590 8.523 4.107 4.283 4.787 5.477 6.032 5.663 5.128 5.344 5.800 6.350 6.119 7.352 7.611 6.478 6.630 6.173 7.030 6.982 7.106 7.471 7.344 8.099 7.616 8.153 8.519 8.415 8.446 7.715 6.562
+ 9.315 9.810 8.667 6.998 8.082 8.221 8.594 6.632 7.016 6.853 5.757 6.488 7.147 6.195 5.891 6.663 6.724 6.800 7.182 7.022 7.025 7.523 8.224 7.809 8.130 7.671 7.157 7.899 8.527 9.127 9.102 9.109 8.941 9.397 8.841 8.389
+ 7.652 9.943 9.971 7.951 7.586 8.102 7.064 7.116 7.454 8.022 6.714 6.015 6.466 6.036 5.585 6.052 6.561 6.240 5.976 6.395 7.222 6.424 6.165 6.582 6.744 7.424 6.925 6.386 7.669 9.172 8.439 8.383 8.762 8.209 7.854 7.729
+ 6.793 7.176 8.395 7.918 8.668 8.325 6.368 7.014 7.141 6.567 6.400 5.848 5.957 5.663 6.089 6.165 5.468 4.612 6.667 7.047 6.363 7.081 6.568 6.863 6.771 6.653 6.720 7.309 7.493 8.458 8.017 8.284 8.752 8.065 7.078 6.567
+ 6.809 7.227 7.700 8.238 7.263 6.002 6.688 5.757 4.459 5.424 5.219 6.334 6.231 5.349 4.813 5.186 5.403 4.612 5.905 5.551 5.875 5.991 6.849 6.532 6.056 6.787 7.027 6.259 6.424 6.773 7.266 7.318 7.836 7.416 7.083 5.978
+ 5.439 6.575 5.465 6.501 5.557 6.444 6.799 5.289 3.801 5.244 5.759 4.505 3.956 4.070 5.615 5.403 3.826 5.655 5.983 5.650 5.780 5.372 5.538 4.747 6.131 4.950 5.970 6.321 6.525 6.301 6.915 6.559 6.421 7.079 6.670 5.705
+ 9.316 8.989 8.036 6.732 7.179 5.184 4.863 4.181 4.352 5.123 5.354 5.957 5.887 5.758 6.428 6.168 5.161 5.489 6.451 6.280 5.429 4.454 4.628 4.910 5.864 5.106 6.058 6.475 6.404 6.936 6.190 6.431 6.401 7.057 6.782 5.927
+ 7.391 6.769 7.593 6.005 6.420 5.377 4.367 4.218 5.013 5.195 5.701 4.068 4.850 5.693 4.850 5.073 5.526 4.887 5.794 5.669 4.462 5.490 5.153 5.697 5.256 5.403 5.793 5.605 5.660 6.095 6.531 5.818 6.524 6.989 6.648 4.726
+ 4.031 5.789 6.997 6.449 5.388 3.159 3.262 4.915 4.034 5.466 5.376 4.480 4.199 4.006 4.788 5.098 5.858 4.790 5.808 5.146 4.460 5.481 6.059 5.713 5.548 5.630 5.857 5.809 5.752 5.985 6.334 5.481 5.983 6.384 6.405 5.151
+ 6.435 6.011 8.215 8.613 8.913 8.093 5.914 7.767 7.860 7.247 5.483 5.394 6.730 6.127 6.382 7.057 6.175 6.283 6.589 6.404 5.531 5.343 5.968 5.069 4.893 5.463 5.970 6.055 5.586 5.957 6.261 5.918 6.070 5.588 6.531 4.976
+ 9.863 9.533 9.416 10.138 10.056 9.640 9.470 9.180 8.853 7.651 4.689 6.476 6.708 6.199 5.576 6.649 6.017 5.536 5.863 5.604 4.636 4.709 4.335 4.885 4.863 4.773 5.279 5.526 4.859 4.803 5.470 5.703 5.139 5.350 6.569 4.600
+ 7.902 7.361 5.641 6.538 5.584 6.510 6.486 6.020 4.355 4.451 2.749 4.832 3.978 4.847 4.553 4.170 5.306 4.720 3.595 4.419 4.458 3.893 3.582 3.949 5.009 4.806 4.507 4.898 5.575 5.358 5.202 6.449 5.282 6.043 7.175 5.799
+ 4.452 4.684 3.017 4.100 5.379 6.291 5.452 5.444 5.789 4.882 3.190 5.221 4.183 5.506 5.812 4.426 3.923 4.853 3.889 4.327 4.331 5.546 4.229 3.557 5.255 5.276 4.483 5.247 5.868 4.769 4.720 5.258 5.504 5.397 6.003 4.774
+ 5.893 4.357 4.587 4.849 4.993 5.345 5.206 6.354 5.843 4.766 3.773 5.312 4.689 4.127 4.876 4.407 4.252 3.655 5.125 4.277 4.742 4.470 4.050 4.459 5.219 5.456 5.102 5.143 5.833 5.170 4.867 4.745 4.930 4.850 6.266 4.874
+ 5.405 4.372 3.720 3.360 3.373 4.933 5.374 4.775 3.678 4.535 2.799 2.685 3.566 4.636 4.576 4.112 4.584 3.633 4.441 4.469 4.477 4.535 4.796 4.193 4.110 4.439 4.204 4.128 3.877 4.784 4.504 4.055 5.009 4.511 5.139 4.338
+ 5.649 4.813 4.409 4.562 4.461 4.744 4.772 4.495 4.477 4.781 4.447 3.246 3.630 4.347 4.550 3.594 3.573 3.904 4.295 4.834 4.582 4.538 4.365 5.098 5.198 5.332 4.068 4.042 4.531 5.079 4.414 4.670 4.683 4.811 5.673 4.953
+ 5.134 4.596 3.999 5.054 5.706 4.701 4.670 3.202 3.945 4.140 3.535 3.162 3.338 4.555 4.769 3.927 4.058 4.327 4.814 4.430 5.217 4.535 4.310 5.643 5.156 5.147 4.351 4.564 4.554 5.300 4.897 4.420 5.216 4.042 5.500 5.172
+ 5.927 5.645 5.551 5.665 5.686 5.743 6.395 4.620 2.608 4.365 4.346 4.268 4.306 4.250 4.669 3.356 3.793 3.470 4.444 4.564 4.471 4.179 4.199 4.178 4.438 4.700 4.061 3.359 3.004 3.725 3.569 3.737 3.580 4.332 3.563 2.701
+ 3.006 5.559 6.110 4.834 3.549 5.200 5.127 4.234 4.363 3.973 3.073 4.622 4.357 4.235 4.874 4.763 4.082 2.939 3.445 4.459 4.781 4.357 4.157 4.260 3.857 4.090 5.320 5.006 3.713 4.169 3.930 3.956 3.545 3.936 3.720 3.120
+ 5.177 5.455 4.222 2.666 2.728 3.932 3.787 4.044 4.373 4.057 4.166 4.850 5.674 5.050 4.494 3.001 3.205 4.292 4.066 3.367 4.582 3.594 4.747 4.610 4.548 4.986 5.075 5.348 4.189 4.788 4.404 3.894 3.888 3.762 3.292 2.769
+ 4.136 4.084 4.067 3.893 3.861 4.938 5.694 5.374 4.694 4.021 4.155 3.619 4.422 5.434 4.332 4.270 4.810 4.579 5.182 4.768 5.327 4.962 5.353 5.108 4.667 5.484 5.154 4.656 4.237 4.389 4.696 4.319 4.187 3.330 4.083 3.786
+ 5.627 6.484 5.823 4.803 5.450 5.542 5.411 4.414 5.128 3.970 4.270 3.642 4.192 4.707 5.189 4.836 4.440 3.965 4.439 5.129 3.920 3.409 4.253 4.881 4.842 5.232 5.003 4.405 4.485 4.399 4.108 4.106 4.150 4.092 3.933 3.420
+ 4.629 4.280 3.623 4.455 3.495 5.157 4.449 4.024 3.538 4.299 4.045 4.607 4.355 4.503 3.531 3.619 2.612 2.963 3.157 4.762 4.603 2.870 3.398 4.080 3.865 3.760 3.790 3.705 4.141 3.626 2.899 2.901 3.476 3.794 3.718 2.939
+ 4.194 5.034 4.442 4.072 3.593 4.287 5.113 4.722 3.828 4.118 3.927 4.490 5.107 5.007 4.230 3.126 2.937 2.580 3.991 4.311 4.355 4.185 3.938 3.841 3.975 2.949 3.320 3.832 3.613 3.678 3.568 3.439 4.103 3.694 4.086 3.376
+ 5.319 3.861 3.424 2.013 3.073 4.435 4.075 3.582 3.187 4.277 4.688 4.590 2.955 3.589 3.781 3.200 3.671 3.167 3.935 5.498 5.053 4.339 3.743 2.699 3.916 4.236 4.341 4.245 4.162 4.396 5.032 4.568 4.484 4.419 4.819 3.918
+ 5.266 4.626 4.896 5.522 5.275 4.411 3.440 3.372 3.836 5.047 5.227 3.671 4.051 5.053 4.854 3.671 4.277 4.615 3.931 3.952 3.400 4.222 5.018 5.350 5.183 5.148 2.779 3.390 4.310 3.956 4.269 4.866 4.114 4.512 4.519 3.938
+ 4.231 5.244 4.583 5.164 5.327 5.163 5.086 3.770 3.404 4.074 5.441 4.655 5.030 5.436 5.839 4.125 3.715 3.151 3.548 2.959 3.194 4.080 4.405 4.706 4.990 5.044 3.471 4.352 4.693 4.433 4.511 4.701 4.784 4.714 4.303 4.309
+ 5.849 6.056 4.821 5.483 5.745 4.634 4.754 4.591 4.246 4.974 5.338 4.427 4.151 3.966 3.342 4.010 4.778 4.071 3.900 4.442 4.412 4.597 3.319 4.238 4.825 4.517 3.715 5.120 5.666 5.149 5.047 5.569 6.179 5.906 5.172 5.417
+ 5.580 4.367 5.236 5.956 5.115 4.652 4.946 4.553 2.858 4.000 4.334 3.693 3.051 2.987 4.234 4.050 3.681 3.829 5.348 5.515 4.385 4.283 3.937 3.972 4.649 4.141 4.553 5.148 5.234 5.160 5.901 5.624 5.615 5.902 5.916 5.456
+ 5.352 4.554 4.409 4.346 3.851 4.926 4.558 3.026 2.075 3.394 3.739 4.352 3.303 4.317 4.329 4.120 4.883 4.563 5.113 4.751 3.810 4.357 4.391 3.523 4.715 4.773 3.988 4.352 5.349 6.098 5.963 6.238 5.656 6.073 6.118 4.982
+ 4.234 5.731 5.914 5.230 5.026 5.597 5.048 2.226 2.254 3.522 4.184 4.531 3.420 4.048 4.088 3.717 4.143 5.147 5.205 4.407 3.877 3.599 5.060 5.648 5.800 5.194 4.320 4.717 5.014 6.163 6.972 6.173 5.900 5.878 5.571 4.943
+ 6.391 5.238 4.708 3.803 3.526 5.172 5.649 4.743 4.906 3.147 3.829 3.482 4.466 4.842 4.832 3.863 4.175 5.001 4.281 4.031 4.694 5.213 4.514 5.661 5.648 5.298 4.594 4.872 6.257 5.239 6.420 6.358 6.616 5.727 5.275 4.582
+ 6.778 6.265 5.490 4.788 3.957 4.333 5.389 5.077 4.422 4.614 5.388 4.537 3.818 4.507 4.833 4.671 4.575 5.463 4.565 4.079 5.109 5.422 5.368 6.002 5.968 5.403 6.907 6.015 6.204 5.840 6.147 6.712 6.994 6.800 7.045 6.188
+ 5.052 4.315 4.233 5.017 5.745 4.761 5.746 4.697 3.964 4.052 3.961 4.884 5.347 5.385 4.722 5.054 5.675 5.580 5.221 4.206 5.486 6.050 6.628 5.815 5.396 5.537 6.091 6.698 6.855 6.425 5.961 6.426 7.103 7.608 7.282 6.553
+ 5.252 5.971 5.768 5.694 5.921 5.793 4.868 4.139 4.424 5.332 5.774 4.939 3.634 4.362 4.478 5.226 5.752 4.266 3.445 4.068 5.551 5.339 5.543 5.420 5.770 5.078 5.412 5.726 6.471 6.301 5.277 5.280 5.427 5.845 5.426 4.499
+ 3.097 4.880 5.200 5.368 4.829 3.775 3.583 2.967 4.146 4.259 5.571 3.785 3.215 4.220 3.856 4.736 4.712 3.866 4.283 4.524 4.346 4.888 4.667 5.772 5.247 5.039 5.520 5.535 5.746 5.022 5.634 5.117 5.456 5.517 5.365 4.593
+ 5.382 3.616 3.841 4.340 5.355 4.941 6.483 6.246 5.771 5.448 5.085 4.411 3.834 3.374 3.929 3.911 4.568 3.216 4.043 5.664 5.597 5.040 4.430 5.269 5.554 5.379 5.812 5.625 5.753 4.787 5.643 5.326 5.288 5.802 4.592 3.729
+ 6.034 5.305 6.253 5.482 5.981 5.886 6.460 5.665 3.993 5.380 5.950 6.122 3.848 2.489 2.788 2.596 2.862 3.808 4.109 4.029 4.886 3.178 4.153 4.973 3.959 3.003 4.208 3.568 3.662 4.009 4.393 3.993 4.497 4.107 3.856 3.167
+ 5.519 6.075 5.715 5.449 4.385 4.772 4.971 3.879 3.510 3.720 5.268 4.559 4.046 4.193 3.062 2.761 3.569 4.129 4.590 3.025 4.406 3.845 4.748 4.367 4.329 3.912 5.118 4.785 5.578 5.923 4.979 5.354 5.464 3.913 4.102 4.386
+ 7.333 7.153 6.429 6.447 5.701 6.067 6.897 6.576 5.977 5.803 4.172 5.053 5.435 4.766 4.831 3.908 3.916 3.872 4.144 3.684 4.490 3.234 3.618 4.206 4.491 4.695 5.729 5.131 6.183 5.697 4.890 5.187 4.983 3.905 4.173 3.562
+ 8.548 8.845 7.040 6.106 6.273 6.108 7.242 6.835 6.710 6.377 5.797 6.445 6.022 5.500 4.844 3.977 4.477 3.649 4.208 4.089 3.861 4.096 3.517 4.739 4.309 4.221 5.083 5.478 5.761 5.335 3.803 4.754 5.480 4.446 4.851 4.294
+ 8.923 9.104 7.229 6.903 6.934 6.757 7.029 7.648 6.815 5.644 6.616 6.673 6.171 5.667 3.924 3.881 4.365 4.964 4.622 4.386 4.595 5.255 4.841 5.013 5.533 5.526 5.139 4.880 5.418 4.780 5.182 5.165 5.441 5.951 4.598 3.714
+ 8.302 8.264 8.167 7.235 6.903 6.633 6.761 8.019 7.429 7.265 7.202 6.817 6.330 6.929 6.322 5.639 4.574 4.592 4.751 4.762 4.929 5.443 5.774 4.547 6.080 5.836 5.650 6.683 6.400 6.075 6.033 5.605 5.946 5.684 5.206 4.896
+ 8.959 9.461 8.027 8.541 8.436 8.588 8.363 7.629 6.818 7.458 7.176 6.886 5.699 6.630 6.789 6.533 5.146 5.645 5.570 4.826 6.230 5.914 6.265 6.032 7.825 7.230 7.643 6.859 6.729 6.282 6.262 6.513 6.071 5.983 6.997 5.397
+ 9.265 8.239 8.692 7.397 8.834 8.976 8.811 7.252 7.799 7.363 7.304 7.683 6.443 6.822 7.218 7.740 6.756 6.664 6.865 6.084 6.853 7.068 6.832 7.781 7.671 7.152 7.937 7.863 6.858 7.005 6.775 6.538 6.558 6.705 7.621 6.114
+ 8.608 8.740 7.746 7.509 8.216 6.832 7.508 8.239 6.892 7.276 7.734 7.612 6.973 7.060 6.141 6.427 6.215 6.285 6.095 6.291 6.718 5.219 6.204 6.553 6.265 7.019 7.427 6.953 7.499 7.230 7.123 7.178 7.391 7.343 6.926 6.185
+ 8.993 8.544 7.197 6.679 7.716 6.835 7.099 8.138 7.457 7.306 7.499 7.771 7.201 7.446 6.260 6.148 5.938 6.270 7.223 6.396 6.353 4.347 5.147 5.358 6.698 7.933 7.541 6.098 6.750 7.383 6.678 6.722 6.998 6.604 6.384 5.191
+ 8.670 8.653 7.965 6.786 7.380 8.414 7.578 7.486 7.843 7.205 7.164 7.402 7.435 7.637 6.751 6.004 6.163 6.666 6.475 6.688 7.022 5.968 5.557 5.861 7.054 7.544 6.977 6.577 6.767 6.555 6.525 6.545 6.794 6.026 5.562 4.311
+ 9.616 8.527 8.117 9.265 8.937 7.743 7.605 7.111 7.807 6.513 7.658 7.179 6.963 7.680 7.003 6.791 5.827 6.866 5.453 5.234 6.914 6.580 5.752 7.300 7.642 7.823 7.241 6.488 6.565 6.515 6.136 7.069 7.079 6.928 6.815 5.163
+ 7.855 8.386 6.809 7.867 7.951 6.612 7.642 8.503 7.830 5.364 5.337 3.811 4.392 6.009 5.719 4.796 5.216 6.141 6.567 6.648 6.513 6.339 5.293 7.086 7.634 6.745 7.252 6.603 6.957 7.121 6.756 6.875 6.272 6.824 6.845 4.660
+ 7.299 6.643 4.635 4.744 5.818 8.627 9.773 9.015 8.137 6.518 5.727 4.998 6.535 6.966 5.552 4.452 6.319 7.362 7.907 7.343 6.681 7.134 6.410 8.474 9.027 8.103 8.645 7.887 7.617 8.787 8.453 9.444 8.635 8.649 8.930 7.877
+ 9.234 9.175 8.196 7.153 6.124 8.940 9.318 7.960 7.986 8.464 6.849 7.287 6.769 6.842 7.033 6.853 6.604 7.487 7.764 5.896 7.498 7.765 7.773 8.020 8.359 8.090 8.193 8.167 9.155 9.879 8.897 9.036 9.354 8.492 8.925 8.125
+ 8.018 9.105 8.175 7.402 9.770 10.092 8.350 8.214 7.651 8.037 6.556 6.708 7.106 6.692 7.038 7.433 5.953 7.245 6.580 7.623 7.678 8.004 7.873 7.939 8.677 8.789 8.122 8.443 8.983 9.099 9.064 8.037 8.849 8.718 8.590 7.873
+ 8.847 7.954 7.213 7.089 9.175 9.221 8.177 8.567 6.758 6.614 6.468 6.081 6.856 8.001 7.077 7.979 7.748 7.273 6.389 7.408 8.237 8.102 8.186 8.491 9.302 9.352 9.402 10.033 9.482 9.030 8.361 8.456 9.149 9.057 9.241 8.255
+ 8.260 8.109 7.236 6.503 5.922 8.811 9.133 8.056 7.682 7.208 5.742 6.928 8.054 6.660 7.481 8.155 6.343 7.629 7.796 7.410 7.587 7.779 8.280 9.141 9.373 9.296 9.464 9.844 9.231 9.401 8.593 8.792 8.404 8.821 9.174 7.431
+ 5.489 6.662 7.200 6.504 6.584 9.192 9.094 7.608 7.843 7.084 7.061 6.792 7.039 7.446 7.025 7.603 6.839 6.590 6.693 6.251 5.831 6.627 9.419 8.573 8.634 8.877 9.356 8.820 8.169 9.242 9.329 8.581 8.113 8.503 8.323 8.337
+ 7.491 6.626 6.926 7.561 8.687 8.470 8.438 7.827 7.538 6.972 6.886 6.904 7.057 7.573 7.087 8.049 7.712 7.239 7.419 7.155 6.924 8.187 8.945 8.421 8.894 10.304 10.536 9.274 8.596 8.639 8.605 9.251 8.638 8.263 8.614 7.819
+ 6.243 6.602 6.277 6.840 8.746 10.098 9.219 7.808 8.230 7.245 7.706 7.487 7.707 6.548 5.978 6.814 7.645 6.591 6.796 7.908 7.831 8.446 9.229 8.523 9.021 10.308 10.573 9.527 9.737 7.931 8.420 8.393 8.874 9.103 8.362 8.605
+ 5.780 4.649 5.548 5.707 7.132 7.940 7.980 8.923 7.473 6.102 6.331 7.215 7.313 6.142 6.318 6.769 7.048 6.268 6.367 6.055 7.756 8.335 9.088 8.191 9.317 10.063 10.331 8.771 9.403 8.001 7.579 7.767 8.274 7.902 8.110 7.706
+ 6.069 6.694 7.342 6.841 6.200 6.166 8.024 7.691 6.354 6.146 5.747 7.083 7.144 6.211 7.099 6.976 7.191 7.011 6.092 4.617 6.513 8.212 8.013 9.167 8.667 8.581 9.430 8.215 8.447 7.950 7.405 6.787 7.876 8.711 8.873 8.459
+ 6.959 5.402 6.067 5.941 6.008 7.675 7.097 6.792 5.970 6.439 6.367 6.398 6.578 6.613 6.299 6.822 6.647 5.940 6.318 7.029 7.253 8.964 8.502 8.918 8.746 8.788 9.305 8.730 8.027 7.268 6.925 7.520 7.715 8.113 8.728 7.919
+ 5.021 4.290 4.981 5.438 6.827 7.597 6.874 6.749 5.062 6.206 6.804 6.280 6.349 6.832 6.768 7.123 5.338 6.869 6.704 7.398 7.263 8.303 9.613 9.920 9.458 10.196 9.914 9.680 8.977 8.095 7.251 7.739 8.129 8.516 8.949 8.644
+ 2.948 3.060 3.337 4.767 5.314 6.192 7.190 6.208 5.223 4.518 3.777 5.291 5.733 6.817 6.847 7.189 7.082 6.704 8.156 7.602 7.625 8.203 8.007 9.546 7.952 8.175 9.598 9.757 8.690 7.360 6.861 8.219 8.819 8.766 8.191 8.466
+ 4.081 4.121 5.334 6.201 5.388 7.044 7.048 6.994 5.989 4.382 4.109 5.398 6.050 6.529 6.856 6.634 7.364 6.247 7.677 7.441 6.831 7.271 8.553 7.873 7.733 8.053 9.150 8.817 8.543 7.160 7.129 7.948 8.250 8.027 7.348 6.740
+ 4.523 4.933 4.984 5.615 6.932 7.302 5.526 4.937 5.243 3.126 2.818 5.617 5.634 6.904 7.459 6.809 7.165 6.445 5.236 6.787 7.010 6.294 7.516 7.175 8.146 8.433 7.987 7.634 7.676 6.662 7.346 7.374 7.529 7.286 6.669 6.240
+ 5.593 5.532 5.498 5.284 6.075 6.191 7.663 7.568 6.549 6.906 6.879 6.586 6.685 5.332 5.331 4.831 6.152 6.094 5.455 5.651 6.212 5.765 6.435 6.240 6.847 7.308 7.315 7.507 6.272 6.608 5.844 6.333 6.767 5.489 5.766 5.827
+ 5.663 5.978 5.181 6.451 5.836 6.698 7.001 6.732 6.450 6.397 6.350 6.168 6.286 4.821 5.321 5.133 4.208 3.592 4.665 3.867 3.607 4.161 5.343 5.256 6.525 5.784 5.497 6.362 6.229 5.864 5.491 5.609 5.971 5.424 5.231 5.028
+ 5.954 6.895 6.178 8.317 8.740 8.554 8.544 6.998 6.280 6.305 6.339 5.192 4.458 6.313 5.665 5.879 5.243 4.577 5.912 5.126 4.707 3.904 4.282 4.462 4.293 4.438 4.210 4.960 4.848 4.752 4.007 4.784 4.460 4.619 3.785 3.006
+ 8.037 7.778 7.275 8.320 10.508 9.835 9.920 9.204 8.513 7.605 7.856 8.056 7.580 7.763 7.482 7.649 8.622 8.369 7.092 6.049 5.903 5.439 5.897 5.965 6.322 7.693 7.118 5.898 7.064 6.481 4.562 4.573 4.559 4.273 4.330 2.538
+ 7.898 8.447 7.556 8.400 11.012 10.734 10.813 9.741 9.240 7.961 8.478 8.533 8.476 8.273 8.063 8.792 10.107 9.807 7.681 6.450 6.269 6.140 6.394 6.985 7.877 8.966 8.069 6.910 7.946 7.619 4.902 4.667 4.541 3.822 3.467 2.250
+ 8.234 8.775 7.678 8.473 11.039 10.673 10.827 9.932 9.551 7.814 8.419 8.746 8.645 8.332 8.102 9.362 10.375 9.866 7.959 6.076 5.886 6.347 6.105 7.259 8.193 9.254 8.237 7.362 8.098 7.605 5.587 6.087 5.825 3.952 4.392 3.732
+ 8.387 8.945 7.729 8.526 11.073 10.582 10.695 9.790 9.376 7.648 8.046 8.639 8.548 8.095 7.846 9.499 10.065 9.199 7.489 6.204 5.977 5.503 5.910 7.206 8.250 9.256 8.009 7.463 7.973 6.602 4.850 5.135 4.772 3.612 3.625 3.228
+ 8.506 9.037 7.627 8.527 11.190 10.862 10.611 9.477 9.023 7.027 7.533 8.464 8.394 7.686 7.265 9.479 9.909 8.599 6.786 5.755 5.797 5.419 5.899 6.947 7.933 8.663 7.367 7.359 7.790 5.095 3.800 4.557 4.653 3.376 3.396 3.049
+ 8.852 8.922 7.896 8.672 11.072 10.540 9.664 8.927 8.335 6.673 6.821 8.344 8.025 7.203 6.700 9.313 9.593 7.796 6.149 5.390 5.788 5.860 5.841 6.775 7.235 7.648 6.829 6.834 7.239 4.805 4.071 4.705 5.066 3.765 4.046 2.929
+ 8.723 8.718 7.741 9.095 10.822 9.825 7.914 8.421 7.481 5.922 6.753 7.860 7.240 7.393 6.893 8.714 9.062 6.896 6.728 6.389 5.363 4.902 5.515 6.708 7.417 7.664 6.622 6.068 6.936 4.696 3.675 4.869 5.166 3.652 3.686 2.776
+ 8.517 8.643 8.069 8.816 9.867 8.376 7.604 5.594 6.488 6.922 7.112 6.851 5.658 6.720 5.549 6.714 7.245 6.588 6.420 5.020 4.149 5.130 5.278 5.983 7.347 6.975 5.125 5.034 5.058 4.307 3.662 3.524 3.482 3.302 3.982 3.026
+ 8.482 7.989 7.592 7.947 7.843 6.286 7.803 6.988 4.974 5.258 5.791 6.346 5.636 5.616 6.045 5.590 6.253 6.512 5.401 5.608 4.742 4.414 4.190 4.852 6.152 6.641 4.731 5.345 4.988 4.253 3.630 3.657 4.198 3.116 3.865 3.218
+ 8.150 7.139 5.979 6.604 8.008 8.707 9.219 7.727 5.104 5.639 6.277 5.567 4.702 5.604 5.527 5.459 6.018 5.711 5.905 4.793 3.335 4.541 4.415 2.786 3.721 4.473 4.472 4.518 4.662 4.024 3.750 4.274 4.442 2.913 4.029 3.984
+ 8.062 7.152 5.779 6.701 7.761 7.730 8.823 6.634 5.242 4.062 4.861 5.054 3.487 3.203 3.831 4.997 5.820 5.469 4.620 4.909 4.141 4.230 3.893 3.214 4.852 4.363 4.173 4.646 4.428 3.605 3.214 3.458 3.977 2.737 3.598 3.447
+ 7.323 6.638 6.360 5.753 6.379 8.417 8.938 6.724 4.635 3.319 3.902 5.165 3.973 3.943 4.251 5.192 5.378 4.235 4.140 4.420 4.433 4.898 4.541 2.862 4.337 3.900 4.239 4.090 3.201 4.010 3.476 3.638 4.297 3.198 3.414 2.904
+ 6.987 6.160 5.821 5.557 6.044 5.589 7.275 6.164 5.021 3.511 4.389 5.229 4.987 4.702 5.468 5.584 5.346 5.542 4.295 4.458 3.954 3.763 3.698 4.227 4.106 3.694 4.364 4.315 4.205 3.964 3.370 3.756 3.832 2.219 2.951 2.585
+ 7.230 6.570 6.042 5.284 6.579 7.373 7.644 6.551 5.717 4.800 4.882 4.106 4.930 5.169 4.822 4.376 5.147 5.108 4.071 4.032 3.512 3.431 3.264 3.121 3.870 4.336 3.979 4.998 4.402 4.497 3.620 3.613 3.536 2.510 2.638 2.740
+ 7.836 7.552 6.377 6.157 6.988 5.754 6.666 6.672 5.268 5.048 5.576 5.392 5.317 5.709 5.733 5.311 5.609 5.724 4.744 3.156 4.132 3.956 3.449 3.399 4.043 4.852 4.082 3.932 4.098 4.000 3.796 3.461 3.076 2.522 3.326 2.985
+ 8.844 8.266 6.130 5.345 6.971 7.162 8.014 7.635 6.819 6.524 6.364 6.860 6.528 7.288 6.141 6.066 6.516 6.129 4.669 3.020 4.586 4.922 5.012 4.020 4.727 3.896 4.206 3.896 4.302 4.290 4.324 4.390 4.607 3.677 3.674 3.809
+ 9.214 9.022 7.508 6.006 6.395 6.702 7.775 8.260 7.805 7.332 7.457 7.658 7.573 7.460 6.657 6.658 7.706 7.691 5.816 4.298 4.901 5.727 5.360 4.101 5.552 4.925 3.916 3.840 3.842 4.173 4.074 4.035 4.232 3.673 4.199 2.886
+ 8.955 8.817 7.732 6.799 5.689 6.460 7.407 8.752 8.384 8.092 7.733 7.651 8.043 8.281 7.675 7.766 8.520 8.060 5.486 3.842 5.278 6.416 6.195 5.089 5.887 5.418 3.838 3.050 3.503 4.439 3.379 3.845 4.242 3.407 3.442 2.239
+ 8.709 8.498 8.084 7.524 5.708 7.331 8.078 8.499 8.169 8.155 7.991 7.981 8.021 8.216 8.182 8.128 9.069 8.541 6.489 5.523 5.515 5.555 5.683 4.911 6.219 6.102 3.126 3.610 4.163 4.534 3.078 4.012 4.008 2.803 2.898 1.818
+ 8.628 8.021 7.816 6.920 6.501 7.546 8.325 8.714 8.443 8.426 7.817 7.663 8.059 8.188 7.701 7.351 8.188 7.937 6.378 4.466 4.143 5.598 6.236 4.851 6.224 6.204 3.187 3.690 4.616 5.052 4.220 3.704 4.260 3.217 3.023 2.126
+ 8.308 7.365 7.103 5.854 6.332 6.612 8.555 8.690 7.513 7.462 6.413 7.395 6.899 6.896 6.755 6.742 7.619 6.931 5.954 5.530 5.310 5.326 5.585 4.482 6.439 5.789 3.254 2.982 4.796 5.108 3.843 4.091 4.721 3.851 3.073 2.527
+ 8.243 7.139 5.983 6.225 6.225 7.184 8.425 7.966 7.219 6.340 5.141 6.627 6.107 6.109 6.509 5.960 6.372 6.580 5.643 6.057 5.564 5.602 5.251 5.240 6.379 5.978 4.681 3.540 5.128 5.365 3.741 3.938 3.343 2.556 3.098 2.794
+ 8.054 8.233 6.981 4.201 5.750 6.697 7.361 7.549 7.184 5.511 3.734 5.416 5.438 6.037 5.838 5.230 5.949 5.198 5.406 3.451 4.720 5.783 5.129 4.896 6.852 6.410 3.681 3.847 5.081 5.290 3.969 3.653 3.072 2.790 2.852 2.611
+ 4.943 6.733 6.298 4.206 5.316 6.014 5.532 6.074 6.267 4.844 4.978 4.887 3.711 4.967 4.771 4.369 5.103 4.039 3.680 3.052 4.289 4.645 4.749 4.119 4.956 4.434 4.179 3.393 3.062 3.435 3.495 3.041 3.140 2.615 1.632 1.747
+ 7.092 7.032 6.053 2.892 5.254 6.087 5.385 6.114 4.277 4.311 5.893 4.574 4.599 5.887 5.550 4.328 4.590 4.423 4.278 4.581 4.008 4.937 4.722 5.165 5.432 4.722 4.124 3.836 3.660 3.276 3.279 3.230 3.321 3.257 2.292 2.229
+ 7.454 7.782 6.591 4.476 3.948 4.772 5.409 5.582 4.260 2.684 4.557 4.282 2.562 3.642 4.069 3.129 2.257 5.412 5.146 3.968 3.184 3.584 3.644 4.180 3.176 3.753 2.858 3.612 3.020 2.769 2.581 2.649 2.639 3.036 3.181 1.452
+ 6.037 6.232 5.465 3.801 3.962 4.044 4.527 4.175 4.165 2.879 3.743 3.941 2.986 4.556 4.707 4.777 4.166 5.474 5.021 4.492 4.286 2.379 3.189 3.981 3.239 2.884 3.616 4.212 2.992 3.331 2.483 2.924 2.806 2.604 2.025 1.201
+ 2.001 4.344 5.473 4.530 4.396 4.937 4.203 5.436 4.447 2.586 4.311 4.337 3.177 4.918 5.045 3.502 3.931 4.462 4.268 4.103 3.756 3.367 3.608 3.898 3.180 3.224 3.211 3.564 4.107 3.702 2.463 2.640 2.587 2.419 1.973 2.010
+ 4.398 4.535 4.856 4.598 4.900 4.619 4.481 5.300 3.139 2.775 3.714 1.763 2.486 3.379 3.327 2.909 3.532 3.597 3.840 3.993 4.087 3.592 3.196 3.510 3.907 3.402 3.606 3.883 3.437 3.648 2.821 2.947 1.563 2.116 2.272 1.997
+ 5.797 6.748 6.682 4.823 4.525 6.039 5.778 4.038 3.190 2.243 2.886 2.847 3.430 3.830 3.530 3.833 3.880 4.095 1.813 2.613 3.916 4.087 4.131 4.224 3.316 3.039 2.813 3.417 3.258 2.869 2.825 2.299 2.448 3.122 2.658 1.727
+ 5.226 5.756 5.858 2.992 3.585 6.135 5.955 4.271 3.641 3.985 4.080 3.226 3.337 3.238 4.812 4.555 4.887 4.796 3.756 3.842 3.463 4.135 2.789 3.832 3.888 2.919 2.156 2.455 2.439 3.071 2.482 2.526 2.367 2.512 2.157 1.821
+ 8.581 8.247 7.839 7.473 7.547 7.119 5.610 4.396 5.340 5.392 3.870 4.217 4.348 4.960 5.452 5.662 4.854 4.602 5.031 5.094 3.518 4.538 4.777 5.889 6.252 5.925 5.708 5.788 6.124 5.608 6.203 5.204 3.600 4.591 5.464 5.801
+ 9.025 9.453 8.407 8.021 8.605 8.067 6.943 6.627 6.371 7.145 5.572 6.345 6.159 6.159 8.601 9.492 8.570 8.625 8.350 6.756 5.577 6.645 8.139 7.895 7.892 8.000 7.815 8.074 8.938 8.919 8.340 7.673 6.329 6.210 7.738 7.804
+ 8.220 5.999 5.724 4.800 4.135 4.553 5.615 6.548 5.863 5.420 4.087 4.468 4.515 4.572 7.286 8.057 7.581 6.936 6.136 4.064 4.144 5.792 6.614 5.451 6.377 5.510 6.450 6.591 7.013 7.134 5.682 4.716 4.559 5.038 5.178 5.201
+ 6.181 5.424 4.856 2.985 3.035 3.871 4.575 3.940 3.570 3.495 2.341 3.874 3.727 4.088 3.961 3.909 4.093 4.465 3.407 3.440 4.156 3.442 4.020 4.181 4.010 3.926 3.684 3.855 4.317 4.510 4.369 3.409 3.488 3.034 3.515 2.840
+ 4.878 5.128 5.029 5.607 5.360 4.366 4.655 5.727 3.796 2.560 3.341 4.936 5.311 5.172 5.269 4.606 4.581 4.377 4.289 3.635 3.792 4.241 4.454 4.783 5.217 4.319 4.224 4.098 5.107 4.834 4.866 4.997 5.356 5.026 5.252 4.808
+ 5.238 5.036 4.404 5.295 5.214 4.993 4.454 4.164 3.251 2.855 4.931 4.971 3.940 4.872 5.140 4.918 4.716 5.261 5.663 4.860 5.483 5.338 4.928 4.885 5.307 5.307 4.796 4.560 5.184 4.767 4.680 4.661 5.307 4.890 5.161 4.627
+ 6.242 5.633 2.899 4.376 4.925 5.295 5.371 4.758 5.043 4.679 5.578 4.370 4.117 5.235 6.019 6.359 6.302 5.282 5.072 5.337 5.309 5.996 6.827 7.144 7.766 7.846 7.770 7.549 6.954 6.485 5.996 6.125 6.720 7.094 7.246 6.737
+ 6.167 5.383 5.535 6.143 5.539 5.714 6.628 6.494 5.387 5.831 6.293 5.485 5.106 5.982 7.219 6.735 5.607 5.410 4.807 4.231 5.368 6.298 7.771 7.310 8.451 8.543 8.346 8.052 7.603 6.915 6.902 6.576 6.941 6.889 6.730 5.738
+ 5.337 5.481 5.044 2.974 4.567 4.457 5.169 5.489 5.696 4.819 3.861 4.420 5.680 6.440 6.554 5.799 7.269 6.308 5.051 5.654 7.133 6.460 7.475 7.370 8.655 9.013 8.685 8.853 8.521 7.944 8.591 7.585 7.900 7.166 7.698 5.860
+ 6.736 7.076 6.412 5.289 5.934 5.448 5.511 5.892 5.151 4.253 4.746 5.209 5.620 5.341 5.356 6.539 6.748 5.381 4.753 4.966 5.637 6.515 7.156 7.403 6.783 6.575 6.306 6.527 6.759 6.546 6.927 6.396 6.212 5.818 6.142 5.563
+ 7.148 6.694 7.025 6.651 7.669 7.350 7.848 6.509 5.494 5.229 5.166 3.772 5.585 6.420 6.046 7.351 7.924 6.498 5.794 4.796 5.406 5.946 7.050 7.055 6.835 6.287 6.116 5.975 5.684 4.835 6.451 6.717 6.882 5.550 6.487 6.108
+ 8.421 7.759 6.223 5.244 6.492 7.533 8.068 6.390 5.120 6.393 5.969 4.412 5.141 4.412 4.903 5.006 5.546 5.748 4.089 4.883 5.149 5.753 5.699 5.050 5.743 6.523 6.555 6.832 6.918 5.369 5.680 6.664 6.364 5.486 6.274 6.555
+ 8.721 6.818 6.382 7.375 7.742 7.497 6.837 6.768 4.953 4.914 5.479 5.623 4.572 4.148 4.834 5.389 5.611 5.841 4.202 4.731 5.521 5.548 5.166 5.636 4.845 5.509 5.853 5.501 5.241 5.405 5.257 5.459 4.847 5.423 5.274 5.505
+ 4.588 6.066 5.989 5.835 6.129 5.954 5.229 4.989 5.066 4.519 4.556 4.703 6.405 5.256 4.857 4.991 6.142 5.765 6.148 4.804 4.987 5.508 4.877 5.388 4.904 6.361 5.642 5.745 5.556 5.074 4.736 5.051 4.660 3.808 4.458 5.189
+ 4.961 5.731 6.531 6.539 6.060 5.548 5.232 5.274 5.738 5.557 4.975 4.391 5.412 5.436 5.877 4.543 4.693 5.871 5.659 4.440 4.099 5.615 5.947 5.904 5.100 6.537 5.336 5.312 5.184 5.742 5.344 6.003 4.824 4.558 5.269 5.018
+ 5.599 5.229 6.609 7.117 6.260 5.141 4.946 5.455 5.976 6.337 5.432 3.757 5.278 5.784 5.186 4.755 5.052 4.875 4.201 4.094 4.938 4.966 4.926 5.266 5.045 5.615 4.621 5.427 5.029 4.421 4.311 4.221 4.656 4.837 5.231 4.614
+ 5.979 4.092 5.406 6.652 6.030 5.345 5.964 5.653 5.099 5.197 4.602 5.635 5.174 5.504 5.135 4.586 3.136 4.959 5.091 3.479 4.385 5.240 5.291 5.502 5.075 5.592 5.633 5.532 4.383 4.816 5.120 4.525 5.198 5.583 5.156 4.366
+ 7.132 5.920 5.122 5.108 5.814 5.330 5.023 5.700 4.763 4.378 3.695 4.788 4.477 5.247 5.097 4.453 4.942 4.746 4.901 4.299 3.727 4.232 4.644 4.629 3.887 4.827 3.995 3.477 4.291 4.568 4.110 3.864 3.652 3.664 3.881 3.473
+ 4.237 3.973 5.643 6.498 5.266 5.278 5.305 5.622 5.539 4.889 4.533 3.953 4.641 5.645 5.533 3.520 3.268 2.466 4.585 3.841 3.587 4.045 3.255 2.800 4.122 4.259 3.412 3.885 4.217 3.107 3.905 4.049 3.167 3.512 2.998 2.773
+ 4.810 2.923 3.053 4.593 5.792 6.109 4.968 3.811 4.713 5.128 4.456 4.368 4.629 5.064 5.111 3.380 4.997 4.842 4.690 4.697 5.060 4.224 3.803 4.218 5.657 5.839 5.314 5.806 5.748 5.362 4.893 4.459 4.718 4.042 3.960 3.348
+ 5.867 5.111 4.019 4.560 4.517 5.064 5.034 5.311 4.886 5.582 4.510 5.255 4.837 6.301 5.669 5.164 5.122 5.060 5.097 4.371 4.521 5.171 5.408 5.739 6.183 5.793 6.049 6.378 5.327 5.727 5.141 4.675 5.422 4.992 5.559 4.872
+ 6.152 6.283 5.807 4.517 5.244 5.772 5.364 5.703 5.813 4.135 5.309 6.587 5.977 6.065 5.352 4.436 4.902 5.756 5.077 3.993 2.904 4.122 5.643 5.338 4.579 5.926 5.991 5.519 5.721 5.320 4.908 5.027 5.805 5.433 5.286 4.566
+ 4.173 5.974 5.899 4.869 4.907 4.687 6.089 5.369 3.963 3.139 3.699 4.573 4.245 5.626 5.844 6.487 5.841 5.874 5.692 5.263 6.121 5.844 5.339 7.193 6.497 6.482 6.610 7.365 6.979 7.757 6.959 7.572 7.393 6.663 7.181 6.728
+ 5.749 4.904 4.550 4.875 4.492 5.362 6.527 5.943 5.062 4.159 4.985 4.666 4.069 4.637 5.148 5.632 5.614 5.043 4.715 4.329 5.652 5.029 5.223 5.792 5.758 6.222 6.385 6.088 5.902 6.377 5.912 6.138 6.566 5.667 6.085 5.520
+ 5.292 6.676 7.288 7.964 8.393 8.768 8.591 7.896 6.945 5.551 6.298 6.487 5.715 5.243 4.848 4.194 4.556 4.995 4.552 5.320 4.630 4.277 5.964 5.295 5.077 5.362 4.487 5.354 6.422 6.316 5.646 5.465 6.174 6.148 5.277 4.089
+ 6.187 5.527 5.682 6.731 6.433 7.764 7.216 5.812 5.028 4.984 4.670 3.051 4.804 5.983 5.035 4.498 5.505 5.465 4.860 5.265 4.635 6.117 6.185 6.257 6.355 5.627 5.937 6.159 4.650 4.852 5.180 6.299 6.204 5.806 5.549 4.482
+ 6.247 6.938 5.584 6.251 8.710 8.824 7.995 8.884 7.296 6.087 6.968 6.389 6.032 6.368 5.639 6.429 5.871 6.226 6.715 5.903 6.337 7.517 9.006 8.745 8.650 7.057 7.343 7.459 6.862 7.812 7.982 7.678 7.130 6.966 6.835 6.839
+ 6.631 6.170 5.946 6.847 9.264 8.360 7.126 9.382 8.999 5.845 6.860 6.499 5.661 5.224 6.128 6.150 6.091 5.928 6.198 5.404 5.606 6.237 8.808 8.969 8.910 8.199 8.581 8.464 7.604 8.129 7.819 6.740 7.440 7.513 6.510 6.741
+ 5.662 5.942 4.482 7.280 9.407 8.437 6.652 9.393 8.845 5.088 4.270 4.493 5.235 5.718 4.782 4.759 5.095 3.934 5.380 5.348 5.630 7.038 9.167 8.574 8.028 8.471 8.890 9.280 8.115 7.233 5.732 7.404 6.978 5.462 5.053 4.187
+ 5.777 5.176 4.605 6.542 8.566 7.716 7.075 9.233 8.214 5.581 6.569 5.629 5.452 4.535 4.414 4.127 4.197 3.802 5.562 5.488 6.236 7.407 9.051 8.032 7.798 7.626 8.239 8.528 7.783 7.147 6.448 8.038 7.063 5.140 4.520 3.607
+ 5.107 4.771 4.224 6.759 7.203 4.918 4.884 6.482 6.575 4.339 4.681 3.941 4.177 5.217 4.861 4.217 5.005 4.972 4.817 4.910 5.653 6.734 6.600 5.847 5.971 6.532 6.596 5.996 5.615 5.415 6.076 6.520 6.517 4.448 4.027 3.231
+ 4.421 4.681 3.644 6.116 6.638 7.043 6.115 5.199 5.551 5.581 4.778 3.706 3.668 3.564 3.601 3.405 4.078 4.238 4.091 4.142 4.107 5.241 6.132 5.816 5.683 5.498 5.347 5.523 5.222 4.130 5.506 5.832 6.255 4.559 4.350 3.538
+ 6.711 6.029 3.443 6.484 8.495 7.553 5.836 5.573 5.661 4.431 4.075 3.661 4.243 4.328 4.068 3.508 2.986 4.007 3.984 3.713 3.955 5.159 6.008 5.520 4.995 5.159 5.514 5.405 5.608 5.020 5.087 5.382 5.202 5.207 5.159 4.787
+ 6.471 6.850 5.595 6.503 8.153 7.267 4.842 5.281 5.058 4.683 5.751 5.115 4.289 4.891 4.392 3.290 3.417 3.610 3.947 4.341 3.972 5.128 5.197 4.985 4.833 4.593 4.873 5.200 5.962 4.894 4.690 4.409 4.667 3.751 3.035 3.042
+ 4.436 5.783 5.029 6.605 6.499 5.967 4.141 4.522 4.068 3.973 6.026 5.067 3.404 3.142 3.571 3.313 4.187 4.259 4.748 4.322 3.595 3.716 5.159 5.445 4.852 4.378 4.920 4.890 4.486 3.258 4.161 4.891 4.575 4.690 4.220 3.265
+ 5.507 4.385 4.922 6.490 7.721 6.677 6.002 6.663 5.495 4.587 6.001 5.880 5.439 4.666 4.806 3.352 4.538 5.790 4.314 3.427 5.127 5.043 4.507 5.587 6.158 5.456 5.707 5.719 4.802 4.257 4.908 5.488 5.288 4.716 5.346 4.467
+ 5.024 4.562 3.596 4.326 6.749 7.367 6.387 5.327 4.697 3.957 3.851 4.305 4.964 5.127 5.059 3.184 3.543 4.403 3.719 4.731 5.837 4.851 5.216 4.904 5.006 5.062 7.681 7.376 5.331 5.029 6.017 5.242 5.192 5.158 5.645 5.863
+ 4.797 4.706 4.168 4.934 8.253 10.081 9.139 6.112 5.637 4.264 4.481 4.903 4.338 5.278 4.974 4.611 4.443 5.744 7.149 8.243 7.369 6.131 5.859 6.405 7.040 7.455 7.934 7.312 6.085 5.516 5.531 4.849 5.177 4.726 5.483 5.345
+ 3.090 2.734 3.226 4.576 10.213 11.424 9.580 6.834 6.932 5.931 5.538 6.175 4.785 6.919 5.873 5.901 5.514 7.949 8.383 10.081 7.996 7.761 5.761 7.653 7.939 8.662 9.543 9.439 6.899 6.908 6.478 5.752 6.751 6.143 5.460 5.035
+ 4.329 5.224 5.384 5.398 10.392 11.458 9.089 7.271 8.592 7.593 6.291 6.629 4.987 7.551 6.509 6.428 5.991 8.740 9.321 10.809 7.976 7.459 5.449 7.478 8.302 9.183 10.097 10.566 7.553 7.013 7.178 7.930 8.559 7.095 5.126 5.216
+ 4.317 4.342 5.566 4.764 10.105 11.007 8.542 8.629 10.592 9.010 5.618 7.083 5.009 7.297 6.347 7.093 6.471 9.258 9.270 10.722 8.017 7.774 4.767 7.546 8.228 9.268 10.286 10.786 7.825 7.153 7.610 8.582 9.173 6.985 5.084 4.762
+ 5.100 5.400 4.946 4.612 9.596 9.981 5.996 9.059 11.327 9.703 6.487 7.313 5.098 6.918 5.952 7.192 6.697 9.959 9.141 9.688 7.676 7.504 4.613 7.844 8.155 9.257 10.414 10.975 7.344 6.850 7.544 9.258 9.776 6.755 4.495 5.541
+ 6.525 6.150 5.364 5.954 9.971 10.308 7.315 10.111 11.886 9.962 6.906 7.336 4.906 6.727 5.566 6.887 7.196 10.497 9.349 9.050 7.076 6.673 5.459 7.620 8.563 8.973 9.848 10.353 7.449 6.903 6.397 9.614 9.836 5.662 4.871 5.332
+ 4.746 4.012 5.622 6.209 10.004 9.808 7.210 11.012 12.154 9.774 7.551 7.710 6.697 7.369 5.729 6.973 7.330 9.788 9.227 9.188 6.152 5.425 5.833 6.672 7.665 8.654 9.907 9.373 7.213 6.013 6.673 8.434 8.712 5.992 4.926 5.040
+ 6.887 7.245 5.946 7.291 10.165 9.808 7.796 11.483 11.653 8.869 6.639 6.189 6.584 8.036 6.302 5.889 5.946 7.328 8.177 7.454 7.036 5.368 5.541 5.461 5.470 7.481 9.066 8.596 7.641 7.553 7.264 8.283 8.671 7.048 6.939 6.062
+ 5.656 6.346 6.183 7.579 8.625 9.276 8.859 10.975 9.706 6.971 6.343 5.835 6.859 7.641 5.749 5.545 7.962 8.595 8.523 7.276 6.914 6.552 4.737 5.603 5.888 6.712 8.723 8.413 6.248 5.802 6.149 8.127 8.368 5.933 4.829 4.384
+ 7.166 6.174 5.793 6.396 8.670 8.576 8.229 9.318 8.776 7.516 6.788 6.845 5.836 6.403 6.604 6.923 7.440 7.390 7.013 6.542 5.539 5.602 5.275 6.136 5.254 5.848 7.553 7.836 5.497 5.656 5.600 6.163 6.342 5.104 4.875 4.459
+ 6.350 6.719 5.131 6.324 7.115 6.423 6.784 8.557 7.828 6.766 7.970 7.035 4.994 5.074 5.018 6.270 6.756 7.639 6.253 7.002 5.217 5.261 4.746 4.994 4.828 5.548 6.862 6.640 4.423 4.333 5.369 6.115 5.665 3.803 4.492 3.723
+ 6.862 7.242 5.693 7.020 8.451 7.927 7.865 8.654 8.970 7.331 6.297 5.594 5.324 5.866 5.232 5.767 5.725 6.196 5.218 5.519 4.876 4.692 5.292 5.788 5.746 6.117 6.362 5.619 4.397 3.528 5.155 6.143 6.005 3.804 3.581 3.798
+ 5.221 6.062 5.903 7.874 8.938 7.144 6.523 6.532 7.903 6.143 5.437 5.909 6.598 6.310 5.503 6.374 6.649 4.121 5.350 5.967 5.121 5.177 5.461 5.900 4.867 5.311 4.887 5.716 4.483 3.827 4.263 5.472 5.207 3.798 3.467 3.905
+ 2.856 3.963 5.165 6.977 8.508 7.051 6.185 8.274 8.346 5.618 5.566 5.373 6.756 5.452 5.323 6.838 6.955 5.620 5.755 5.544 5.114 4.686 6.192 5.666 4.954 4.980 4.479 4.617 3.744 4.040 3.714 4.542 4.342 4.395 3.854 3.555
+ 5.055 3.729 5.029 6.142 7.269 6.404 7.549 8.446 6.902 5.770 6.527 5.912 6.150 5.195 5.656 6.167 6.162 5.441 5.333 4.685 4.674 4.127 5.253 6.311 5.204 4.918 5.789 5.331 4.772 4.267 4.839 5.366 4.492 3.863 3.921 4.206
+ 3.630 4.024 4.464 7.121 8.000 6.468 7.732 8.874 6.687 5.689 6.028 5.747 6.733 6.126 7.221 6.228 5.265 7.051 5.957 5.056 4.136 4.689 6.221 6.177 5.845 5.500 5.579 5.450 4.600 4.607 4.645 5.022 4.814 4.182 4.015 3.308
+ 5.370 4.929 5.180 7.317 8.468 6.294 7.476 8.886 6.857 5.910 5.881 5.640 6.155 5.511 5.801 5.772 6.027 6.768 5.753 5.899 5.341 4.663 5.089 6.379 5.346 5.305 5.760 5.748 4.953 4.050 4.271 5.384 5.776 5.182 4.961 4.566
+ 7.201 6.278 6.053 7.863 8.378 6.116 7.055 7.827 5.840 6.087 6.093 6.807 7.239 4.121 4.610 6.854 6.284 5.993 5.706 5.668 5.675 5.175 5.823 6.090 4.988 5.164 6.154 6.049 4.442 4.806 5.428 6.095 6.114 5.641 5.094 4.119
+ 6.842 5.814 5.734 7.648 8.888 7.274 6.428 6.901 5.318 6.123 4.312 7.660 7.992 5.699 4.701 7.175 6.759 6.213 6.283 5.291 5.709 5.086 6.226 6.312 5.133 5.554 7.014 6.360 5.094 5.105 4.058 6.280 6.028 5.201 4.698 4.742
+ 6.859 5.544 6.152 8.237 9.084 6.978 7.899 8.956 6.972 6.549 5.584 8.229 8.116 5.474 5.510 7.242 6.266 6.469 5.488 5.066 4.486 4.693 5.831 5.233 5.106 4.935 5.290 5.272 5.325 4.933 5.188 5.271 5.973 5.991 6.253 4.660
+ 5.963 6.391 5.885 8.619 9.244 7.076 9.052 9.199 6.766 7.052 5.660 8.301 7.598 4.315 5.437 6.837 5.204 5.759 5.434 4.602 3.325 4.393 4.607 5.169 5.325 4.499 5.008 5.613 5.320 4.275 5.210 5.264 5.091 4.650 4.935 3.942
+ 7.746 6.152 4.489 8.540 9.234 7.385 9.324 9.450 6.698 7.311 7.151 7.678 8.016 6.519 6.861 7.246 6.936 7.456 7.120 7.264 7.457 7.401 7.662 7.988 7.798 7.995 7.885 7.700 7.549 7.331 7.876 8.211 8.424 8.433 8.140 7.446
+ 4.877 3.257 3.789 7.466 8.465 7.454 9.252 8.398 7.297 7.783 7.917 8.543 7.024 5.969 6.161 6.381 5.445 6.182 5.983 5.684 6.236 6.008 6.567 6.511 6.646 6.821 6.490 6.444 6.610 6.071 6.620 7.039 7.126 6.990 6.640 6.087
+ 6.165 5.932 5.951 8.384 8.687 7.373 7.501 5.951 7.713 8.382 7.796 8.464 7.568 6.704 6.711 6.517 5.507 6.212 5.634 4.250 4.755 5.348 4.430 3.515 3.960 4.239 5.058 6.423 6.814 5.765 5.987 5.279 5.181 4.215 4.392 3.653
+ 6.268 6.234 5.795 7.702 8.575 7.695 7.057 8.483 8.167 8.342 8.073 7.512 7.295 5.847 6.470 7.455 5.562 5.206 5.282 6.044 4.280 4.458 5.090 4.529 4.224 4.280 4.826 5.793 6.108 5.120 5.126 4.988 5.114 5.100 4.449 2.979
+ 6.322 5.453 4.938 7.284 7.832 7.551 8.458 8.905 8.367 8.275 7.777 8.102 7.528 7.251 7.733 9.150 6.979 6.088 5.750 5.282 5.299 4.802 5.019 4.265 4.309 4.248 4.965 5.243 5.224 4.765 5.958 5.606 5.187 4.608 3.784 2.987
+ 6.013 6.777 5.822 7.481 7.406 7.762 8.891 8.840 8.310 8.436 8.750 8.391 8.634 7.303 7.545 10.688 10.050 7.727 6.378 5.991 5.838 5.502 4.923 4.981 4.122 4.527 6.206 6.405 6.110 4.376 6.650 5.894 5.586 4.013 3.835 2.540
+ 4.327 6.084 6.152 7.026 7.117 6.207 7.359 6.438 8.866 9.055 7.977 8.749 6.407 8.021 7.953 9.216 9.253 8.247 7.556 6.760 6.467 6.137 5.629 5.549 5.650 5.858 7.278 7.530 6.713 6.655 6.289 6.051 6.130 4.980 3.934 2.807
+ 5.893 5.157 3.588 6.471 5.767 6.906 8.816 7.484 9.318 9.952 9.116 10.174 8.275 6.786 7.615 7.472 7.826 9.062 9.518 8.004 7.177 6.724 6.676 6.797 6.676 7.207 8.759 8.883 7.350 7.536 7.261 7.042 6.386 5.982 4.569 3.269
+ 5.884 5.186 5.349 6.867 6.325 7.562 9.592 8.364 9.731 10.145 8.927 9.778 6.941 7.752 7.031 7.509 8.214 8.782 9.877 10.282 9.198 7.013 6.957 7.180 7.331 7.948 9.207 9.291 7.953 7.686 7.003 7.504 6.946 6.307 4.243 3.415
+ 5.910 6.195 4.840 5.366 6.044 7.458 9.416 8.236 10.066 10.667 8.597 9.633 7.726 7.927 6.587 7.184 7.925 8.233 9.179 10.806 10.364 7.570 8.273 7.881 8.076 9.122 8.771 9.207 8.170 7.810 8.282 8.357 7.870 7.340 4.254 3.812
+ 4.368 4.383 4.350 6.378 6.541 6.415 8.727 7.475 10.335 10.682 7.549 8.197 6.181 7.010 6.730 7.558 6.441 6.980 7.725 9.142 9.019 9.093 9.363 8.172 8.906 9.902 8.841 8.706 6.646 8.008 8.602 7.276 7.642 6.985 5.061 4.519
+ 5.612 5.941 5.457 6.974 6.409 6.833 8.949 7.689 9.746 10.041 6.883 7.949 6.131 6.928 5.917 6.898 7.316 6.408 6.854 8.637 8.409 8.423 9.894 8.871 9.602 10.020 8.994 7.645 6.127 7.367 9.005 7.335 7.752 7.304 5.112 4.296
+ 5.970 3.646 3.700 7.139 7.359 7.436 9.024 7.515 8.436 8.788 6.043 7.372 6.392 6.600 5.928 6.130 4.861 5.047 6.404 8.803 8.510 7.783 8.566 10.019 9.675 9.216 9.043 7.925 7.092 6.848 9.072 7.410 7.237 6.576 4.913 5.218
+ 5.290 5.089 4.681 6.539 5.820 5.927 7.633 7.119 7.195 6.912 5.780 6.148 5.626 6.730 4.863 4.750 4.323 5.064 5.617 7.934 7.690 7.818 8.071 9.709 9.026 9.546 8.608 7.063 6.857 6.625 7.545 6.334 6.691 6.741 5.837 5.278
+ 5.802 4.680 3.826 6.267 5.640 6.591 6.269 4.547 5.385 5.948 5.471 6.239 5.241 6.518 5.811 5.563 6.180 5.668 4.127 6.336 6.955 6.752 6.655 8.217 8.492 7.916 6.931 7.226 5.678 5.513 5.721 6.272 5.403 5.344 5.458 4.098
+ 4.869 6.142 6.667 6.267 6.959 6.915 6.908 5.749 6.151 5.753 6.168 6.436 3.995 5.416 4.937 5.245 6.669 6.216 5.987 6.996 6.437 6.154 6.020 7.063 7.472 7.411 7.084 6.437 7.169 6.902 7.211 7.115 5.920 5.750 6.440 6.453
+ 6.102 6.335 6.130 7.713 6.889 6.636 6.973 6.520 5.883 5.343 6.080 6.297 5.349 5.308 5.603 5.794 6.761 6.847 6.148 6.802 6.413 5.825 4.937 6.071 6.616 7.006 6.803 5.970 6.841 7.380 6.606 7.325 6.741 7.111 7.247 6.537
+ 5.663 6.861 7.585 8.723 8.687 8.818 8.716 6.792 6.861 6.037 6.614 6.966 5.873 5.564 6.477 8.320 8.713 7.218 7.453 8.279 7.661 7.774 7.963 8.572 7.394 8.444 8.673 9.509 8.915 8.970 8.713 8.338 8.517 8.335 7.894 7.770
+ 7.342 7.574 7.532 8.277 8.175 7.436 8.552 7.036 5.373 6.341 6.511 5.270 7.502 7.180 7.337 8.392 8.577 7.772 7.943 8.839 8.884 8.898 8.191 9.177 8.413 9.520 9.789 9.969 10.175 9.783 9.347 8.695 9.650 9.708 8.819 8.279
+ 7.813 7.165 6.854 7.458 7.220 7.443 8.369 7.403 7.813 6.823 7.187 6.268 5.725 8.103 7.724 8.416 8.393 8.102 7.867 8.198 8.250 8.392 7.396 8.456 7.885 7.786 8.078 7.910 9.120 9.097 8.450 7.530 8.024 8.335 8.702 7.786
+ 6.254 7.118 7.123 7.969 7.269 8.388 8.530 7.289 7.303 8.794 8.898 6.553 6.803 8.874 8.177 8.344 9.033 7.912 7.694 7.234 6.063 7.949 7.949 8.510 8.905 8.023 6.961 8.445 8.310 8.362 7.596 7.321 7.491 8.246 8.074 7.794
+ 5.994 5.782 6.799 6.443 6.266 7.165 7.630 7.211 7.305 8.241 7.885 7.559 7.368 7.191 6.479 7.209 7.979 5.929 6.269 6.454 6.316 6.626 7.976 8.489 8.497 7.516 6.858 8.185 8.434 7.653 6.740 6.553 6.397 6.614 5.487 4.802
+ 4.087 4.999 5.496 7.118 7.796 8.091 8.976 8.576 6.535 6.315 5.898 6.050 7.517 7.386 7.446 6.914 6.282 7.223 6.548 7.429 7.642 7.753 8.536 7.362 7.898 8.623 8.718 8.310 7.688 6.613 6.470 7.854 7.313 5.546 6.167 6.053
+ 7.378 8.055 7.765 6.688 7.012 9.561 10.062 9.092 8.038 8.403 7.663 6.820 7.175 7.836 8.067 8.754 8.845 8.628 7.477 9.633 9.246 8.813 8.991 8.510 9.863 10.179 9.862 9.552 8.905 8.991 8.580 8.622 8.497 8.144 7.216 7.138
+ 7.083 7.121 4.751 5.345 7.494 7.173 6.811 7.767 6.786 5.241 6.399 6.492 6.540 6.399 6.595 7.522 6.922 5.703 5.061 8.203 7.751 7.499 8.133 7.549 7.644 8.050 7.541 7.355 8.022 7.765 8.137 7.974 7.929 7.073 6.177 5.526
+ 6.101 6.527 4.988 6.652 7.054 6.073 7.213 7.936 5.477 4.125 5.566 5.871 5.764 5.763 6.015 7.144 6.352 4.066 5.078 5.483 6.399 6.726 7.034 7.263 7.221 6.508 6.896 6.540 6.298 6.300 6.392 6.385 6.147 5.475 5.477 4.775
+ 5.864 6.216 4.910 6.861 5.646 5.665 8.433 8.626 6.806 5.854 5.406 6.416 5.185 6.577 5.965 5.918 5.102 5.371 5.996 6.290 6.812 7.587 8.589 9.430 8.304 8.274 8.668 8.503 8.330 8.614 7.161 7.605 6.844 5.640 5.733 5.048
+ 6.187 6.318 5.572 6.693 6.619 7.507 9.126 7.798 5.183 5.505 5.986 5.913 6.214 5.485 7.109 6.652 6.031 4.714 6.729 7.419 6.834 7.533 8.099 7.842 7.603 8.532 8.081 7.987 8.536 7.937 7.435 7.466 7.221 6.076 5.224 4.771
+ 4.000 5.050 6.847 6.624 6.130 6.805 8.415 8.356 7.137 6.462 6.280 5.802 6.117 6.513 7.190 8.022 7.385 6.891 5.941 7.021 6.967 7.721 8.255 8.598 8.783 8.900 8.404 7.228 7.315 7.790 7.450 7.273 7.140 7.244 6.453 4.605
+ 4.449 4.978 7.167 9.258 8.649 6.638 7.629 6.251 5.107 5.805 6.389 5.888 5.982 6.187 7.167 7.296 6.972 5.729 6.194 6.873 6.039 6.713 7.515 9.597 9.934 8.107 8.232 7.745 6.905 7.356 7.130 7.496 6.897 7.474 6.946 4.394
+ 5.838 5.719 7.543 9.591 8.499 7.486 7.474 5.505 6.273 6.680 5.075 6.323 6.673 7.169 8.515 6.563 7.840 7.122 7.208 7.934 8.067 7.902 7.399 8.752 9.439 8.279 9.115 8.429 7.271 7.762 8.800 8.682 7.218 7.707 7.342 6.244
+ 6.165 5.667 8.339 9.362 7.529 7.383 5.615 5.234 6.852 6.825 5.885 5.214 5.890 5.611 7.640 7.370 5.872 5.565 7.069 8.005 8.044 8.304 7.896 8.023 8.474 8.365 8.652 8.126 7.966 7.467 8.075 7.931 7.423 7.606 7.402 6.967
+ 6.151 5.584 8.297 9.423 7.666 6.809 7.964 6.286 6.106 5.887 5.885 5.501 5.853 5.785 6.948 6.579 5.070 5.824 6.151 5.378 6.049 6.129 6.245 8.230 8.486 8.006 8.561 7.162 6.706 7.724 7.759 8.075 7.147 7.572 7.356 5.865
+ 7.059 6.236 7.981 8.646 6.586 7.659 7.852 6.059 5.718 5.715 6.246 3.937 4.161 4.773 6.000 6.059 4.292 4.963 5.287 3.820 5.068 5.897 5.628 8.043 9.500 8.437 8.065 7.131 6.485 7.174 7.810 7.391 6.870 7.892 6.849 4.849
+ 5.683 4.347 8.019 8.885 7.142 6.268 4.877 5.043 5.390 5.222 6.858 4.977 4.569 6.000 5.759 4.858 4.494 4.965 4.574 4.754 4.491 4.934 5.508 8.052 9.782 8.767 7.557 5.507 5.975 6.183 7.854 7.826 6.136 7.874 7.551 5.067
+ 7.032 6.473 8.417 9.474 7.729 6.435 5.500 4.817 6.306 6.464 6.910 4.814 4.938 4.599 4.851 4.434 3.570 4.068 4.831 4.687 3.781 5.747 6.475 7.699 9.985 8.457 7.405 6.429 5.356 6.539 7.477 7.276 6.672 7.651 6.940 4.969
+ 7.205 7.870 8.697 8.342 8.926 8.997 8.688 7.512 8.318 8.447 6.624 6.453 7.169 8.136 6.902 5.942 5.912 6.712 6.559 7.223 5.739 6.017 7.779 8.287 10.137 9.673 8.523 7.014 7.138 7.802 8.383 7.693 7.309 7.481 7.052 5.256
+ 6.400 6.890 7.953 9.055 9.696 10.687 9.336 8.523 7.447 8.611 8.091 7.978 8.423 8.320 8.057 6.385 7.234 6.630 6.042 6.034 6.772 6.166 6.902 6.847 8.606 8.530 8.072 7.546 8.345 7.833 8.399 7.705 7.278 8.199 7.521 6.685
+ 6.683 6.496 8.058 7.958 8.852 10.082 9.646 7.724 7.457 7.737 7.512 8.291 7.819 7.275 7.134 7.519 7.310 6.414 5.579 5.744 6.581 6.161 5.861 8.021 7.897 8.234 8.587 7.816 7.876 7.005 7.475 7.292 7.329 7.704 5.997 5.235
+ 5.143 4.998 7.393 7.720 6.450 7.484 7.989 7.129 6.485 6.004 4.935 6.081 6.565 6.110 5.699 6.003 5.904 4.356 4.549 5.241 4.812 4.989 6.138 6.249 6.603 6.635 6.756 7.474 7.025 6.970 6.359 6.257 6.000 5.531 5.558 5.314
+ 5.598 5.232 6.586 7.011 8.260 9.156 8.790 7.122 5.630 4.980 4.469 5.590 5.803 6.388 5.810 6.102 4.660 5.408 5.431 5.796 4.637 5.342 6.363 5.901 7.258 6.980 7.201 7.634 7.038 7.556 5.777 5.747 6.600 7.238 5.981 5.256
+ 6.163 4.805 5.410 5.143 6.478 7.420 7.400 7.740 7.668 5.294 5.086 5.659 6.171 6.071 6.759 6.473 4.946 6.457 6.006 6.391 5.716 5.296 6.172 6.129 8.363 8.188 7.250 7.470 7.101 6.633 6.326 6.054 6.271 5.762 4.604 4.407
+ 5.449 3.641 4.619 6.233 5.193 4.951 5.364 7.076 6.268 6.060 4.620 4.810 6.899 7.534 7.038 6.866 6.127 5.811 6.471 5.556 5.655 6.454 6.869 7.382 8.587 8.722 7.566 7.016 7.396 7.686 6.982 6.298 6.674 5.990 5.263 4.457
+ 3.585 2.650 4.075 6.359 6.394 6.746 7.012 6.757 6.218 5.228 5.501 4.855 4.616 5.669 6.177 6.354 5.992 6.457 7.063 6.202 5.213 6.442 6.640 7.998 7.906 7.952 8.007 7.389 8.037 8.437 7.972 6.970 6.617 6.704 5.603 5.002
+ 4.185 4.391 6.228 6.950 7.941 9.037 8.788 8.023 6.422 5.277 6.036 4.922 3.741 4.896 4.679 5.479 5.764 6.368 6.543 5.341 5.494 5.678 6.495 7.141 7.147 6.400 6.973 6.236 6.456 6.790 5.210 4.706 4.854 5.928 5.284 3.850
+ 3.029 3.719 5.706 5.233 4.677 6.369 5.998 4.549 4.694 3.600 4.748 4.626 3.231 3.712 4.176 3.836 4.160 4.541 4.526 4.510 4.232 3.884 4.324 5.262 6.187 4.842 5.361 5.040 4.779 4.461 3.580 3.749 3.775 3.832 3.170 1.987
+ 6.001 4.680 4.395 5.138 4.769 5.408 4.834 3.897 3.596 3.563 3.363 3.767 2.835 3.232 3.035 2.828 3.600 3.838 4.193 4.330 3.565 3.337 4.228 4.732 4.787 4.703 4.351 3.559 3.369 3.274 3.554 3.952 2.880 3.351 2.086 2.044
+ 5.316 5.288 4.476 4.683 4.297 4.711 4.822 4.164 4.479 4.376 3.907 3.384 4.260 4.035 4.099 2.508 3.037 3.617 3.933 3.809 3.965 3.873 3.696 3.885 3.516 4.555 4.843 3.902 2.862 3.036 3.433 3.044 3.080 3.038 2.172 1.932
+ 4.159 3.959 5.539 5.737 4.206 3.894 2.977 3.614 3.605 4.058 4.060 2.080 3.628 3.420 4.100 4.039 4.286 4.416 4.440 2.987 3.604 4.020 3.663 3.127 2.540 3.570 3.985 4.009 4.061 3.217 3.201 2.855 2.540 3.655 2.911 2.656
+ 3.604 4.109 5.885 5.488 2.752 3.249 2.762 3.845 2.771 3.197 4.343 3.276 2.444 5.063 4.804 4.156 5.036 5.143 2.982 3.477 4.159 3.640 3.150 2.909 4.028 3.912 3.645 3.859 3.929 2.426 3.009 3.477 3.066 3.394 2.607 1.598
+ 4.908 5.016 5.143 4.094 4.845 5.896 5.832 6.049 5.223 4.826 4.023 3.919 3.820 5.538 5.718 5.482 5.683 5.245 5.117 4.633 4.105 4.152 3.952 3.715 3.868 3.916 3.780 3.944 3.821 4.623 4.793 4.072 3.998 3.805 2.875 2.131
+ 5.003 4.801 5.570 6.856 5.958 7.925 9.768 9.390 8.304 7.517 6.707 6.986 5.966 6.653 8.084 7.913 8.610 9.330 7.654 6.741 5.828 5.495 4.622 5.927 6.382 6.841 6.782 5.897 5.766 8.088 7.969 6.943 5.764 5.140 3.327 2.141
+ 3.456 4.737 5.859 8.030 7.158 8.324 10.353 9.386 8.791 9.264 8.131 8.596 6.869 6.725 8.036 8.359 9.062 10.043 8.685 8.333 7.307 5.252 4.709 5.780 6.900 7.666 8.125 6.932 6.943 9.077 8.916 8.135 6.503 6.284 4.815 2.536
+ 3.088 3.996 6.163 8.532 7.611 8.001 9.710 7.794 9.724 9.622 7.772 7.503 7.163 7.205 9.199 8.037 8.773 10.543 9.775 8.620 7.598 6.165 4.479 6.185 7.106 8.864 9.377 7.392 7.458 9.808 9.760 8.629 7.088 6.136 4.765 3.150
+ 3.171 2.652 6.397 8.696 7.649 8.359 9.453 7.125 9.296 8.923 7.046 7.448 7.406 7.452 9.919 8.851 8.947 10.437 9.899 9.313 7.644 6.340 4.841 6.191 8.046 8.800 9.176 8.001 7.901 9.596 9.446 8.702 7.407 6.055 4.206 3.099
+ 4.401 4.507 6.191 8.806 7.804 8.235 9.615 7.535 9.461 10.025 8.940 8.666 7.539 7.750 9.507 8.907 8.466 8.953 9.947 10.199 6.981 6.178 5.993 6.146 7.525 8.404 8.596 8.412 8.190 9.115 10.116 8.548 7.562 5.959 4.083 2.301
+ 4.915 4.573 6.876 8.941 7.845 8.511 9.915 7.869 9.620 9.726 8.579 8.740 7.682 7.961 9.759 8.837 8.424 8.978 10.488 11.161 7.202 6.095 5.322 6.052 6.663 8.615 9.980 8.281 6.762 9.130 9.965 8.214 7.582 6.033 4.104 2.441
+ 2.660 2.303 6.003 8.698 7.675 8.646 10.026 8.256 9.064 9.298 9.077 8.725 7.318 7.229 9.698 8.672 8.496 7.779 11.270 11.961 8.719 6.724 5.873 6.310 6.578 7.690 9.605 9.349 7.153 8.753 9.946 8.769 8.242 6.642 4.760 3.541
+ 3.467 5.006 6.978 8.615 7.334 7.879 9.200 7.948 11.093 10.674 8.407 7.100 7.026 7.429 9.603 8.277 8.229 9.550 10.076 10.987 10.762 7.480 6.732 7.104 7.972 8.838 9.649 9.328 8.306 8.248 10.459 9.616 9.238 7.986 5.692 3.321
+ 3.495 4.579 6.359 8.048 6.911 6.899 8.267 9.391 11.872 10.979 9.517 8.566 7.597 7.431 8.774 7.334 7.056 8.622 8.539 11.032 11.244 7.584 6.723 6.954 7.725 9.410 10.045 9.471 7.599 7.414 9.095 8.424 7.903 7.298 4.705 3.576
+ 3.857 3.749 6.223 6.557 5.028 7.523 9.223 9.069 10.958 9.564 9.153 9.143 6.797 5.868 7.459 7.146 6.704 8.087 9.213 10.500 10.764 6.646 5.905 6.421 7.267 8.250 9.595 8.737 7.099 6.891 8.778 8.012 7.051 6.457 4.578 2.831
+ 4.072 4.439 6.082 5.393 5.478 7.230 8.656 8.895 9.266 9.111 6.927 6.490 6.437 5.712 7.635 6.026 5.682 7.558 9.076 9.563 9.783 7.820 5.222 5.252 6.912 7.749 8.204 7.256 6.308 6.596 8.364 7.765 6.824 5.464 4.436 3.326
+ 3.978 4.159 5.836 6.015 6.629 7.955 6.853 8.332 10.542 9.821 5.747 5.100 4.238 5.461 7.307 6.398 4.992 5.668 7.054 7.814 9.563 8.506 5.923 5.193 6.462 7.551 8.098 7.618 6.521 6.179 6.969 6.405 7.367 6.000 3.053 2.568
+ 4.798 5.422 5.199 4.635 5.137 8.442 9.902 9.074 9.981 8.861 6.225 5.609 5.292 5.167 6.378 6.166 5.950 7.023 7.111 7.942 9.648 8.013 6.250 6.355 6.153 7.138 6.972 7.320 7.472 6.538 7.009 5.505 6.018 5.334 3.997 2.457
+ 4.240 4.623 5.689 6.443 5.516 8.585 10.103 8.687 9.493 8.320 7.026 6.791 5.074 4.719 5.606 5.316 6.242 7.794 7.278 7.736 8.486 7.282 5.852 5.812 5.532 6.113 8.358 8.147 6.518 6.860 6.954 5.471 5.346 4.962 3.018 1.818
+ 4.736 3.622 2.786 6.171 6.838 8.722 9.010 7.758 8.415 7.143 5.714 6.288 5.663 5.064 6.440 5.434 5.951 7.709 7.437 7.469 8.600 7.279 6.520 6.074 5.650 6.553 9.236 8.868 6.701 6.963 6.642 6.220 5.255 4.554 3.456 2.502
+ 4.850 4.118 4.059 5.997 7.926 9.006 8.320 6.582 8.199 7.247 6.070 5.417 5.136 5.758 6.563 5.707 5.186 7.452 7.394 7.214 7.846 7.302 5.611 5.840 5.816 6.850 7.474 6.963 6.302 6.437 5.753 4.647 4.585 4.404 2.816 1.850
+ 5.747 5.243 4.550 3.923 7.452 8.406 7.951 7.185 8.006 6.210 5.256 5.369 5.060 5.290 5.728 4.491 5.792 6.782 6.577 7.168 6.926 5.929 5.077 4.190 4.997 6.552 7.524 6.742 5.644 5.235 5.649 4.246 5.142 4.824 3.507 2.650
+ 4.910 4.105 5.752 5.725 6.683 8.362 8.414 6.459 6.495 5.852 4.244 4.051 4.484 5.390 5.323 5.260 5.502 5.595 5.246 6.826 7.041 5.735 4.576 4.295 3.967 5.354 6.641 6.012 6.063 5.527 4.813 4.695 4.809 4.083 3.216 3.132
+ 5.198 4.881 4.429 5.586 5.984 5.774 6.166 5.037 6.774 6.367 5.557 4.262 3.946 4.359 4.394 4.794 4.010 6.027 5.406 5.928 6.090 4.788 4.161 4.649 4.523 5.285 5.872 5.540 4.868 5.109 4.953 5.017 4.255 3.568 2.851 2.587
+ 6.006 5.085 4.035 5.963 5.949 5.863 6.899 6.323 6.452 5.225 4.526 4.909 4.490 4.275 4.555 3.513 4.573 5.277 4.501 5.728 5.780 4.779 5.133 4.140 4.422 4.677 4.661 4.217 4.005 4.461 4.561 3.774 4.296 3.690 2.502 2.157
+ 3.545 3.141 3.986 4.364 5.158 6.091 6.825 5.275 5.489 5.449 4.305 4.020 2.629 5.115 5.474 4.191 3.893 5.411 5.124 5.256 5.525 4.484 4.785 4.170 3.312 4.133 3.978 3.815 3.933 4.524 5.676 4.274 4.148 3.058 2.986 1.621
+ 6.062 5.869 5.704 4.719 4.167 4.360 5.100 3.635 5.170 5.371 3.887 3.540 3.028 5.120 5.573 4.256 4.539 5.020 5.414 5.615 6.261 4.358 4.843 4.446 3.860 4.580 5.451 4.146 3.782 3.535 3.817 3.768 4.362 3.975 3.156 1.868
+ 4.516 5.166 5.894 5.467 4.128 4.443 6.054 4.872 5.560 5.199 3.386 2.910 3.049 5.218 5.110 3.664 4.284 4.501 4.755 4.844 5.194 3.671 3.705 4.112 4.142 4.157 4.545 4.362 4.306 4.787 3.905 3.712 3.297 2.257 2.240 0.751
+ 5.007 5.156 4.994 5.304 3.457 5.799 6.586 4.494 4.201 3.833 4.306 4.101 3.816 4.536 4.924 4.420 3.630 5.176 5.461 5.274 4.528 4.559 3.911 2.780 4.436 4.857 4.408 4.401 4.726 4.125 4.408 3.946 3.045 2.874 2.198 1.328
+ 4.142 5.329 4.515 2.875 3.036 4.940 5.503 2.677 4.236 4.017 4.336 4.643 3.681 4.837 5.233 3.397 3.067 4.701 4.548 4.926 4.679 3.425 3.193 3.183 4.109 4.362 4.611 3.640 4.344 4.516 3.826 3.228 2.638 2.752 2.853 1.337
+ 3.326 3.980 3.418 2.483 3.585 4.828 3.936 3.430 4.273 3.680 3.564 2.260 2.667 5.268 4.641 3.648 4.463 5.448 4.335 4.151 5.297 3.899 3.619 3.980 3.928 3.777 4.822 3.949 3.869 3.790 3.413 3.021 2.279 3.149 2.525 1.159
+ 5.402 4.402 2.863 2.439 1.889 3.277 4.377 4.556 4.314 3.246 3.096 3.636 3.007 4.499 4.957 3.018 4.352 5.198 5.228 5.129 4.930 4.474 3.721 4.177 4.287 4.489 4.118 4.133 3.529 2.791 2.761 2.501 2.083 2.573 1.815 1.905
+ 4.940 4.448 4.861 4.584 3.694 3.320 2.996 4.198 4.950 3.401 1.891 3.985 3.456 5.303 5.438 3.396 4.383 4.775 5.114 5.314 4.408 3.873 3.945 4.011 3.517 3.231 3.552 4.059 4.126 3.583 3.015 2.498 2.532 1.618 1.624 1.516
+ 5.607 5.463 5.005 3.524 4.095 4.916 4.270 4.799 3.906 3.067 2.871 3.443 3.112 5.009 4.816 2.706 3.297 6.262 5.711 4.649 4.002 3.304 3.227 3.517 3.750 4.287 3.143 3.483 3.006 2.354 2.626 2.984 3.138 2.411 2.814 1.821
+ 4.495 4.229 3.686 2.674 2.144 3.209 3.928 3.906 3.586 3.345 4.360 3.639 3.297 4.937 4.089 3.719 3.113 5.604 4.995 5.248 3.286 2.558 3.641 3.427 3.537 3.011 3.816 3.408 3.437 2.893 1.917 2.316 2.685 2.395 2.610 1.605
+ 5.145 5.213 3.782 2.921 3.059 5.254 5.049 3.296 4.279 3.039 3.975 3.918 3.194 3.143 3.367 3.765 3.635 4.399 4.430 3.888 1.830 2.736 2.150 2.125 3.192 3.601 3.723 3.376 3.134 2.898 3.448 2.813 2.732 2.568 2.186 1.214
+ 4.020 3.805 3.442 3.954 3.049 5.231 4.745 3.541 5.288 4.572 3.510 3.385 4.049 3.444 3.149 3.838 2.510 2.772 3.415 3.942 2.854 3.492 3.904 3.759 2.232 3.026 3.643 3.940 2.882 2.971 2.453 1.940 2.442 2.537 2.538 1.395
+ 3.869 2.728 3.260 2.579 1.205 3.626 3.563 3.341 4.442 2.710 2.699 3.575 3.370 3.952 4.206 4.636 3.640 4.374 4.178 3.769 3.896 3.694 4.111 3.620 2.431 3.517 3.861 2.598 3.385 3.184 2.638 2.411 2.448 2.617 2.802 1.335
+ 4.107 3.499 4.038 4.380 3.111 3.396 4.216 3.126 4.270 3.969 2.175 4.391 3.819 4.242 4.670 4.406 4.567 4.896 4.907 5.080 3.756 3.812 4.589 3.615 2.468 3.237 3.257 3.289 3.602 2.865 3.012 2.859 2.249 2.716 2.683 1.221
+ 4.747 3.921 3.997 4.459 3.537 3.139 4.150 5.095 3.341 2.296 1.116 4.058 4.327 5.565 5.393 3.901 3.650 3.907 4.327 4.398 2.869 3.052 3.157 3.706 2.919 2.593 2.612 3.601 2.989 2.222 2.678 2.566 1.843 2.539 3.067 2.535
+ 5.112 5.258 4.081 3.379 3.810 4.927 5.466 3.383 2.332 3.192 2.768 2.914 4.135 4.587 4.175 3.680 2.888 5.332 5.119 3.422 3.036 2.797 1.961 3.986 3.758 3.094 2.776 3.274 2.613 2.465 2.669 2.805 2.421 2.712 3.056 1.796
+ 3.470 5.158 5.200 4.387 3.038 5.121 4.976 3.697 3.685 4.482 4.625 3.135 3.121 5.048 4.236 3.127 3.232 3.273 3.364 2.979 3.673 3.618 2.788 2.892 3.547 2.885 3.578 3.723 2.983 2.223 3.030 2.562 1.829 2.511 2.761 1.751
+ 3.000 3.675 4.947 4.167 2.338 3.988 4.769 5.142 3.565 3.477 3.110 2.262 3.240 4.193 4.479 3.332 4.744 4.157 4.967 4.268 4.100 2.855 4.222 4.903 3.716 3.112 3.237 3.267 2.640 2.631 2.783 2.671 2.563 2.250 2.559 1.657
+ 4.644 3.184 3.166 3.078 1.876 3.333 4.090 3.315 3.295 4.182 4.669 3.356 2.875 3.382 3.285 3.562 4.305 3.982 4.686 3.745 3.536 3.094 3.272 4.193 3.602 3.632 2.732 2.219 2.396 2.437 3.139 2.612 2.559 2.286 2.539 1.824
+ 3.751 3.549 3.341 4.137 3.874 3.709 3.921 3.387 3.657 3.366 2.492 3.157 3.425 4.604 4.322 3.807 3.076 3.869 4.349 3.982 2.717 3.215 4.081 3.142 3.295 3.206 2.584 2.812 2.733 3.539 3.799 3.432 2.583 2.325 2.636 0.951
+ 5.245 3.390 3.253 3.642 3.336 4.463 4.740 3.931 4.065 2.410 2.387 3.771 3.198 4.596 4.452 3.612 4.139 3.911 3.891 3.371 4.061 3.428 4.190 3.912 4.176 3.898 3.116 3.311 2.936 2.832 3.076 2.072 3.375 3.394 2.626 0.979
+ 4.727 4.589 3.440 2.689 1.404 4.326 4.666 3.186 3.828 1.563 1.331 2.329 3.297 4.331 4.416 3.676 3.883 4.388 4.644 2.433 2.520 2.360 3.908 3.898 3.593 3.344 3.408 3.756 2.684 2.730 2.772 2.007 3.335 3.297 2.351 0.922
+ 4.462 5.089 3.721 3.695 4.005 4.495 5.000 3.814 3.816 3.094 0.727 2.740 3.964 4.774 5.009 3.764 3.061 4.379 4.227 4.111 3.291 2.962 4.332 3.525 3.141 4.501 3.534 3.932 3.064 2.943 3.145 2.754 2.978 2.254 1.741 1.586
+ 3.689 4.806 3.239 3.064 3.709 4.603 4.881 4.929 3.182 3.066 4.061 3.064 3.739 4.537 4.601 3.840 3.125 3.936 3.347 4.549 4.042 3.283 3.676 2.872 3.796 4.081 3.650 4.228 3.622 2.862 2.706 2.840 2.449 2.692 2.213 2.208
+ 4.492 3.102 3.434 1.314 3.527 5.269 5.383 3.734 3.670 3.709 4.463 3.141 3.371 5.053 4.952 3.870 3.259 2.988 3.802 3.525 2.825 3.815 4.191 3.038 3.206 4.383 3.348 3.873 3.116 2.935 2.665 2.293 2.355 2.909 2.134 2.073
+ 4.991 3.650 4.448 4.252 4.171 5.191 4.626 3.559 2.538 3.999 3.166 2.436 2.106 4.334 4.308 4.188 3.808 4.083 3.400 2.936 3.155 3.339 2.676 2.425 2.897 3.334 3.330 3.765 3.797 3.878 3.254 2.555 2.383 2.589 2.383 2.095
+ 2.726 3.333 3.802 3.444 3.269 3.412 3.831 3.674 3.304 3.155 2.758 3.043 1.247 3.298 4.015 3.947 3.398 3.079 3.471 3.752 3.311 2.928 3.298 3.736 3.437 3.292 3.704 3.207 3.512 3.347 2.906 2.209 2.729 2.167 2.525 1.522
+ 3.226 3.094 2.274 2.678 1.923 3.585 3.594 3.175 2.682 3.402 3.699 2.644 3.444 3.546 3.852 4.166 3.609 5.300 5.191 4.558 4.238 3.732 3.304 2.941 2.354 3.660 2.799 2.586 2.971 2.683 2.220 2.434 2.365 2.264 2.361 1.401
+ 3.673 3.541 4.484 3.794 3.337 4.461 3.485 3.391 2.824 2.904 2.428 1.495 3.349 4.492 3.149 4.358 4.073 5.358 3.687 3.099 3.712 2.653 2.533 3.215 2.973 3.966 2.686 2.460 3.107 3.631 2.655 2.154 2.080 2.050 2.364 0.995
+ 4.214 4.247 3.716 3.742 3.817 4.140 4.420 4.479 3.877 3.518 3.300 1.877 2.953 4.823 3.818 3.032 3.747 4.390 3.383 2.414 2.433 2.225 1.195 2.799 3.221 3.167 3.164 3.222 2.979 2.995 2.273 1.641 1.737 1.853 2.686 1.790
+ 3.303 3.244 3.323 3.637 3.462 4.931 5.299 4.214 4.673 3.416 3.239 2.013 2.976 4.058 4.220 3.721 4.468 5.015 3.861 2.974 3.247 3.474 3.015 2.929 1.981 2.588 3.148 2.800 2.930 2.610 2.467 1.614 1.977 1.686 2.235 1.552
+ 3.836 3.966 1.384 0.979 2.850 3.695 4.011 4.175 3.017 2.963 3.686 2.715 3.061 5.054 4.836 1.795 2.857 2.373 2.164 2.876 2.663 3.334 3.737 3.415 2.743 2.941 3.557 3.773 3.927 3.261 3.117 2.786 2.658 2.279 2.166 1.423
+ 5.620 4.078 2.160 2.636 2.231 4.250 4.558 3.988 3.389 2.853 2.432 4.091 4.508 5.637 5.451 2.832 4.048 3.249 3.043 3.177 3.082 3.777 3.092 2.906 2.996 2.712 2.342 2.765 2.446 2.893 2.547 2.814 2.512 2.602 2.352 2.052
+ 3.363 2.688 2.003 3.957 4.690 5.197 5.049 3.709 4.574 3.413 3.841 3.981 3.946 4.650 4.502 1.920 3.501 3.825 4.020 3.861 2.534 2.544 2.381 2.897 3.751 3.888 3.407 3.271 3.125 3.665 2.830 2.614 2.528 2.703 2.248 1.402
+ 4.655 5.006 4.542 3.164 3.384 4.681 4.556 3.463 5.163 4.360 3.760 3.199 2.486 3.750 4.181 4.123 3.547 4.112 3.930 3.084 3.564 2.549 2.719 3.005 3.470 4.864 3.450 3.026 2.210 2.515 1.861 2.662 3.028 2.391 2.742 1.740
+ 2.502 4.141 3.251 3.107 2.964 4.637 4.661 4.643 4.000 2.474 2.349 2.600 3.941 3.199 3.477 3.282 3.585 4.971 4.092 2.544 2.745 2.436 3.428 1.910 2.661 3.854 3.152 3.342 3.725 2.890 1.749 1.543 2.391 2.276 2.117 1.425
+ 5.662 5.072 4.283 2.947 3.891 4.726 4.968 3.411 2.870 2.091 1.233 1.972 2.383 4.197 4.473 4.196 4.119 4.529 4.602 3.477 3.154 2.545 3.772 3.692 3.383 3.911 3.510 3.781 3.003 2.191 2.943 2.197 2.387 2.759 1.723 1.197
+ 4.130 3.635 3.244 2.901 2.944 3.710 3.436 2.471 2.394 2.801 2.060 2.136 3.277 3.882 3.468 3.782 4.258 4.678 3.971 3.518 2.672 3.240 4.475 3.615 1.790 3.353 3.019 3.642 3.106 1.915 3.047 2.838 2.989 2.363 1.789 1.970
+ 5.270 4.135 2.662 4.408 5.602 5.140 4.775 3.010 3.096 3.362 3.246 3.586 4.229 4.101 3.418 4.244 4.493 3.269 2.951 3.933 3.991 4.025 3.642 3.382 4.123 3.201 2.653 3.542 3.075 3.072 2.525 2.465 2.357 2.641 1.964 2.129
+ 4.698 5.294 4.321 5.214 6.153 6.093 5.922 3.835 3.984 3.595 3.677 2.491 2.774 4.666 4.602 4.098 4.091 3.613 4.306 4.070 3.202 3.476 4.323 3.248 2.991 4.288 3.369 3.803 3.016 3.469 2.732 2.858 1.942 3.068 2.833 2.521
+ 2.538 3.794 3.180 3.850 4.317 3.908 4.752 3.920 3.760 4.091 4.849 4.033 2.257 4.113 4.319 3.734 4.513 4.126 3.786 5.130 4.069 3.756 3.615 3.989 4.051 3.565 4.736 4.609 4.114 2.802 3.084 3.851 2.790 2.792 2.654 2.290
+ 2.100 3.650 4.061 3.038 2.967 3.850 4.508 5.090 4.507 2.145 2.458 2.647 2.263 5.134 4.460 3.124 2.896 3.791 4.326 3.994 3.502 3.536 3.987 4.425 4.554 4.217 4.697 3.925 3.418 3.227 2.813 3.078 3.020 3.027 2.834 2.185
+ 1.966 2.823 3.611 3.029 3.196 4.836 4.538 3.413 3.923 3.823 3.303 3.111 3.019 5.074 5.142 3.548 2.808 3.846 3.395 3.096 3.478 3.378 3.407 3.407 3.601 3.769 3.617 3.255 3.394 3.762 3.240 3.281 3.273 2.609 2.620 1.872
+ 5.561 5.000 3.313 4.507 4.170 3.430 3.660 3.715 2.719 2.817 4.532 4.355 3.550 3.212 3.025 2.775 4.380 3.739 3.804 4.050 3.927 2.980 3.868 4.192 3.416 3.642 3.226 3.678 2.261 3.901 3.078 3.379 2.901 2.793 1.998 1.342
+ 3.892 5.168 4.116 3.942 3.059 3.262 2.855 3.894 3.563 3.638 4.063 3.735 2.982 3.758 3.984 3.690 4.072 4.376 3.542 4.271 3.556 3.735 4.345 3.798 3.266 3.697 3.043 4.102 3.116 2.383 2.351 2.807 3.432 3.303 2.739 2.134
+ 5.623 5.981 5.047 3.760 3.343 4.609 5.075 4.683 2.828 1.181 3.269 3.415 2.768 3.662 4.292 3.747 3.006 4.099 3.147 2.289 2.055 3.165 3.181 3.738 3.716 4.180 3.283 3.439 3.262 2.684 2.021 2.238 2.232 3.246 2.387 1.707
+ 5.538 5.411 3.816 2.484 3.265 4.582 4.163 3.659 3.871 3.101 3.343 3.678 3.603 4.219 4.045 3.403 4.180 4.428 3.858 2.989 2.622 3.148 4.285 3.483 1.937 3.599 3.254 2.789 2.315 2.375 2.286 1.959 2.331 2.961 1.955 1.280
+ 5.658 4.404 2.562 2.892 3.490 4.292 4.773 5.088 4.206 3.195 4.031 3.261 2.828 4.681 5.342 4.786 5.475 4.740 3.450 3.124 3.323 4.283 4.391 3.941 4.205 4.374 3.862 3.356 2.450 3.909 3.290 1.742 2.229 3.148 2.868 2.121
+ 3.334 4.297 3.897 2.602 3.061 4.570 4.661 4.471 2.693 1.961 3.317 3.313 2.552 4.453 5.340 4.811 4.852 5.013 2.976 3.194 3.541 4.524 4.127 3.502 3.218 3.192 4.003 4.228 4.028 3.361 2.314 1.373 2.698 3.075 2.735 1.983
+ 5.241 4.826 4.286 3.293 3.643 4.595 4.198 4.428 2.969 2.931 4.304 3.377 3.837 4.675 4.262 3.681 4.729 3.442 3.217 3.271 3.281 3.561 4.236 2.990 3.675 3.508 3.418 3.680 3.964 3.505 3.127 1.623 2.366 2.905 2.701 1.706
+ 3.298 4.703 4.097 4.397 3.148 3.621 3.544 4.205 2.408 2.819 4.401 4.474 4.474 5.129 4.829 3.798 5.741 4.644 3.821 3.803 3.216 3.607 3.063 3.505 4.020 3.787 2.610 2.536 3.122 3.240 3.047 2.251 1.855 2.184 2.473 1.718
+ 4.139 4.659 4.022 4.120 3.242 2.697 3.388 3.872 2.629 2.310 3.782 3.528 3.519 4.891 4.471 3.169 5.433 5.473 3.999 3.983 3.260 3.963 3.430 3.399 3.828 4.245 3.192 3.418 3.202 2.487 2.973 3.495 3.213 3.414 2.224 1.972
+ 4.224 4.843 3.790 1.872 3.550 4.605 4.844 3.629 3.234 3.049 4.190 4.339 2.605 5.306 4.947 3.291 3.974 4.524 5.044 4.226 3.305 4.786 4.524 3.771 4.129 4.116 3.212 4.024 3.664 2.484 3.086 3.243 3.855 2.956 3.336 2.610
+ 3.912 2.948 2.916 4.119 3.455 1.817 2.245 2.834 3.042 2.971 4.763 4.287 3.424 4.763 4.697 4.324 4.375 4.182 4.135 4.451 3.294 3.752 4.865 4.365 4.103 4.882 4.313 3.323 3.873 3.286 3.295 4.207 4.165 3.720 4.038 3.597
+ 3.843 4.073 3.003 2.925 2.596 2.768 2.926 4.822 3.824 1.828 2.630 3.590 4.639 4.877 3.900 4.762 5.321 4.692 4.175 3.421 3.656 4.353 5.409 5.222 4.778 4.623 4.977 4.106 4.401 4.556 4.285 5.374 4.811 3.735 4.854 4.231
+ 4.671 3.843 2.957 1.311 2.660 2.691 4.334 4.123 4.101 3.927 4.245 4.132 3.815 3.302 3.671 4.123 3.966 4.335 3.003 3.012 4.018 5.417 6.956 6.050 5.880 5.157 4.407 4.620 5.533 6.114 5.739 5.972 5.711 5.363 5.367 4.145
+ 4.979 4.677 4.720 2.708 4.340 4.947 3.845 4.791 4.624 4.527 4.851 4.855 4.376 4.733 4.289 4.417 5.389 4.930 3.244 3.978 5.251 6.024 5.681 5.833 6.110 5.579 5.077 5.446 6.451 6.119 6.615 6.630 6.316 5.964 5.592 4.680
+ 3.053 3.918 4.359 3.564 4.877 5.155 5.079 4.658 4.313 3.746 4.716 5.462 4.695 4.381 5.165 5.973 6.172 5.027 4.620 5.123 4.035 5.906 6.494 6.540 5.700 5.778 6.206 6.525 5.551 5.587 6.721 7.557 7.066 6.466 6.274 5.573
+ 3.860 3.319 4.266 5.108 4.150 3.667 4.057 5.304 4.203 3.516 5.422 5.306 4.700 4.974 4.625 5.096 5.039 5.342 4.866 5.462 4.396 5.486 6.434 6.385 6.364 6.871 7.223 7.391 7.083 6.511 6.173 7.669 7.646 7.385 7.563 6.956
+ 4.314 4.159 5.094 4.634 3.583 4.870 4.923 4.996 3.160 3.472 3.908 5.319 4.726 3.510 5.648 5.974 5.576 6.528 6.500 6.393 5.670 6.485 6.436 6.576 7.619 6.576 6.736 6.900 7.224 7.732 7.982 7.571 8.174 8.232 7.601 6.359
+ 3.992 5.302 4.457 2.971 2.173 3.625 4.328 4.762 4.080 4.280 2.669 4.527 5.349 4.202 4.952 6.674 6.691 5.604 6.027 7.139 5.758 6.777 7.623 6.443 6.322 6.599 6.269 7.318 7.011 7.612 7.970 7.831 8.045 7.130 7.301 6.891
+ 4.988 5.071 4.343 3.759 5.229 5.543 5.510 5.838 4.452 2.121 2.857 3.977 4.701 4.469 4.377 6.725 6.793 6.330 6.887 7.041 6.587 6.267 7.549 7.434 7.493 7.641 7.168 6.976 7.951 8.137 8.493 8.372 8.226 6.523 7.591 7.348
+ 4.238 3.737 3.150 4.180 4.504 4.089 4.528 5.455 5.179 4.276 4.449 5.150 4.959 5.828 5.776 6.925 6.092 5.058 5.742 5.784 6.242 7.198 7.368 8.911 8.453 8.122 6.916 7.048 7.135 7.066 7.235 8.908 9.100 7.786 8.328 7.998
+ 3.664 4.846 4.401 3.118 4.525 4.454 3.979 2.996 4.294 5.049 5.839 6.135 4.193 6.596 5.909 7.152 7.150 6.135 6.879 6.420 7.036 7.998 8.318 8.268 7.913 6.693 6.161 6.990 7.211 6.560 7.096 8.063 7.603 7.989 7.702 6.707
+ 2.729 4.218 4.449 3.409 4.643 4.073 3.182 4.100 4.499 4.483 5.456 5.769 5.006 5.556 6.177 6.511 6.607 6.799 6.138 6.414 6.542 7.605 7.772 7.212 7.479 7.666 6.656 7.219 7.539 8.057 7.287 8.055 8.058 7.563 8.006 6.610
+ 4.908 4.829 3.733 4.451 3.974 4.326 4.434 4.405 2.672 3.385 4.953 5.567 5.586 5.106 5.220 5.095 5.427 6.564 6.433 6.149 6.718 6.680 8.106 7.763 6.732 6.549 5.850 6.612 7.973 7.842 6.904 7.039 7.739 6.638 7.426 6.461
+ 5.565 5.015 2.831 3.403 3.868 4.358 4.113 2.822 3.262 4.186 4.050 4.263 4.546 4.779 4.543 4.872 6.038 5.631 5.853 5.420 6.318 6.747 7.771 7.526 7.341 6.941 6.493 7.729 8.196 8.018 7.299 7.253 7.340 7.607 8.090 6.621
+ 4.044 3.643 3.873 1.141 3.134 4.542 3.935 3.630 3.924 5.381 4.803 4.270 3.567 4.393 4.094 4.290 5.843 5.027 6.745 6.086 5.202 6.349 7.181 6.425 6.797 6.408 6.372 6.385 7.026 5.423 6.816 7.283 7.745 7.198 7.586 6.879
+ 3.834 4.439 4.308 3.585 3.920 5.630 4.975 3.608 3.784 4.899 5.376 4.221 4.662 5.431 5.290 5.202 6.868 5.468 5.502 6.014 5.646 6.568 6.918 6.500 7.091 6.722 6.715 6.774 7.006 7.175 7.253 7.706 7.831 6.909 6.788 6.262
+ 4.079 4.496 4.783 3.527 3.800 5.227 5.089 3.806 4.533 4.404 4.722 5.116 4.571 6.204 6.372 6.253 5.568 4.160 5.463 5.667 5.956 7.032 7.968 7.686 7.919 7.436 6.382 6.643 6.007 6.575 6.880 8.516 7.708 6.931 6.939 6.588
+ 4.101 4.440 4.441 4.245 3.291 4.584 5.608 3.970 4.075 4.186 3.546 4.852 4.848 5.442 5.586 6.064 4.358 4.952 5.666 4.538 5.376 6.254 7.509 7.626 6.613 5.923 6.148 5.952 6.671 5.674 5.997 7.163 6.884 5.123 7.010 5.948
+ 6.319 5.754 4.558 3.516 4.120 6.265 5.734 2.665 3.500 4.453 4.729 5.217 4.784 5.681 5.547 5.505 4.694 4.561 4.638 5.469 5.375 4.810 6.156 5.880 4.787 4.758 5.675 5.505 5.397 5.617 6.186 6.784 6.553 6.078 5.929 5.028
+ 5.030 4.822 5.486 5.239 3.252 5.687 5.539 3.849 3.224 2.791 4.344 4.017 3.860 5.493 6.161 6.091 6.055 6.779 6.910 6.606 5.663 6.055 6.586 6.482 6.179 6.553 6.926 7.277 6.696 6.212 5.739 6.139 6.106 4.946 5.827 5.109
+ 4.622 4.112 4.492 3.405 3.812 5.213 5.371 4.875 3.664 3.830 4.182 3.184 3.237 5.719 5.555 5.197 6.256 7.143 6.816 6.704 5.116 5.760 6.113 6.464 5.740 6.177 6.732 7.279 6.361 5.958 5.781 5.989 6.643 5.121 5.093 4.418
+ 4.709 4.756 5.548 4.194 1.744 4.327 5.356 4.516 3.894 4.318 3.249 2.091 3.345 5.340 5.372 4.069 4.468 5.630 4.809 3.656 3.876 4.617 3.749 4.389 4.177 4.480 4.144 4.548 3.628 3.819 3.872 4.063 4.355 3.540 3.990 3.002
+ 4.658 6.104 5.959 4.436 3.197 3.659 3.879 3.774 3.785 4.145 3.494 2.960 3.070 4.572 4.496 3.077 3.749 4.574 4.035 2.727 3.206 4.263 3.850 3.152 3.619 3.224 3.438 3.435 3.444 3.609 3.925 3.086 3.648 2.779 2.537 2.439
+ 5.432 5.673 6.130 5.276 5.053 5.839 6.435 5.112 2.537 3.374 4.420 4.017 3.251 5.924 5.018 4.542 4.735 5.281 5.184 5.282 5.809 6.016 7.180 7.847 7.245 6.214 5.067 4.532 5.532 6.968 6.819 7.061 7.471 6.564 7.735 9.337
+ 6.257 4.545 4.825 5.166 4.411 4.683 4.933 4.760 2.889 2.298 3.909 2.679 2.400 5.150 5.093 3.931 4.770 5.043 4.941 4.841 4.923 5.133 6.935 7.852 6.950 6.170 5.985 4.336 6.415 7.361 6.337 6.531 7.052 5.809 7.337 9.283
+ 5.739 3.643 3.875 3.296 4.033 3.916 4.429 2.502 3.089 2.115 2.786 3.949 3.968 4.954 5.443 4.673 2.826 3.164 4.134 3.659 2.457 2.322 2.928 3.509 3.983 4.860 4.456 3.204 3.200 2.278 3.081 3.503 3.610 3.599 3.332 3.302
+ 3.681 2.814 2.842 4.816 4.682 4.784 5.040 3.003 3.047 3.224 2.927 3.757 2.562 5.618 5.988 4.035 3.241 4.625 4.013 4.358 3.402 2.678 3.453 4.551 4.666 4.059 3.667 4.730 4.607 4.421 4.366 5.219 5.503 5.664 5.678 4.667
+ 5.352 4.978 3.762 4.302 3.992 3.991 5.150 3.864 1.885 3.321 2.207 2.028 2.861 5.840 4.754 4.222 4.595 5.058 3.934 3.753 3.602 2.598 3.190 3.252 4.782 4.124 4.600 5.295 5.533 6.097 6.230 6.436 5.641 5.591 5.268 4.314
+ 4.539 5.376 5.919 5.405 3.824 5.282 5.657 5.021 3.995 3.098 3.773 3.468 3.889 4.800 4.672 3.637 3.773 4.221 3.994 3.942 4.088 4.194 2.921 2.619 4.174 4.317 3.434 2.868 3.472 3.514 3.564 4.111 4.096 4.354 4.182 2.827
+ 5.133 4.272 4.513 5.171 3.585 5.791 5.639 4.699 4.057 3.209 3.060 3.914 3.462 4.661 4.002 3.035 3.790 4.223 3.925 3.843 4.005 4.177 3.580 2.974 4.313 4.643 4.532 3.791 3.450 3.597 3.873 3.283 2.973 3.139 3.190 2.061
+ 5.705 6.762 5.874 5.449 5.746 5.949 6.114 6.302 5.640 4.838 3.613 4.747 5.088 5.181 4.841 4.443 5.035 4.828 5.074 4.722 5.684 4.909 5.630 4.628 4.936 6.818 6.581 6.753 6.052 4.884 5.858 6.825 6.257 4.590 3.611 4.788
+ 12.098 12.198 11.531 11.730 10.731 10.528 10.736 10.771 9.186 9.257 7.014 8.372 9.322 8.270 7.428 8.196 8.635 9.164 8.079 10.042 10.183 10.225 9.530 9.148 8.321 10.850 12.033 11.625 10.037 9.489 11.096 12.243 10.888 10.188 11.077 11.925
+ 13.155 14.207 14.783 14.489 14.862 13.704 12.332 12.302 10.997 10.361 10.717 9.590 9.995 10.414 10.309 10.818 11.203 11.526 11.037 12.930 14.713 13.635 12.369 11.984 11.891 12.856 14.562 13.593 12.300 12.848 14.132 15.089 13.514 11.737 12.525 13.796
+ 12.907 15.093 16.341 14.919 16.178 15.731 14.422 13.920 11.849 11.545 12.389 11.705 12.121 11.797 12.125 12.227 12.385 12.799 13.195 14.862 17.142 16.185 14.545 14.259 14.138 15.063 16.493 15.647 14.560 14.917 16.668 17.686 15.830 12.423 12.142 11.938
+ 13.515 15.299 16.873 15.514 17.156 17.029 14.793 14.805 13.192 13.175 12.235 12.351 13.297 12.350 12.444 12.677 13.059 13.101 14.128 15.335 18.074 17.495 15.493 15.222 15.103 15.664 17.466 16.799 15.820 16.126 18.032 18.778 17.235 13.430 11.899 12.993
+ 13.491 15.281 16.941 15.741 17.551 17.517 14.661 14.796 13.424 13.570 12.098 12.193 13.306 12.543 12.506 12.643 13.179 13.164 14.099 15.579 18.325 18.304 15.342 15.247 15.009 16.007 17.750 17.390 16.151 16.458 18.270 19.076 17.712 14.363 11.799 12.463
+ 13.344 15.397 16.944 15.709 17.719 17.555 14.556 14.608 13.289 13.425 11.686 11.889 13.093 12.348 12.328 12.430 13.033 13.046 14.107 15.410 18.345 18.288 15.774 15.461 15.173 16.158 17.855 17.582 16.195 16.348 18.167 18.975 17.758 15.191 12.358 12.423
+ 13.154 15.495 16.908 15.650 17.602 17.225 14.410 14.411 13.275 13.253 11.454 11.582 12.859 12.284 12.223 12.305 12.900 12.814 13.954 15.011 17.894 17.572 15.643 15.267 14.906 15.794 17.466 17.262 15.759 15.871 17.596 18.625 17.631 15.387 11.977 11.819
+ 13.135 15.416 16.370 15.214 16.783 15.982 14.056 13.306 12.726 12.311 10.978 11.725 11.750 11.909 11.715 11.906 12.364 12.678 13.550 14.627 17.037 16.365 14.739 14.244 14.056 15.245 16.790 16.414 14.694 14.774 16.393 18.021 16.867 14.402 11.730 11.093
+ 12.189 13.844 13.692 14.251 14.284 12.958 13.543 13.095 12.327 12.124 12.520 12.501 11.132 10.964 11.049 10.648 10.132 11.552 11.913 12.926 14.664 13.740 13.086 12.852 12.697 13.410 14.702 13.526 12.341 12.579 14.133 16.174 14.847 12.443 11.489 11.035
+ 11.423 13.730 13.842 11.299 10.201 9.923 9.048 9.588 8.874 9.330 8.028 7.846 7.855 7.879 7.236 6.659 7.097 7.482 8.598 9.418 8.853 8.627 8.753 9.047 8.658 8.892 8.943 9.014 7.651 8.088 10.035 11.365 10.559 9.092 7.985 7.520
+ 10.714 13.362 12.980 9.174 9.372 8.639 7.994 7.466 6.846 7.350 6.689 5.915 5.803 5.394 5.504 5.152 5.579 5.741 7.887 8.412 9.083 8.249 6.947 6.152 5.801 7.355 8.255 7.533 6.164 6.357 8.400 9.745 9.332 7.507 5.048 4.377
+ 11.160 13.621 13.323 9.960 8.440 8.512 8.656 8.493 6.791 6.868 4.951 4.972 4.798 5.321 4.874 4.485 5.136 4.708 6.630 8.321 8.551 8.209 6.018 5.424 6.193 7.270 8.026 7.103 6.187 5.602 7.930 8.597 8.404 5.575 4.599 4.458
+ 11.004 13.271 12.459 9.233 9.031 8.361 7.806 8.667 6.655 5.599 6.447 5.465 4.884 5.054 4.691 4.384 4.157 5.525 6.700 7.563 8.331 7.995 5.757 5.078 5.596 7.062 6.859 6.475 5.651 5.612 7.230 7.812 7.711 6.523 3.834 2.816
+ 10.693 13.205 12.726 9.608 10.384 9.770 8.109 7.245 5.796 5.661 6.924 5.292 6.777 7.516 7.660 7.827 7.779 6.998 7.328 8.305 9.083 7.900 6.816 6.893 7.712 8.797 8.821 7.474 5.966 6.160 7.440 8.743 8.960 8.175 8.093 8.002
+ 11.064 13.305 14.120 13.143 12.847 11.323 11.405 10.687 10.010 10.490 10.499 10.051 9.501 10.815 11.168 10.771 10.828 10.743 10.644 12.022 13.846 13.002 9.522 10.971 11.851 13.181 12.949 11.672 11.986 11.379 12.011 13.627 12.862 12.728 13.229 12.814
+ 11.146 13.909 14.377 12.256 13.433 11.679 12.933 11.690 10.568 10.368 10.754 10.828 10.362 10.682 10.825 10.527 11.087 11.861 11.759 12.750 15.241 14.955 12.261 11.986 12.702 13.510 13.855 13.093 13.537 13.334 14.024 14.728 14.041 14.383 14.569 14.131
+ 11.624 14.819 15.484 14.044 15.336 13.924 13.706 12.221 11.523 11.782 11.244 11.905 11.206 11.174 11.665 11.154 11.614 12.513 12.479 13.836 16.397 16.137 14.081 13.311 13.170 14.443 15.532 14.171 13.345 12.903 14.058 15.912 14.288 13.896 13.058 12.050
+ 12.683 14.982 16.220 14.822 16.339 15.493 13.915 13.490 12.653 11.975 10.864 11.214 11.895 12.046 11.979 12.144 12.459 12.475 13.038 13.754 16.358 17.447 15.463 14.229 13.661 14.533 15.968 15.284 13.632 13.407 14.899 16.382 15.017 13.101 13.490 12.566
+ 12.997 14.999 16.393 15.008 16.612 16.136 13.800 13.864 12.860 12.747 11.204 11.092 11.957 11.984 11.815 11.940 12.596 12.581 12.954 13.837 15.921 17.384 15.917 14.344 13.644 14.453 16.133 15.581 13.776 13.575 14.846 16.202 14.406 12.553 12.656 11.324
+ 12.968 14.848 16.469 15.247 16.434 16.327 13.885 14.170 13.063 13.392 11.662 11.653 12.071 12.125 12.250 11.973 12.604 12.864 12.969 13.886 16.187 16.585 15.586 14.695 13.895 14.649 16.406 16.096 14.290 13.884 14.380 15.794 14.535 12.235 12.955 10.282
+ 12.776 14.627 16.277 15.100 15.840 15.870 13.375 13.623 12.628 13.044 11.548 11.526 11.279 11.789 12.205 12.041 12.190 12.723 12.922 13.515 16.256 16.647 14.484 14.138 13.320 14.328 15.593 15.393 13.610 13.247 13.758 15.132 14.171 11.118 11.954 9.392
+ 12.219 14.315 15.334 13.981 14.731 14.410 12.174 11.757 11.404 11.652 11.353 10.616 10.688 10.956 11.309 11.181 11.181 11.702 12.167 12.917 15.796 15.556 13.256 12.792 12.076 12.901 14.559 13.904 11.927 11.351 12.239 14.277 13.352 11.367 10.819 9.785
+ 11.070 13.011 12.102 11.988 12.073 10.745 10.309 10.115 9.374 8.381 8.542 8.683 9.111 8.174 8.111 8.022 8.993 9.644 9.721 10.813 13.196 12.381 10.584 9.537 9.464 10.316 11.625 10.374 8.682 8.504 9.422 11.981 11.203 9.100 9.026 7.626
+ 11.056 13.056 12.721 10.608 8.384 7.448 7.862 7.759 7.240 7.504 5.843 5.126 6.104 5.866 4.682 3.765 4.759 5.988 6.323 7.501 9.264 9.332 6.052 6.343 6.329 7.302 7.016 6.252 5.810 5.556 6.231 7.090 6.973 6.413 6.259 6.273
+ 10.695 12.110 11.237 9.805 7.163 6.380 5.893 6.408 7.935 7.677 8.119 7.198 6.883 5.884 5.829 5.140 5.557 5.049 6.307 6.686 7.746 8.177 6.640 7.364 6.482 6.391 6.414 6.405 6.390 6.542 6.659 7.091 7.162 6.449 5.965 5.707
+ 10.143 11.324 11.667 9.810 8.545 7.633 7.234 7.180 7.922 7.157 7.046 6.883 5.602 5.566 4.678 4.457 5.112 4.986 5.819 6.337 6.930 7.262 6.101 5.321 5.345 5.496 6.999 6.277 5.387 6.448 7.169 7.349 7.303 6.598 6.564 6.810
+ 8.823 8.693 10.126 9.476 7.934 7.294 7.067 6.740 7.593 6.117 4.490 6.381 5.568 5.762 5.246 4.510 5.341 6.242 5.282 4.940 5.041 6.515 6.058 4.784 5.099 5.552 6.889 5.054 5.055 6.051 5.708 6.419 7.204 5.615 7.309 8.404
+ 9.191 9.703 10.806 9.137 8.577 8.148 5.315 5.314 6.195 4.318 4.667 5.663 4.345 4.713 5.019 4.707 4.656 4.631 4.100 4.836 5.729 6.837 6.325 5.539 5.182 5.844 6.758 6.074 5.740 6.014 6.320 6.893 6.552 6.348 8.671 9.090
+ 9.074 10.122 10.065 7.807 8.316 7.548 4.482 3.528 6.354 6.205 5.792 5.648 3.750 4.687 4.084 5.888 4.867 2.680 3.796 5.237 6.517 6.719 5.741 5.126 5.108 5.221 6.728 6.787 6.194 7.066 7.920 8.081 7.333 5.859 7.787 8.177
+ 10.107 11.014 10.609 8.792 8.785 7.994 8.447 8.512 8.537 8.861 8.770 8.230 8.093 7.891 8.062 8.516 8.295 8.067 7.412 7.020 7.627 8.326 8.541 8.071 8.258 8.118 9.582 10.424 9.900 9.824 9.223 10.992 11.084 10.513 10.597 9.248
+ 11.854 11.443 12.324 11.376 11.398 11.124 10.001 10.427 10.150 10.098 9.791 9.898 9.296 9.115 9.660 9.685 9.402 9.351 9.085 9.080 10.074 10.867 10.226 9.390 10.138 10.668 11.849 12.192 11.440 12.228 11.126 13.601 13.169 12.487 12.796 12.145
+ 10.686 12.934 13.894 12.290 13.078 12.441 12.270 11.080 10.223 10.532 11.061 9.926 9.215 10.104 9.600 9.038 9.521 9.460 10.358 11.723 14.292 14.058 12.135 11.814 10.798 11.557 14.515 13.703 12.596 13.353 12.908 14.453 14.135 13.411 14.602 13.961
+ 12.031 14.210 15.426 14.282 14.897 13.917 13.542 13.245 11.436 11.025 11.414 10.990 11.339 10.744 11.078 11.437 11.899 12.169 12.568 13.512 15.754 16.220 13.290 13.008 12.839 13.557 14.772 14.523 13.573 12.610 13.348 14.621 13.638 14.127 14.727 13.414
+ 12.882 14.663 16.004 14.338 16.041 15.710 14.235 13.776 12.703 11.907 12.173 12.234 12.803 12.206 12.098 12.229 12.172 12.330 13.162 13.604 16.134 16.808 15.190 14.219 13.669 14.423 15.928 15.664 14.376 14.198 15.322 16.513 14.615 13.260 13.464 11.513
+ 13.096 15.013 16.383 15.079 16.964 16.563 14.378 14.261 12.805 12.455 12.128 12.163 12.971 12.187 12.291 12.451 12.683 13.056 13.939 14.511 16.647 16.865 15.759 14.845 14.473 15.562 16.985 16.082 14.782 14.578 15.909 17.273 15.226 13.406 12.986 10.086
+ 13.105 15.146 16.451 15.186 17.405 16.888 14.702 14.315 13.264 12.782 12.740 12.589 13.350 12.500 12.578 12.830 12.954 13.380 14.269 15.006 17.341 17.419 16.089 15.253 14.721 16.073 17.370 16.045 14.880 14.697 15.965 17.424 15.508 13.137 13.116 10.374
+ 12.980 15.125 16.463 15.368 17.593 17.085 14.825 14.443 13.295 13.033 12.971 12.730 13.490 12.523 12.735 12.911 12.973 13.445 14.192 15.077 17.545 17.026 15.941 15.147 14.890 16.132 17.701 16.060 14.679 14.376 15.486 17.205 15.597 12.954 13.033 11.676
+ 13.133 15.059 16.258 15.353 17.392 16.692 14.056 14.174 12.759 12.204 12.786 12.307 12.958 12.237 12.281 12.692 12.848 13.574 14.090 15.856 17.852 16.529 14.946 14.278 14.183 15.896 17.041 14.897 13.780 13.700 14.736 16.649 15.495 12.625 12.842 10.652
+ 12.935 14.859 15.697 14.775 16.472 15.160 14.221 13.736 11.184 11.111 12.978 11.691 12.084 10.990 11.413 11.669 12.095 13.145 13.803 16.085 17.212 15.034 13.478 13.239 13.232 15.592 15.852 13.886 13.059 13.249 14.491 16.321 15.264 12.825 12.710 11.897
+ 12.448 14.300 14.821 13.482 15.038 13.507 13.627 12.706 11.582 12.548 13.488 12.200 10.799 9.748 10.651 10.422 10.878 11.969 13.323 14.831 14.545 13.166 12.820 12.136 12.371 14.102 13.522 12.425 13.069 13.515 13.603 14.833 14.450 12.623 12.070 10.295
+ 12.241 14.096 15.490 14.689 15.473 14.709 13.545 13.351 11.914 10.417 12.457 11.317 10.778 10.509 10.959 11.403 11.634 11.855 13.609 15.418 14.111 13.368 12.694 12.264 13.109 14.599 14.032 12.757 13.607 14.162 14.596 14.368 14.299 14.128 12.770 9.945
+ 12.774 14.531 15.959 14.384 15.417 14.917 14.171 13.896 10.131 8.795 12.284 11.814 11.988 11.367 11.257 11.537 11.968 12.509 13.599 15.903 15.415 13.938 12.999 13.192 14.045 15.551 14.633 12.844 13.037 13.798 14.501 14.801 14.373 13.338 13.163 11.101
+ 13.113 14.689 16.244 14.902 15.476 15.416 14.443 14.610 11.641 10.430 12.115 11.776 12.211 11.139 11.129 11.768 11.962 12.841 13.825 15.906 15.834 14.182 13.850 13.882 14.386 16.073 15.640 12.725 13.067 12.937 14.229 15.079 13.573 11.774 10.989 10.616
+ 13.274 14.535 16.440 15.351 15.475 15.856 14.325 15.011 12.277 11.189 12.593 12.837 12.815 12.046 11.915 12.628 12.211 12.896 13.819 15.969 16.883 14.448 13.985 13.899 14.007 15.750 15.601 14.179 13.908 13.676 14.574 15.476 13.796 11.208 10.637 10.487
+ 13.505 14.305 16.604 16.048 15.599 16.379 14.274 15.174 13.346 12.170 11.995 13.007 12.628 12.804 12.411 12.731 12.728 13.151 13.925 15.680 17.674 16.006 14.309 13.690 14.518 16.627 16.631 14.631 13.691 13.990 15.460 16.130 14.067 10.692 10.640 9.863
+ 13.431 14.135 16.613 16.137 15.150 16.196 14.141 15.004 13.683 13.078 11.903 12.270 12.213 12.851 12.190 12.672 12.916 13.303 13.912 15.793 17.522 16.408 14.197 14.120 14.168 16.424 16.634 14.488 13.804 13.873 14.663 15.523 14.142 11.090 9.741 8.228
+ 13.336 14.255 16.526 15.994 14.140 15.252 13.579 14.524 13.219 13.372 11.902 11.087 11.273 12.052 11.626 12.215 12.677 13.301 13.920 16.027 16.027 15.322 13.710 13.988 14.523 16.057 16.010 13.670 13.153 13.743 14.667 14.713 13.316 11.315 9.850 6.847
+ 12.194 14.097 15.502 15.052 13.585 12.850 12.560 12.737 12.163 12.897 11.945 11.204 10.667 11.210 10.596 11.345 11.818 12.112 13.813 15.438 14.080 13.110 12.553 12.919 14.160 14.250 13.653 12.417 12.761 12.026 11.762 12.080 11.211 9.453 8.112 5.869
+ 9.686 12.484 13.343 12.086 11.311 8.936 7.746 8.919 9.536 9.827 9.600 8.829 8.904 8.710 8.688 9.628 10.579 9.402 9.887 10.015 9.172 10.005 9.907 9.389 8.603 8.029 8.212 8.039 6.911 6.571 7.498 8.135 7.157 5.216 5.366 4.209
+ 9.769 10.790 12.628 11.680 8.401 8.364 6.391 6.964 6.310 7.022 6.046 4.910 4.594 5.637 6.300 7.362 7.726 7.093 7.619 9.133 8.163 7.511 6.464 6.299 6.282 5.901 6.570 5.480 4.804 5.505 5.814 6.477 5.652 4.333 4.429 3.704
+ 11.336 11.168 11.835 11.535 9.388 8.753 6.491 6.373 6.707 7.265 6.927 5.610 5.316 6.679 6.848 7.590 7.564 7.079 7.317 8.270 8.466 6.852 6.157 4.990 5.771 6.964 6.767 4.615 4.283 3.828 5.270 6.109 5.300 4.917 4.165 3.413
+ 10.294 11.153 11.693 9.472 8.540 8.668 5.660 5.783 5.668 6.752 6.106 4.410 3.983 4.988 5.866 6.746 6.661 5.672 5.928 7.068 7.252 7.121 6.251 5.365 5.303 5.531 5.612 4.375 3.926 4.134 4.939 6.014 5.614 4.328 4.005 3.879
+ 9.389 9.676 10.333 8.675 8.985 8.811 6.222 4.835 4.825 6.345 5.954 4.250 5.404 5.388 5.766 5.881 6.285 6.826 7.327 6.913 7.912 7.495 6.545 5.373 5.606 6.133 6.330 6.370 4.818 5.176 5.007 5.241 5.543 5.586 4.880 3.257
+ 9.123 9.690 9.002 7.973 6.088 6.551 6.345 5.866 6.499 7.330 7.072 6.663 5.772 5.799 6.197 6.513 6.428 6.581 6.600 6.800 6.876 6.861 6.923 6.905 7.115 6.650 6.058 5.889 5.690 5.589 4.437 5.390 6.037 5.837 4.730 3.694
+ 8.551 9.322 10.529 10.188 8.373 7.983 8.384 8.478 9.560 10.406 10.803 10.174 8.698 7.530 9.020 9.506 9.793 10.031 9.688 9.653 9.391 9.596 10.011 10.394 10.530 9.895 8.914 8.371 8.696 8.560 6.867 7.219 8.251 7.951 7.214 5.971
+ 7.950 8.993 9.591 7.939 7.183 6.561 5.899 7.013 6.745 7.873 8.581 7.731 5.198 5.510 6.645 6.252 6.458 7.364 6.270 6.350 6.451 6.406 6.613 7.263 7.396 6.653 5.938 5.376 5.918 5.617 4.733 5.336 5.411 5.216 4.735 3.773
+ 7.910 8.725 7.230 5.818 5.675 6.755 5.973 6.589 4.726 4.425 3.036 3.335 4.036 5.235 4.951 3.955 3.553 3.649 5.063 4.679 5.566 4.735 4.765 5.148 4.020 4.672 4.911 4.095 4.315 4.343 3.632 4.866 4.170 4.763 3.748 2.902
+ 6.532 6.577 5.107 5.080 5.932 6.336 5.078 5.612 3.789 5.445 5.942 4.369 3.103 4.190 4.543 4.339 4.254 4.263 4.828 5.266 5.778 5.188 5.087 5.218 3.715 3.790 3.818 4.213 4.714 4.062 4.375 4.731 3.614 2.818 2.964 1.977
+ 4.341 4.349 5.362 5.360 5.652 6.073 4.325 4.230 3.348 4.697 4.424 3.288 3.930 4.644 4.806 4.674 4.155 4.359 4.762 4.707 5.802 5.162 5.211 4.388 3.828 3.963 4.546 4.064 3.694 4.100 3.563 3.646 3.495 3.445 3.759 2.501
+ 3.688 3.960 6.181 5.987 4.198 4.871 5.254 3.967 3.608 4.528 4.262 3.291 3.028 4.129 3.791 2.955 3.627 3.763 3.923 5.148 5.893 3.871 4.844 5.351 4.475 3.607 3.539 3.564 3.389 3.643 3.556 3.953 3.767 3.160 3.734 2.390
+ 4.292 4.632 5.914 5.455 3.753 4.260 4.255 3.704 4.155 3.746 2.439 3.596 3.505 5.809 5.359 3.225 4.574 4.391 4.407 4.752 6.169 5.506 5.257 4.664 5.545 4.053 3.382 4.390 3.398 3.402 3.448 4.035 3.833 3.112 3.078 2.125
+ 5.459 5.007 4.894 4.755 4.105 5.444 5.131 4.599 3.250 3.350 4.640 3.810 4.181 4.958 5.144 2.771 4.139 5.127 5.002 5.357 5.846 5.522 4.620 4.413 5.528 4.404 3.683 3.847 3.407 3.799 3.494 4.051 3.565 3.496 2.660 1.923
+ 5.053 4.510 4.524 5.548 4.929 4.566 5.113 5.059 3.618 3.568 4.016 3.540 2.873 5.103 4.619 1.769 2.985 4.491 4.647 3.818 4.696 4.438 3.563 3.491 4.380 3.267 4.675 4.888 3.645 3.719 3.682 2.353 2.704 3.031 2.627 1.648
+ 5.866 5.252 4.268 4.330 3.109 3.746 4.717 5.001 4.492 3.101 2.709 3.807 3.534 5.841 4.886 2.086 2.800 4.368 3.690 4.628 4.412 4.550 4.923 3.540 3.106 2.870 3.809 4.663 3.612 3.245 3.576 3.644 3.047 2.749 2.086 1.579
+ 6.106 5.331 3.787 4.017 3.283 4.268 4.174 4.432 4.374 3.460 2.925 3.945 3.396 4.177 3.801 2.935 4.165 4.018 4.356 4.363 4.228 3.750 4.365 4.570 3.889 3.270 2.594 4.299 3.918 3.318 2.894 3.892 3.214 3.383 2.781 1.365
+ 3.496 4.374 4.536 4.065 5.102 4.996 3.929 2.501 3.208 2.749 4.070 5.197 4.576 5.268 5.200 3.865 4.003 4.017 4.262 4.735 4.794 4.558 4.112 4.153 4.044 3.359 3.791 4.110 3.561 3.643 3.240 3.403 2.959 3.342 2.979 2.418
+ 4.191 4.824 3.464 3.832 5.222 5.007 4.988 3.640 3.116 4.032 3.450 3.769 4.014 4.696 4.290 4.185 3.357 4.081 4.415 4.265 5.287 4.697 4.196 3.859 3.773 4.097 3.937 2.876 2.920 3.142 3.046 3.362 2.761 2.571 2.293 2.094
+ 3.432 4.808 4.179 3.583 3.676 4.702 4.700 4.196 3.906 3.374 3.418 4.289 5.019 4.156 4.924 5.054 5.081 5.093 4.414 4.377 4.105 4.113 4.866 3.374 4.384 3.506 3.672 3.427 2.820 2.751 2.212 2.920 3.110 2.738 2.162 1.405
+ 5.308 5.604 5.832 4.544 4.302 4.533 4.311 3.048 2.862 3.299 4.159 4.124 3.939 4.839 4.635 4.402 3.632 3.761 4.682 4.564 3.517 5.231 4.953 4.104 4.428 3.583 3.187 3.792 3.680 3.327 2.263 2.724 3.512 3.257 2.779 2.598
+ 5.547 4.235 3.791 3.210 3.462 5.084 4.521 4.190 3.748 3.490 3.367 2.766 2.561 4.464 4.117 3.846 3.359 4.224 4.294 3.693 3.225 4.334 4.572 3.516 3.491 3.487 2.663 3.065 2.966 2.975 3.377 3.544 3.536 3.159 2.132 1.959
+ 6.209 5.291 3.207 4.250 4.004 4.514 4.841 3.692 3.263 2.367 2.892 2.419 3.654 4.652 4.644 4.685 4.333 3.718 3.975 3.330 3.735 4.282 3.519 2.751 2.883 2.682 2.946 3.736 3.104 2.094 3.388 3.102 3.684 3.475 2.682 1.848
+ 6.274 6.381 4.881 3.621 3.368 4.512 4.832 3.738 2.246 1.433 2.920 3.637 3.115 5.188 5.675 4.528 3.695 3.964 3.558 3.675 4.996 4.388 3.989 4.442 3.694 3.088 4.367 3.438 2.429 2.651 3.863 2.987 3.539 3.632 3.137 2.295
+ 5.439 7.015 7.640 9.019 9.944 10.860 10.858 9.698 8.679 8.534 8.367 8.486 7.850 7.240 9.560 10.879 10.568 8.723 8.942 8.480 8.157 8.152 7.895 7.812 8.173 7.818 8.279 8.023 7.529 7.251 8.652 7.362 6.703 6.139 7.122 5.807
+ 5.546 6.484 6.978 8.322 10.270 11.895 12.610 11.609 9.479 7.731 7.631 7.634 6.872 6.459 9.449 11.453 11.931 9.861 8.433 7.693 7.233 7.347 6.955 7.157 7.457 7.051 8.531 7.782 6.889 6.958 9.404 7.620 5.972 5.632 7.593 6.638
+ 4.520 4.155 4.291 4.806 5.151 7.468 9.991 11.415 10.968 8.523 4.664 4.896 4.395 4.187 4.361 6.712 9.059 8.583 5.066 4.737 7.309 7.581 7.459 8.189 6.964 7.323 7.507 6.558 6.234 7.498 8.008 7.364 4.973 8.028 9.274 7.946
+ 5.311 3.758 5.072 5.880 4.771 5.218 8.018 8.142 9.570 9.175 7.395 7.988 6.707 7.011 7.616 8.875 9.256 8.278 8.397 7.388 7.167 7.521 7.395 6.937 6.019 6.196 6.709 6.523 6.209 6.160 7.141 7.036 5.747 6.417 7.480 5.650
+ 5.122 7.022 6.893 6.604 6.402 9.221 10.466 11.423 11.546 10.923 12.023 11.068 11.478 11.739 12.239 13.296 13.623 11.825 11.479 11.443 10.656 10.012 9.852 11.166 10.137 9.139 7.628 8.052 8.480 9.058 9.613 9.248 8.006 7.130 6.242 6.328
+ 11.067 11.645 11.470 11.366 12.152 13.047 13.600 13.695 14.856 16.142 16.441 16.202 15.558 14.962 15.153 15.879 16.678 15.585 14.001 12.677 12.321 12.018 11.790 12.044 11.002 8.726 9.452 9.609 9.829 9.918 12.431 13.069 11.704 8.580 7.413 7.251
+ 10.889 12.568 12.195 12.080 11.811 13.268 14.024 13.984 14.927 16.991 17.092 17.499 16.469 15.040 15.034 16.125 17.549 16.989 15.014 13.841 13.246 12.972 13.313 13.789 12.789 11.301 10.980 10.569 10.159 10.378 12.443 12.874 11.711 9.724 7.596 6.068
+ 10.803 12.889 12.792 11.841 12.086 13.511 13.771 14.645 15.625 17.035 16.878 17.132 15.627 14.596 14.929 15.817 16.691 17.431 16.416 15.256 14.372 13.779 13.925 15.025 15.330 14.298 13.002 11.529 10.300 12.001 13.494 13.211 11.568 9.905 8.664 6.882
+ 11.156 13.346 13.301 12.513 13.009 13.666 14.412 15.524 15.935 17.394 16.633 16.961 15.596 14.971 15.296 15.793 16.026 16.908 16.571 15.534 14.861 14.022 14.322 15.237 15.351 13.841 12.659 11.717 11.523 11.169 12.857 12.857 11.333 9.470 9.311 8.034
+ 11.642 13.647 13.887 12.652 13.698 13.965 15.032 16.109 16.744 17.797 17.090 16.458 15.657 15.081 14.901 15.225 15.828 16.718 17.727 17.318 16.173 15.619 15.684 16.236 16.327 15.006 13.917 13.315 12.182 12.203 13.594 13.644 12.418 11.720 11.426 8.678
+ 12.019 13.647 14.420 12.666 14.449 14.514 16.257 16.341 17.210 16.732 16.297 15.277 15.052 14.546 14.307 14.130 14.494 15.386 16.675 17.224 16.839 15.573 15.276 15.311 15.424 14.606 13.129 12.731 11.750 11.441 12.078 13.211 12.710 12.364 10.918 7.702
+ 12.863 13.480 14.834 13.814 15.526 15.580 17.082 16.565 16.197 15.848 14.877 14.519 14.732 13.915 13.694 13.627 14.284 14.923 15.998 17.271 17.418 16.243 15.549 15.473 15.724 14.395 13.783 13.264 11.693 11.840 12.793 13.646 13.649 13.078 9.941 6.075
+ 13.081 12.785 14.780 14.065 16.002 15.836 16.084 16.257 13.866 14.612 13.245 13.550 13.243 13.439 12.721 12.284 13.444 13.864 14.887 16.658 17.259 15.167 14.795 14.800 15.427 14.266 14.145 12.799 10.842 10.482 11.672 13.029 13.275 12.367 8.690 5.440
+ 13.986 12.395 14.922 14.999 15.149 16.322 14.441 13.289 13.025 13.784 13.016 12.684 12.632 13.253 12.163 12.140 12.725 13.422 14.298 15.935 16.126 14.740 13.983 13.972 15.105 15.541 14.812 12.484 10.287 10.060 11.295 12.706 13.252 11.669 8.147 6.330
+ 14.399 12.307 14.794 16.250 14.939 16.456 16.234 13.441 14.274 12.930 13.014 11.946 12.882 12.402 12.636 12.026 12.750 13.095 14.094 15.395 16.177 15.440 13.558 13.650 14.613 16.137 15.204 11.723 9.788 9.958 11.080 12.692 12.670 11.599 8.461 6.607
+ 14.860 13.466 14.070 16.948 16.414 15.177 16.680 15.065 14.130 14.225 12.317 13.092 12.586 13.276 12.714 12.671 13.479 13.418 14.153 15.329 16.624 16.528 15.506 14.732 15.161 16.137 15.735 12.693 11.961 11.462 11.982 13.433 13.719 12.474 8.882 7.753
+ 14.908 14.140 12.673 17.189 17.360 14.382 16.470 16.123 13.660 15.083 13.108 13.363 12.620 13.450 12.774 13.021 13.089 13.700 14.008 15.263 16.715 17.828 16.457 15.343 16.015 16.646 15.632 13.422 12.823 12.001 12.477 13.624 14.205 13.121 8.803 8.205
+ 14.812 14.350 12.427 17.058 17.671 14.928 15.535 16.131 13.332 14.694 13.696 12.625 12.892 12.602 12.981 12.423 12.477 13.860 13.502 14.049 15.773 17.714 16.870 15.761 15.544 16.101 15.542 13.964 13.700 12.707 12.733 13.718 14.182 13.022 8.940 8.417
+ 15.103 14.888 12.464 15.621 17.353 16.002 13.980 15.877 14.567 12.556 13.552 11.514 12.407 11.333 12.147 11.568 12.702 12.827 13.326 13.602 15.188 16.775 17.397 15.827 15.474 15.904 15.623 14.515 14.308 13.183 13.143 14.189 14.717 13.981 9.476 8.484
+ 15.187 15.157 12.335 14.509 16.546 15.305 12.473 15.160 14.100 12.928 14.503 12.331 11.821 10.757 11.806 11.033 12.167 11.443 12.274 12.584 14.147 15.174 16.761 15.358 14.609 15.112 14.965 13.780 13.701 12.482 12.488 13.468 13.952 12.915 9.201 8.212
+ 15.240 15.129 12.134 13.628 15.326 13.897 11.666 14.410 13.918 12.005 14.225 12.813 11.063 10.726 10.887 10.599 11.311 10.461 11.030 11.208 12.865 14.477 15.397 14.444 14.036 13.514 13.334 12.641 11.963 11.098 11.169 12.444 13.137 10.362 9.417 8.786
+ 15.580 16.000 14.078 12.377 14.196 13.021 10.465 12.371 12.010 10.281 13.239 11.902 9.057 9.652 10.383 10.446 10.562 10.197 9.865 10.124 11.111 13.127 12.106 12.394 12.721 11.218 10.262 10.239 9.625 8.837 9.338 11.382 12.525 10.109 9.145 8.592
+ 15.764 16.184 13.889 11.198 14.240 13.573 9.559 12.373 11.823 10.426 13.216 11.809 8.455 8.328 10.035 10.236 10.856 10.351 9.956 9.491 10.099 11.933 10.595 12.204 12.675 11.397 9.578 8.115 6.745 6.876 8.222 11.142 12.103 10.073 9.458 8.692
+ 15.793 15.978 13.430 12.202 14.597 13.592 10.148 12.562 11.562 11.375 13.362 11.429 9.356 8.534 10.221 9.731 11.119 10.287 10.511 10.089 10.769 11.924 10.618 12.700 12.761 12.043 8.696 7.785 7.677 8.064 8.517 11.783 13.586 10.267 9.552 9.616
+ 15.718 15.630 12.730 13.106 14.878 13.282 10.481 12.544 10.925 12.288 13.127 10.055 9.845 8.171 10.046 9.440 10.752 10.356 10.591 10.454 10.970 11.284 11.331 12.896 13.265 12.133 9.442 8.542 8.067 8.900 9.297 12.542 13.383 10.035 9.822 10.520
+ 15.581 15.217 11.982 13.821 15.038 12.951 11.895 12.817 10.149 12.867 12.569 9.069 9.795 8.925 9.383 9.925 9.955 10.491 9.785 9.917 10.515 11.320 12.395 13.213 14.346 13.049 12.127 11.544 10.878 11.043 11.503 13.157 13.792 11.209 10.571 10.646
+ 15.224 14.621 12.261 13.785 14.693 12.507 13.505 13.649 12.663 13.654 11.664 10.244 9.618 10.277 9.642 10.256 10.008 10.737 9.381 8.876 9.292 11.004 13.889 14.858 14.274 14.297 13.582 13.913 12.478 12.155 12.654 14.167 14.319 11.444 10.762 10.597
+ 14.806 13.494 12.078 14.813 14.119 12.256 14.213 12.979 13.102 13.399 11.239 11.894 9.641 9.995 10.086 10.028 10.758 10.011 8.879 8.215 9.076 11.254 13.907 15.088 13.831 13.570 13.931 14.696 13.882 13.022 13.471 15.078 14.308 10.572 9.348 9.226
+ 14.567 12.916 12.938 15.014 13.801 13.089 13.968 11.523 13.167 12.378 11.882 11.794 9.284 9.064 10.210 9.631 9.800 9.813 8.587 7.954 8.759 10.697 13.214 14.461 13.791 12.826 13.612 15.001 14.378 13.472 13.910 15.149 13.989 11.052 10.621 9.688
+ 14.420 12.547 13.623 15.033 13.323 13.511 13.541 11.339 12.868 11.175 12.099 10.905 9.056 8.888 9.673 9.452 9.107 9.516 8.382 7.886 8.588 10.989 12.654 13.959 13.311 12.510 13.233 14.517 14.288 13.361 14.210 15.377 13.662 10.919 10.655 9.811
+ 14.155 11.990 14.086 14.942 12.747 13.749 13.084 11.730 12.429 10.684 11.601 9.354 9.065 9.439 9.276 9.426 9.023 8.862 7.951 7.944 9.167 10.737 12.230 14.206 13.240 12.406 13.520 14.245 13.973 13.397 14.403 15.771 13.452 11.117 11.242 10.402
+ 13.947 11.781 14.446 14.948 12.668 14.057 12.860 12.213 12.308 11.149 11.513 9.559 9.369 9.449 9.020 8.894 9.035 8.365 8.336 8.805 9.964 11.422 13.555 14.866 13.430 13.270 13.839 13.837 13.050 12.756 14.391 15.185 13.489 10.733 11.198 10.499
+ 13.796 12.333 14.842 14.876 13.038 14.485 12.935 12.605 12.131 11.718 11.401 10.428 9.822 9.497 9.336 9.282 9.404 9.570 9.880 10.532 11.486 13.299 15.060 15.222 13.921 12.246 12.296 11.599 10.817 11.218 12.998 13.500 11.899 9.791 10.977 10.235
+ 13.362 12.637 15.069 14.636 13.455 14.696 12.560 12.583 11.487 11.780 10.636 10.623 9.459 9.208 10.111 9.818 10.086 10.851 11.052 11.676 12.428 13.242 13.652 14.270 12.629 9.383 9.298 8.912 9.271 9.890 12.737 12.812 10.929 9.103 11.255 9.906
+ 13.125 13.169 15.226 14.362 13.945 14.584 12.338 12.190 10.857 11.471 9.489 9.831 9.180 9.506 10.698 10.332 10.686 11.406 12.047 12.080 11.881 11.968 12.537 13.318 11.429 8.644 8.252 7.421 7.852 8.373 11.251 10.846 9.120 8.308 10.472 8.585
+ 12.759 14.011 15.374 13.827 14.429 14.012 12.706 12.215 11.848 11.534 11.330 10.437 10.456 9.726 9.912 9.972 10.693 11.816 12.683 12.781 11.565 11.457 12.138 13.168 11.398 8.768 8.092 8.032 8.304 8.803 10.098 9.401 8.887 8.393 8.931 7.067
+ 12.301 14.583 15.429 13.591 14.730 13.658 13.637 12.248 12.311 11.782 12.187 11.056 10.711 9.529 9.264 10.376 10.991 11.518 12.183 12.738 12.184 11.707 12.695 13.042 11.466 9.525 8.999 8.108 9.595 10.714 12.121 11.221 9.902 9.423 11.356 9.568
+ 12.271 14.979 15.145 13.743 14.619 14.040 14.427 12.516 12.379 12.653 11.798 11.000 10.378 9.951 10.057 10.776 11.050 10.999 11.527 12.898 13.668 13.459 13.517 14.034 13.399 10.266 9.174 8.687 9.405 10.402 12.124 11.327 9.988 8.950 10.300 8.500
+ 12.914 15.255 14.871 13.990 14.086 15.067 14.754 12.493 12.623 12.970 11.806 11.165 10.305 9.859 10.580 10.382 11.026 10.766 11.790 13.048 14.991 15.368 14.579 14.807 14.418 12.961 10.916 10.865 10.661 10.789 12.777 11.544 11.227 10.220 10.224 9.022
+ 13.740 15.329 14.368 13.541 13.558 14.736 14.018 12.646 12.372 12.238 12.247 11.452 9.778 9.816 10.051 9.674 10.396 10.318 10.839 11.835 14.001 14.552 13.605 13.658 13.881 13.960 11.637 10.784 10.902 11.202 13.126 12.921 12.598 9.101 9.761 9.375
+ 14.402 15.630 14.522 13.423 12.974 13.361 11.033 11.100 10.784 10.750 10.936 9.557 8.895 7.655 8.674 8.616 10.286 10.223 9.834 10.274 11.073 11.170 9.609 10.290 11.563 11.770 9.854 8.335 8.258 8.191 9.569 11.508 12.141 9.184 8.448 8.780
+ 14.734 15.721 14.222 13.024 13.314 13.207 11.270 10.579 10.339 11.106 9.625 9.122 9.501 7.085 7.825 8.079 9.564 10.102 9.810 10.127 11.712 11.114 8.190 9.076 10.322 11.962 10.819 7.971 9.249 8.966 6.895 10.480 11.400 9.220 9.682 10.020
+ 14.884 15.455 14.009 13.290 13.636 12.870 11.496 10.402 10.412 11.087 10.317 10.833 10.301 7.699 8.082 8.524 9.463 9.621 9.451 9.743 10.823 10.645 8.073 9.109 10.340 11.017 10.579 7.575 8.743 9.106 7.282 10.196 10.909 9.063 10.034 10.114
+ 14.713 14.922 13.711 13.223 13.302 12.039 11.426 10.273 10.699 10.901 10.369 10.431 8.810 7.121 8.410 8.731 8.518 8.398 7.976 8.432 10.334 10.432 8.574 9.492 10.713 10.856 10.363 7.801 8.366 8.799 8.264 10.823 11.451 10.402 9.813 9.564
+ 14.118 13.773 13.200 12.701 12.068 10.351 11.222 10.879 11.311 10.811 10.168 10.205 8.497 6.133 7.629 7.766 7.636 8.601 8.319 8.510 9.832 9.856 9.288 9.599 9.954 9.955 9.400 7.373 7.047 8.110 7.962 7.909 9.899 10.129 9.300 8.795
+ 12.934 12.076 12.474 10.788 9.795 9.369 9.058 8.709 9.884 9.574 10.004 8.715 7.955 7.014 8.274 8.274 8.283 8.310 7.760 7.726 8.512 8.822 8.670 8.982 8.969 8.717 8.348 7.457 6.970 6.832 6.254 6.377 7.363 8.571 8.432 7.000
+ 11.105 11.274 9.942 9.711 8.443 7.712 7.145 8.470 8.540 8.944 8.697 6.853 5.678 5.443 5.265 5.935 6.430 7.724 6.362 5.498 7.212 7.266 6.615 6.936 7.517 7.186 6.895 5.850 5.327 5.077 5.317 5.492 6.194 6.570 6.349 6.108
+ 7.297 9.011 9.140 7.189 5.026 6.245 6.327 6.389 8.272 9.491 9.198 6.969 5.717 5.048 4.412 5.242 5.779 6.763 7.051 6.058 5.755 6.112 6.334 7.163 7.264 6.683 6.195 5.692 4.238 4.313 4.776 5.187 5.930 6.333 5.688 5.252
+ 6.278 6.421 7.526 6.757 6.210 6.611 5.086 5.489 6.898 8.639 8.624 6.490 4.680 5.799 4.338 4.133 4.826 5.191 5.522 4.943 4.566 5.365 5.031 5.883 5.836 6.003 5.623 4.744 3.918 4.475 4.594 5.445 5.208 5.602 4.870 4.178
+ 8.112 8.565 8.510 8.954 9.166 9.271 9.125 9.193 9.198 9.277 9.189 9.294 8.960 9.197 9.061 9.090 9.328 9.566 9.479 9.791 9.731 10.027 10.198 10.314 10.334 10.306 11.469 12.848 13.125 12.463 11.602 11.350 10.360 10.061 9.750 8.910
+ 9.002 10.184 9.681 11.169 10.769 11.600 11.091 11.363 10.991 10.807 10.964 10.770 10.668 10.926 11.270 11.512 11.951 12.075 12.166 11.802 11.154 12.408 12.505 12.704 12.604 13.369 15.282 15.747 15.822 14.352 14.471 14.684 15.509 15.474 13.763 13.727
+ 10.259 9.269 10.064 10.735 10.004 10.799 10.985 10.242 10.162 10.462 9.654 10.029 9.322 10.007 10.407 10.564 11.507 11.290 11.552 11.850 11.549 13.483 12.994 13.273 13.229 15.149 17.175 16.159 17.573 17.941 17.279 17.460 17.029 17.186 17.533 16.858
+ 9.530 10.315 8.965 8.095 9.896 10.366 9.430 8.729 10.956 10.710 8.254 9.232 9.895 10.233 10.485 9.978 10.753 10.597 10.333 10.477 11.867 13.233 13.002 14.605 14.890 17.964 18.343 17.670 18.955 18.882 17.744 18.080 18.054 17.786 18.615 18.165
+ 9.625 10.483 10.375 9.958 9.916 11.291 10.047 7.873 10.552 9.985 10.544 10.422 9.940 10.701 10.785 9.395 10.233 11.702 11.153 9.919 13.404 15.110 13.972 14.860 16.551 18.101 18.006 18.169 19.100 18.190 18.264 18.171 17.670 17.254 18.264 18.286
+ 10.440 10.031 10.961 10.582 10.679 10.695 9.656 9.106 11.024 10.587 9.052 8.908 10.127 11.516 10.845 10.779 10.622 10.456 10.476 12.047 13.262 14.519 14.667 15.114 16.254 18.185 17.912 17.319 18.632 18.616 16.964 16.856 17.170 17.693 17.361 16.905
+ 12.049 10.407 10.723 10.003 10.161 8.820 9.088 9.941 10.422 10.116 8.788 9.244 10.403 10.517 10.272 9.696 10.501 11.365 10.875 13.116 14.718 16.035 14.005 15.003 15.866 16.976 17.266 16.694 17.773 17.296 16.685 16.451 17.063 16.504 17.024 16.755
+ 13.858 12.483 10.798 10.573 11.072 11.175 11.629 10.512 10.498 10.115 10.018 10.630 10.508 9.755 9.946 9.776 9.724 10.781 11.244 12.838 14.439 16.170 14.102 14.777 16.509 17.859 17.449 15.977 18.027 17.731 16.869 16.549 16.469 16.968 16.953 16.640
+ 12.279 10.489 9.820 11.338 10.975 10.824 10.587 11.105 9.876 10.186 10.210 9.837 9.933 10.305 9.405 8.913 8.563 10.171 12.176 12.617 14.905 14.744 12.618 14.485 16.770 18.870 17.140 15.789 16.836 16.812 16.030 16.250 14.383 15.761 15.100 14.658
+ 12.883 11.196 11.111 10.814 10.380 8.492 10.170 10.977 9.273 8.323 8.996 9.674 8.279 8.739 8.416 8.690 8.034 9.623 10.039 11.331 12.661 13.106 12.801 13.392 15.068 16.929 15.198 14.438 14.380 13.736 13.651 13.857 12.919 12.553 12.382 11.719
+ 13.722 13.759 13.765 13.739 15.048 15.255 15.404 15.523 14.429 13.529 13.368 13.485 12.977 11.896 11.906 12.208 12.798 12.935 13.359 14.112 14.906 15.129 13.887 13.636 14.400 14.648 13.680 13.181 12.992 11.800 10.619 11.205 12.079 12.182 11.891 10.126
+ 13.392 14.434 15.223 13.496 15.972 16.533 17.753 18.279 16.744 15.488 15.606 14.987 14.937 14.660 14.268 14.344 14.720 15.037 15.746 17.032 18.177 17.706 16.186 16.140 16.624 16.618 15.706 14.810 13.815 11.955 13.266 14.338 13.940 12.807 12.672 11.174
+ 12.339 14.126 14.891 13.996 15.103 15.837 18.637 18.544 18.445 17.176 16.116 15.433 14.746 14.748 14.596 14.759 14.856 15.207 16.184 17.690 19.062 18.204 16.793 16.701 17.159 17.394 16.221 15.652 14.951 13.729 16.173 16.566 15.483 14.615 13.378 12.184
+ 11.511 14.142 14.152 14.341 15.274 16.265 17.405 18.684 19.524 17.308 15.556 15.966 15.748 14.961 14.817 15.155 15.466 15.411 16.691 18.194 19.570 18.639 16.664 16.715 16.343 16.960 15.916 15.387 14.591 14.694 16.688 16.706 15.812 15.049 12.756 10.623
+ 11.406 14.130 13.450 14.467 14.422 15.032 15.936 18.912 19.147 18.660 16.515 15.997 15.643 15.157 14.736 15.272 15.377 15.365 16.681 18.194 19.243 18.325 16.883 16.896 16.775 16.121 15.123 14.911 13.846 15.190 16.942 17.550 16.918 16.272 13.334 11.372
+ 11.718 13.719 13.139 14.046 13.611 14.757 16.220 17.678 18.641 18.857 15.772 15.062 14.693 14.847 14.798 14.736 14.737 15.571 16.282 18.037 18.875 17.672 17.053 16.563 16.497 15.610 14.901 14.386 13.210 15.588 16.516 17.295 16.715 15.957 13.271 11.742
+ 11.600 13.565 12.733 13.965 13.769 14.734 16.321 16.954 18.940 18.267 15.156 15.249 14.722 14.509 14.429 14.305 14.571 15.308 15.672 17.515 18.535 17.716 16.952 16.386 16.360 15.042 14.308 13.929 13.138 15.094 16.042 16.398 16.376 15.793 12.953 11.639
+ 12.112 13.567 12.900 13.955 13.823 15.055 16.779 17.135 18.393 17.082 14.377 13.927 13.992 13.913 13.491 13.412 14.140 14.093 14.959 16.084 17.691 17.389 16.037 15.729 15.641 14.260 13.299 12.931 12.506 13.461 14.494 15.059 15.152 15.035 13.040 11.320
+ 12.089 13.464 12.890 13.471 13.977 15.117 16.744 16.888 16.822 15.242 14.635 12.416 12.637 12.200 11.720 11.416 12.609 12.084 12.910 13.990 15.196 16.466 15.271 14.949 14.796 14.134 13.036 12.537 12.051 10.318 13.009 13.893 13.859 14.252 13.079 10.950
+ 10.583 11.536 11.330 11.286 12.872 14.729 15.301 14.107 12.714 12.861 11.749 9.530 9.937 10.114 9.888 8.601 10.051 9.701 10.274 11.783 12.717 13.575 14.284 13.941 13.635 13.251 11.726 11.454 10.519 10.059 11.192 11.316 12.406 12.757 11.890 10.476
+ 9.274 9.754 9.094 6.583 8.461 9.397 10.736 11.683 12.597 11.675 9.635 8.263 7.651 8.422 8.959 7.475 7.754 8.021 9.111 9.588 10.679 10.939 11.577 11.002 9.518 9.340 8.551 8.386 7.162 7.759 9.291 8.392 8.727 8.384 7.550 7.565
+ 5.714 7.673 7.253 7.478 8.163 8.912 10.836 11.917 11.896 11.081 8.544 5.959 7.190 6.395 6.802 5.277 5.157 5.056 7.731 9.668 10.492 9.991 8.655 7.556 7.842 7.907 7.911 7.385 7.202 7.828 8.011 8.233 7.254 7.490 6.219 5.330
+ 6.021 7.615 6.634 5.891 7.131 8.349 9.321 10.296 10.621 9.542 6.574 6.007 6.368 6.164 5.533 4.740 5.655 4.905 7.264 9.451 10.090 9.733 8.543 7.957 7.880 6.736 6.540 6.043 6.424 6.986 7.572 7.705 7.183 7.017 6.706 5.640
+ 5.254 6.583 6.562 6.951 6.818 7.869 9.102 8.170 8.639 8.410 5.615 5.296 5.633 4.985 5.773 5.873 6.907 7.416 7.840 8.430 10.556 10.102 8.554 8.025 9.359 9.716 10.694 11.118 11.213 11.252 11.161 10.251 9.064 8.172 7.975 7.611
+ 6.250 5.094 6.992 7.025 5.686 6.689 8.743 8.590 10.125 9.086 6.054 5.844 5.497 5.765 7.015 7.889 7.992 8.385 8.665 8.508 9.894 9.225 8.820 7.968 9.799 9.942 11.078 11.500 11.620 11.617 11.463 10.453 9.116 8.284 8.586 8.337
+ 4.369 5.562 5.502 5.429 6.218 7.235 7.854 9.234 10.088 8.721 6.491 4.416 5.500 4.707 4.679 5.033 6.167 6.975 6.841 7.337 8.223 7.364 6.533 6.270 6.678 6.470 5.272 5.785 6.202 5.867 6.023 6.979 6.785 4.808 5.431 5.270
+ 4.568 4.638 5.534 3.791 4.196 5.534 7.972 8.147 9.620 9.598 7.450 5.653 4.929 4.259 5.127 4.858 6.009 6.193 6.119 7.072 7.661 7.527 4.903 6.177 6.125 6.078 5.365 4.199 5.776 6.018 7.319 7.341 5.833 5.531 5.628 4.871
+ 4.529 4.981 4.461 5.337 6.266 6.712 7.420 8.266 9.358 9.025 5.757 5.602 4.554 4.316 4.828 4.266 5.453 5.885 6.848 8.195 9.010 8.176 5.633 5.759 5.539 5.228 4.170 4.797 5.315 5.454 6.961 6.906 6.917 5.952 5.305 3.813
+ 7.692 7.681 7.637 8.701 8.885 9.123 9.518 8.451 8.872 8.897 9.599 9.484 9.435 9.075 9.107 9.579 10.078 10.985 11.547 11.702 11.545 10.705 10.060 10.168 10.708 11.706 12.597 12.998 12.345 13.166 14.366 14.356 13.291 12.962 13.591 12.807
+ 8.570 6.668 6.418 8.805 9.701 10.018 10.690 10.023 9.306 10.378 10.295 10.234 10.384 10.518 10.167 10.860 10.961 11.762 12.275 12.279 12.078 11.693 11.171 11.071 11.680 12.486 13.345 13.830 13.457 14.540 15.394 15.433 14.456 14.203 14.463 13.656
+ 5.144 5.720 4.895 4.393 6.614 7.471 6.488 6.056 7.394 7.463 7.573 7.240 7.036 7.178 7.440 7.204 7.387 7.756 8.230 8.338 8.100 8.292 7.639 7.311 7.984 9.001 9.915 10.043 10.548 12.272 12.928 12.488 12.909 12.697 11.952 11.891
+ 6.069 7.927 8.728 8.445 7.716 9.084 8.890 8.691 8.313 8.540 8.817 8.016 7.725 8.084 7.688 7.926 8.194 7.820 7.871 7.700 7.866 7.826 7.234 7.193 7.956 8.887 9.794 10.276 11.306 13.064 14.263 14.364 13.549 13.417 13.268 12.941
+ 10.487 11.605 11.491 12.327 12.523 12.415 11.339 9.981 9.331 10.069 9.659 8.506 8.837 8.621 8.514 9.174 8.691 7.927 8.594 8.686 9.393 10.378 9.564 9.294 9.121 9.999 11.505 11.981 12.314 12.850 13.288 13.879 13.726 13.241 13.937 13.338
+ 12.446 12.596 13.062 13.760 14.714 15.051 13.503 12.215 11.493 11.292 10.311 9.450 9.023 9.370 9.288 9.353 9.403 9.629 10.049 11.125 13.044 14.085 12.566 11.006 10.942 11.563 10.634 12.075 12.467 12.276 14.935 16.220 15.286 14.278 11.377 9.764
+ 12.705 12.847 13.423 14.011 15.159 15.762 15.778 13.982 12.480 12.427 11.872 11.524 10.927 10.604 10.905 10.617 10.927 11.429 11.585 12.907 14.890 15.087 13.077 11.864 12.215 12.941 11.631 12.034 13.031 12.741 14.178 15.324 14.096 13.659 11.800 10.398
+ 12.826 12.920 13.622 13.636 14.226 16.722 16.692 14.892 13.794 13.999 13.497 12.423 11.462 11.754 11.235 11.415 11.736 11.788 12.625 13.608 15.138 14.934 13.468 12.538 13.269 13.019 13.162 13.756 13.333 12.881 14.783 15.682 14.366 12.819 11.797 10.797
+ 12.723 12.710 13.495 13.196 13.924 16.116 16.737 16.993 14.332 13.606 13.488 12.948 12.328 12.477 12.150 12.388 12.880 12.637 14.162 15.337 16.771 15.353 13.744 13.107 13.246 12.468 13.801 14.296 13.117 12.442 14.422 15.814 14.968 14.111 11.031 8.339
+ 12.546 12.518 13.354 12.913 13.570 14.738 17.222 17.213 15.330 15.020 14.465 13.317 12.123 12.710 12.451 12.492 13.357 13.165 14.859 16.408 17.278 15.031 13.595 13.259 12.387 12.714 14.153 14.299 12.609 12.023 14.460 15.908 15.049 14.513 11.850 8.688
+ 12.453 12.355 13.140 12.550 13.589 14.608 17.008 17.100 16.063 15.056 14.328 12.970 12.486 12.769 12.315 12.817 13.183 13.849 15.738 16.736 15.941 14.460 13.542 12.521 11.841 13.185 14.295 13.689 12.239 11.559 14.800 16.126 14.976 14.017 11.230 9.833
+ 12.560 12.625 12.997 12.579 13.664 15.142 16.649 16.996 16.408 15.034 13.834 12.558 12.676 12.739 12.380 13.005 13.127 14.760 15.897 15.611 13.884 12.547 11.863 11.608 11.882 14.276 14.962 13.182 11.880 10.091 13.900 15.882 14.931 13.674 11.213 9.931
+ 12.348 12.622 12.028 11.668 13.155 13.516 14.729 16.243 14.285 13.871 13.764 13.083 11.658 11.165 12.027 11.949 13.990 14.830 14.452 13.688 12.789 11.383 10.953 12.150 12.670 14.844 14.108 12.251 11.062 10.654 12.665 15.197 14.515 12.713 12.713 11.605
+ 10.490 10.508 11.081 11.893 12.237 10.592 13.681 14.749 14.141 14.776 13.498 12.243 12.321 11.021 11.458 11.847 13.346 14.353 14.785 13.102 11.883 10.886 10.641 10.717 11.971 14.223 12.461 11.071 10.622 11.496 13.855 14.152 13.293 11.895 12.463 11.990
+ 10.136 10.940 9.863 8.188 10.338 10.066 10.058 11.296 10.645 12.109 11.437 10.533 9.244 8.880 9.824 10.464 10.633 11.237 12.437 11.719 10.183 10.379 9.851 10.442 11.607 12.154 11.492 12.211 13.698 14.376 15.499 15.155 14.409 16.566 16.663 14.618
+ 10.558 9.932 8.671 9.470 9.550 8.901 9.159 8.828 8.777 10.266 9.619 9.971 9.484 9.979 9.627 10.519 10.128 9.771 10.700 10.428 10.716 9.681 9.317 10.668 11.553 11.896 12.206 12.535 14.812 14.981 16.603 15.929 15.186 18.467 19.114 17.364
+ 9.870 8.821 8.514 7.938 8.835 9.196 8.234 9.047 9.063 9.200 8.866 10.300 9.311 8.535 8.010 9.171 8.381 7.675 9.948 9.789 9.355 7.429 8.877 9.754 10.217 12.550 11.727 12.550 13.730 14.840 15.540 15.826 16.407 18.221 18.111 17.312
+ 7.463 8.209 9.009 7.723 9.819 10.195 9.419 9.318 8.341 8.260 8.998 9.273 8.685 9.253 8.094 8.619 7.999 9.153 10.337 9.329 8.742 9.172 9.653 9.392 9.834 11.936 11.538 12.130 12.905 14.373 15.528 16.470 17.099 18.441 17.849 16.454
+ 7.803 8.132 8.786 8.567 9.342 8.611 7.962 9.574 9.565 9.560 8.672 7.330 7.631 8.166 8.226 7.965 7.470 8.049 9.404 9.579 10.285 9.544 9.724 9.672 10.407 11.530 11.266 11.390 12.639 13.904 14.606 15.472 16.614 17.358 16.754 16.609
+ 6.942 6.199 6.885 6.901 6.971 7.354 8.779 9.260 6.916 6.618 6.545 7.420 8.243 7.657 6.953 8.054 7.839 8.477 7.413 8.512 8.858 8.809 8.808 9.380 9.243 8.853 10.481 11.159 11.893 12.192 13.739 13.546 14.968 15.766 15.696 14.297
+ 3.356 5.162 6.111 7.746 9.528 8.896 9.409 8.990 6.679 7.134 8.189 7.190 7.314 7.125 8.084 6.847 5.766 6.894 7.555 7.616 7.781 7.587 6.012 7.480 7.460 8.991 8.606 9.423 9.906 10.494 11.774 11.598 12.651 12.890 13.518 11.986
+ 5.118 5.138 5.763 9.111 10.205 8.539 6.733 6.591 6.163 9.307 9.368 5.937 5.424 8.820 9.195 6.536 6.514 8.870 7.766 7.130 7.581 7.423 7.354 7.712 8.079 8.781 9.052 10.475 10.230 11.279 12.394 12.781 12.681 11.214 11.147 10.038
+ 3.735 6.243 8.025 9.540 9.760 8.364 7.523 7.914 7.122 9.179 8.705 6.869 7.966 8.036 7.887 8.232 8.179 8.361 7.373 8.418 8.603 8.245 8.605 8.329 10.068 10.063 10.962 11.916 13.891 14.129 13.752 14.925 13.744 12.635 13.027 12.049
+ 5.998 8.389 9.120 8.121 8.747 7.519 8.358 8.524 7.464 8.446 7.340 8.060 8.149 6.900 6.433 8.049 8.277 7.931 7.713 9.390 9.335 9.845 9.922 11.636 12.826 13.772 14.405 13.931 16.056 16.796 16.409 15.862 15.740 15.069 14.456 13.856
+ 8.243 9.434 10.175 10.051 11.243 10.671 10.436 11.041 11.802 11.558 11.303 11.350 11.446 11.035 11.182 11.179 10.625 10.370 10.407 11.341 11.662 12.074 12.159 13.044 14.521 14.883 16.113 15.808 17.466 17.175 17.216 17.206 16.553 16.188 16.370 15.434
+ 10.031 8.419 11.041 11.759 11.918 12.449 12.944 11.987 12.348 12.232 12.599 12.378 12.419 11.835 12.143 12.132 11.384 11.768 11.773 12.280 13.417 13.072 12.984 13.193 14.640 16.540 16.324 16.025 16.936 16.504 17.045 15.928 16.315 15.514 15.292 14.789
+ 12.755 13.319 12.328 13.390 14.383 14.703 13.048 12.844 12.548 12.304 11.288 10.106 11.040 10.750 10.822 10.437 11.237 11.919 12.882 13.553 12.393 11.947 12.128 11.558 14.826 15.137 14.412 13.511 13.112 13.075 14.454 13.715 13.054 13.256 12.645 12.641
+ 13.236 13.363 13.907 14.586 15.653 16.246 14.369 13.263 13.200 13.152 11.742 11.396 11.376 11.035 11.379 11.495 12.138 12.574 14.358 14.909 13.807 12.768 12.852 12.755 13.214 12.308 10.138 9.401 10.784 10.930 13.180 12.776 12.604 11.162 10.211 7.395
+ 13.975 13.231 13.221 14.066 15.316 16.283 14.315 12.565 13.113 12.829 11.405 11.434 10.956 10.821 11.268 10.937 11.606 12.981 14.792 15.305 14.179 13.261 13.452 12.133 10.494 11.300 9.744 10.505 11.369 12.700 14.015 14.248 13.430 10.946 7.813 6.411
+ 13.350 13.227 12.850 13.537 14.969 15.449 12.811 12.650 11.969 10.288 10.812 10.872 9.674 10.593 10.360 11.025 11.521 12.521 14.461 14.683 13.030 12.407 12.126 12.173 12.449 12.818 11.747 10.239 11.386 12.521 12.621 12.822 11.898 9.214 8.196 7.353
+ 11.346 11.602 12.030 11.938 12.964 13.218 11.645 9.826 9.597 8.596 7.824 8.608 8.232 8.264 8.629 9.053 9.644 10.862 13.509 13.612 11.091 10.688 11.278 11.137 10.916 10.480 9.544 8.039 9.108 9.864 10.308 10.303 9.026 7.850 7.272 6.573
+ 11.516 10.990 10.540 9.370 8.916 8.863 7.393 8.012 7.185 5.650 7.733 7.454 5.375 5.974 5.576 5.730 7.719 8.449 10.052 9.677 8.461 7.334 8.307 8.540 9.740 9.153 7.885 6.259 8.123 7.616 9.664 8.081 6.681 6.754 6.969 6.500
+ 11.366 11.244 11.354 10.520 8.803 6.614 5.526 5.910 5.562 5.985 6.158 5.814 4.854 4.691 5.456 6.706 6.193 7.379 8.206 8.897 8.947 7.662 8.624 8.995 9.796 9.146 7.561 7.760 7.450 8.379 8.688 7.385 7.066 7.237 8.060 7.630
+ 11.067 10.398 10.398 10.532 8.248 9.007 7.979 7.557 8.295 7.668 7.393 7.018 6.900 7.276 7.529 7.616 7.780 8.976 10.503 9.511 8.677 8.596 8.560 10.113 10.104 10.162 9.949 9.456 9.210 8.794 8.633 8.013 7.712 7.477 7.258 6.076
+ 13.030 12.430 12.651 12.655 14.110 15.101 14.441 12.199 12.143 12.670 12.167 10.582 10.908 12.041 11.772 10.997 12.484 12.882 14.558 15.444 14.808 13.540 13.285 13.675 13.783 14.119 13.850 13.521 12.850 13.488 13.598 13.639 12.897 12.159 9.759 7.687
+ 13.179 12.503 12.858 12.744 14.109 16.394 15.487 14.952 14.861 13.535 11.626 12.601 11.859 11.843 12.257 12.106 12.989 13.270 15.200 16.530 16.265 14.039 13.518 14.035 14.521 13.548 12.479 11.554 10.895 13.142 13.079 14.063 13.366 12.831 11.691 10.037
+ 13.040 12.264 12.835 12.456 14.233 15.964 16.743 16.109 14.683 13.917 11.809 12.297 12.077 11.804 12.351 12.396 13.040 13.511 14.939 17.048 16.715 14.250 13.807 14.082 14.523 13.703 12.446 10.975 10.037 11.636 12.267 13.946 13.770 13.267 11.274 10.159
+ 13.051 12.366 12.987 12.885 14.404 15.982 17.307 16.724 14.971 14.320 12.792 12.588 12.466 12.058 12.478 12.686 13.264 13.660 14.661 16.482 17.158 15.207 14.385 14.362 14.822 14.193 12.796 11.593 10.700 11.847 12.549 14.083 13.830 13.071 10.628 10.363
+ 13.103 12.970 13.078 12.678 14.619 16.108 17.208 15.962 14.905 14.355 12.774 12.278 12.392 11.874 12.330 12.196 12.944 12.998 14.156 15.860 17.206 15.742 14.810 14.658 15.245 14.698 13.067 11.899 11.960 13.775 13.835 13.590 13.918 13.582 11.505 11.039
+ 13.095 13.068 13.189 12.385 14.767 15.768 16.830 15.338 14.166 13.796 12.490 11.759 11.957 11.389 11.544 11.241 12.343 12.818 13.358 14.701 16.561 16.396 15.138 14.612 14.518 13.632 11.819 12.154 12.786 13.305 14.751 14.481 13.069 12.206 10.295 10.081
+ 13.092 12.995 13.127 11.963 15.066 15.763 16.138 14.716 13.756 13.181 11.829 11.523 11.533 10.824 11.523 11.241 12.229 12.561 13.528 14.230 15.838 15.920 14.805 14.876 14.888 13.576 12.691 11.952 12.128 13.171 14.272 14.089 13.316 13.003 10.876 9.692
+ 13.009 12.701 13.064 11.634 15.357 16.063 15.415 13.977 13.417 12.900 11.524 11.153 11.364 10.663 11.273 11.001 11.946 12.179 12.976 13.689 15.387 16.037 15.415 15.224 14.344 12.853 12.078 11.162 11.795 12.581 13.947 14.332 13.047 12.921 10.305 8.072
+ 12.862 12.490 13.032 12.173 15.491 16.016 14.528 13.567 13.022 12.684 11.453 10.910 11.084 10.721 11.067 10.962 11.841 12.051 13.061 13.769 15.691 16.339 15.946 15.488 13.431 11.712 11.017 10.023 11.578 12.431 13.653 14.181 12.891 13.166 10.579 8.066
+ 12.855 12.811 13.309 13.911 15.759 15.805 13.403 13.092 12.782 12.418 11.206 10.975 10.900 10.677 11.175 11.362 12.042 12.108 14.010 15.003 14.775 15.221 15.473 14.089 12.130 11.269 9.435 9.518 10.085 11.092 13.195 14.447 13.594 13.905 11.689 8.550
+ 12.961 13.206 13.769 14.662 15.799 15.501 12.586 12.422 12.653 12.316 11.406 11.504 11.202 11.151 12.194 13.261 13.131 12.525 12.208 12.025 11.787 12.948 13.751 12.971 11.286 10.874 8.563 8.081 9.045 9.845 11.397 12.814 11.840 11.820 9.737 8.100
+ 12.843 13.023 13.186 14.233 14.895 14.871 12.075 12.048 12.432 11.747 11.331 12.158 12.741 13.270 12.085 10.896 10.711 10.298 10.693 10.877 9.330 10.742 11.951 10.989 9.498 10.079 7.348 7.377 7.248 8.718 9.693 11.609 10.892 11.178 8.749 7.392
+ 12.623 12.359 12.530 14.248 14.376 14.358 11.825 12.412 12.423 11.542 12.029 12.514 12.405 12.133 10.985 9.752 8.224 9.102 9.400 9.821 7.573 9.485 10.926 10.679 9.120 9.419 6.697 6.964 7.649 8.164 9.010 11.267 10.790 10.869 8.778 7.092
+ 12.625 12.102 12.939 14.371 14.380 14.469 11.918 12.590 12.518 12.052 12.132 12.825 12.663 11.130 10.254 9.397 8.717 9.193 9.143 8.904 8.435 9.697 11.266 10.845 8.538 8.555 6.500 6.869 8.084 8.500 9.401 11.235 10.733 10.847 8.509 6.543
+ 12.402 12.082 12.837 14.515 15.023 15.108 12.652 12.946 12.791 12.710 12.565 13.919 13.388 11.430 10.427 9.210 9.299 9.472 9.436 8.826 9.239 10.319 11.992 11.207 8.536 8.399 7.460 7.417 8.820 9.586 10.323 11.611 10.893 11.038 8.251 6.561
+ 12.341 12.510 13.122 14.230 15.377 16.085 14.103 13.462 13.465 13.327 12.701 13.805 14.409 13.465 11.663 10.583 9.825 9.600 9.500 9.381 9.599 10.966 12.461 11.437 9.155 7.856 7.174 7.444 8.982 8.739 11.203 11.441 11.282 10.917 8.294 5.926
+ 13.001 13.117 13.657 13.842 15.147 16.833 15.592 14.036 14.354 13.925 12.520 13.436 14.512 14.094 13.737 11.782 11.055 11.021 11.270 10.810 10.503 11.771 13.488 12.484 9.897 8.757 8.787 9.274 10.238 9.568 11.822 11.762 11.992 11.328 9.105 6.945
+ 13.166 12.936 12.993 12.338 15.055 16.724 15.672 15.909 15.261 14.397 12.624 13.634 14.080 15.055 15.461 13.695 12.310 11.514 11.664 11.119 11.224 11.964 13.451 12.935 11.099 10.319 8.698 9.900 10.299 9.649 11.847 11.536 10.978 10.928 9.577 7.486
+ 12.834 12.549 12.682 12.841 14.559 15.715 16.844 16.307 15.610 15.000 13.468 13.753 14.024 14.754 16.381 14.904 14.358 12.909 12.429 11.948 11.866 12.130 13.693 13.808 11.586 10.949 10.508 10.974 10.669 10.969 12.421 11.441 10.787 10.885 9.890 8.807
+ 12.747 12.485 13.206 12.174 14.000 15.014 17.081 17.697 16.836 15.112 13.433 13.970 13.856 14.032 15.562 16.590 15.817 13.430 12.763 11.894 11.898 12.834 14.574 14.597 12.675 11.545 11.404 11.827 11.149 11.306 12.917 11.361 11.192 11.184 10.250 10.090
+ 12.831 12.497 13.186 12.653 13.859 14.774 16.145 17.554 17.422 15.069 13.431 13.893 13.753 13.733 14.496 16.402 17.263 14.902 13.248 12.216 12.297 13.312 14.994 15.696 14.024 12.415 12.221 12.766 11.338 12.170 12.991 11.401 12.026 11.623 10.169 10.365
+ 12.563 12.553 12.392 12.451 13.843 14.615 15.444 17.676 17.322 15.797 15.011 14.702 14.007 13.993 14.269 15.323 16.643 15.627 14.358 13.486 13.160 13.321 14.196 15.655 15.306 13.498 12.773 12.736 11.202 12.282 12.951 12.018 12.720 11.917 9.589 9.929
+ 12.663 12.690 12.709 12.738 13.871 14.520 15.443 17.528 16.619 15.853 14.826 14.415 13.459 13.786 13.906 15.077 16.036 16.434 14.874 13.694 13.003 12.948 13.212 14.872 15.749 14.744 13.453 13.291 12.469 13.976 14.190 13.359 13.770 12.075 8.883 9.029
+ 12.681 12.525 12.734 12.269 13.644 14.579 15.439 17.410 16.154 14.793 14.301 14.115 13.058 13.399 13.414 14.603 15.902 16.059 14.142 13.267 12.695 12.639 12.832 14.044 15.415 14.570 12.773 12.305 12.151 13.307 13.730 12.992 13.539 12.043 9.431 8.877
+ 12.459 11.954 12.307 11.785 13.572 14.433 16.245 17.340 15.674 14.283 13.164 13.168 12.438 12.709 12.777 14.259 16.272 16.049 13.485 12.485 11.965 11.942 12.286 13.530 15.441 14.447 12.046 11.341 12.111 13.448 13.534 13.150 13.709 11.953 8.615 7.408
+ 12.230 11.766 11.821 12.348 13.977 15.312 15.470 15.752 14.419 12.463 11.664 12.001 11.429 11.990 12.556 14.508 15.512 14.792 12.114 11.567 11.119 11.424 12.018 13.534 15.291 13.905 11.350 10.510 12.328 14.048 13.981 13.302 14.091 11.999 8.236 6.502
+ 11.989 11.717 11.739 12.813 13.854 14.078 13.561 12.482 11.602 11.551 11.354 10.818 10.840 11.021 12.054 13.503 13.780 12.010 11.025 10.329 10.516 10.831 11.034 12.377 13.199 11.764 10.467 9.680 11.355 12.777 12.563 11.782 12.848 10.677 7.532 7.535
+ 11.970 11.904 12.245 12.727 14.010 14.035 13.867 13.184 11.308 11.540 11.998 11.269 11.162 11.144 12.424 13.567 14.245 12.916 12.233 11.480 11.038 10.408 10.620 12.263 13.612 12.198 11.045 10.761 12.189 13.376 13.085 12.283 13.555 11.178 8.334 6.305
+ 12.271 12.324 12.492 12.619 14.217 14.815 15.012 14.703 13.436 11.749 12.455 12.119 11.391 12.046 12.395 13.848 15.009 15.296 12.751 12.086 11.543 11.185 11.531 12.600 14.940 14.123 12.078 11.250 12.989 14.325 13.766 12.912 14.181 11.926 8.704 6.892
+ 12.574 12.000 12.492 12.369 14.272 15.317 16.184 15.085 14.203 13.222 11.708 12.425 11.728 12.062 12.385 13.392 15.412 16.176 13.538 12.802 11.859 11.868 12.172 12.785 15.250 14.974 12.041 11.341 13.408 14.572 14.035 13.780 14.878 12.595 8.959 7.386
+ 12.669 12.000 12.278 12.646 14.085 15.457 16.703 16.096 14.562 13.696 12.041 12.536 11.881 12.077 12.402 13.412 15.323 16.592 14.789 12.995 12.231 12.264 12.626 13.529 15.175 14.657 12.342 11.817 13.341 14.582 13.686 14.375 14.835 12.553 9.480 8.664
+ 12.595 12.197 12.487 13.003 14.298 15.762 16.709 15.846 14.829 14.012 12.512 12.669 11.771 11.911 12.223 13.389 15.242 16.588 15.460 13.609 12.908 12.887 13.664 15.427 14.838 13.410 12.879 12.964 12.369 14.023 12.856 13.698 13.716 11.740 9.791 8.827
+ 12.856 12.554 12.791 13.268 14.668 15.604 16.394 15.139 14.768 13.872 12.480 12.747 12.347 12.368 12.719 13.911 15.667 16.410 15.439 14.009 14.275 14.919 14.567 13.289 12.312 11.303 11.573 11.284 11.298 13.183 12.027 13.124 13.060 11.501 10.156 8.796
+ 12.716 12.695 12.843 13.117 14.806 15.350 16.139 14.626 14.330 13.733 12.480 12.751 12.726 12.632 13.695 14.836 15.876 15.695 15.830 15.330 14.757 12.979 12.166 10.271 9.673 9.821 10.360 10.859 9.810 11.574 10.164 11.754 12.108 11.034 9.643 7.354
+ 12.528 12.381 12.626 13.009 14.871 15.361 15.800 13.950 13.213 13.051 12.209 11.837 12.375 12.354 13.837 14.624 15.525 14.733 14.972 14.661 13.183 10.754 9.965 9.005 8.814 8.543 9.510 9.610 8.306 9.846 8.493 10.883 11.122 10.350 8.731 6.455
+ 12.231 12.010 12.140 12.745 15.020 15.446 15.287 13.417 12.969 12.727 11.987 11.766 12.015 12.605 14.338 14.853 14.341 14.119 15.116 13.431 10.884 9.184 9.449 8.472 8.835 7.775 8.357 8.260 7.247 8.374 6.698 9.889 10.149 8.954 8.005 6.578
+ 12.189 12.056 12.278 13.207 14.994 15.430 15.038 13.568 13.182 12.874 12.096 12.161 12.603 13.940 15.061 14.005 12.849 13.469 14.382 12.810 8.991 8.473 8.653 7.589 7.645 7.496 7.729 8.067 6.906 7.581 6.154 8.069 8.648 7.581 6.692 5.538
+ 11.981 12.512 12.690 13.553 15.154 15.523 15.145 14.052 13.537 13.363 12.987 12.972 13.840 14.745 14.920 13.843 12.647 12.896 13.991 13.503 9.842 9.312 8.663 8.213 7.102 7.525 7.683 7.628 6.329 6.725 6.477 7.243 7.837 7.731 6.695 5.724
+ 11.776 12.523 12.785 13.370 14.168 15.908 15.179 13.620 12.905 12.872 12.772 13.006 13.962 14.667 14.160 13.296 12.280 12.039 12.956 13.327 11.208 9.377 8.532 8.617 6.795 7.244 7.335 7.151 6.985 7.248 6.712 7.817 8.386 8.727 7.662 5.667
+ 10.721 11.803 11.341 11.975 14.788 15.567 14.624 12.897 11.978 12.051 12.114 11.994 13.130 14.632 13.651 12.405 11.751 10.936 12.132 13.385 11.808 9.061 8.922 7.386 6.801 6.724 7.490 8.228 6.952 6.914 6.526 8.313 8.207 8.601 8.355 6.793
+ 11.389 11.755 12.322 13.109 15.072 15.758 15.035 13.877 13.067 12.967 12.912 13.009 14.019 15.249 14.777 13.318 12.551 11.569 12.121 13.620 13.709 10.275 9.509 8.832 8.080 6.554 7.205 7.467 6.325 6.363 6.599 9.412 9.245 10.092 10.036 8.036
+ 11.405 12.411 12.821 12.972 14.281 14.874 15.350 14.088 12.594 12.538 13.048 12.862 13.015 14.507 14.852 13.392 12.653 11.584 11.554 12.210 13.249 12.484 9.278 9.010 7.656 6.949 7.419 7.651 6.805 8.604 8.211 8.827 9.435 10.506 10.372 8.895
+ 10.445 11.776 11.583 12.081 14.246 15.800 14.597 13.205 12.377 12.468 11.963 11.935 12.460 13.523 14.863 14.096 11.994 11.504 10.730 11.250 12.839 12.634 10.044 8.520 7.137 6.828 7.298 8.126 6.790 7.581 7.399 7.708 8.239 10.052 10.248 7.978
+ 11.206 12.077 11.971 12.808 14.833 16.431 15.992 14.122 13.429 13.146 12.508 12.478 12.836 13.373 15.038 15.667 13.843 12.342 11.629 11.852 13.106 13.922 12.166 9.417 8.008 7.578 8.539 8.883 6.995 7.089 7.199 6.882 8.616 10.466 10.010 7.476
+ 12.148 12.719 12.841 13.102 14.468 16.332 16.284 14.355 13.791 13.343 12.395 12.332 12.401 12.682 13.782 14.701 14.746 13.076 12.226 11.976 12.615 13.561 13.875 11.857 9.236 8.469 9.962 10.094 8.172 8.249 8.911 7.936 8.493 9.772 10.126 7.807
+ 12.380 12.500 12.808 13.106 14.888 15.460 16.203 14.232 13.667 12.980 12.229 12.612 12.128 12.518 13.103 14.510 15.536 14.150 13.496 12.262 11.918 12.702 13.253 13.078 11.782 10.622 11.219 11.338 9.427 9.118 10.128 9.473 10.166 10.500 10.268 7.678
+ 12.554 12.061 12.349 12.618 15.017 15.724 16.071 14.419 13.616 12.390 12.089 12.119 11.382 12.373 12.470 14.125 15.172 15.266 13.578 12.776 12.097 12.211 12.840 13.752 13.552 12.234 11.525 11.849 10.953 12.304 13.124 12.091 12.179 12.025 10.470 7.766
+ 12.810 11.936 12.480 12.744 14.818 16.071 16.067 14.141 13.515 13.209 12.832 11.747 11.623 11.973 12.569 13.578 14.863 15.486 14.251 12.642 11.933 11.939 12.431 13.756 14.313 12.751 11.626 12.051 11.727 13.117 14.184 12.687 12.984 13.306 10.993 7.645
+ 13.031 12.848 11.691 13.391 14.256 13.846 14.992 13.762 11.863 13.501 12.330 11.613 11.371 11.464 12.237 12.524 14.613 14.996 14.127 11.366 11.057 11.298 11.770 12.868 14.582 13.426 11.160 11.011 12.097 12.411 13.807 12.827 12.717 13.016 10.544 8.655
+ 11.749 11.426 12.738 13.093 13.379 13.484 12.870 12.042 11.961 11.444 11.779 10.543 10.174 10.256 10.439 11.289 12.447 13.412 12.276 12.950 11.732 9.933 9.091 10.051 12.137 11.848 11.916 10.711 12.164 13.851 15.011 14.498 13.690 13.271 12.469 11.632
+ 10.241 10.020 11.322 11.210 11.546 11.880 10.484 9.224 9.806 8.142 8.850 9.003 8.743 8.745 8.386 9.227 11.116 11.958 11.665 12.106 10.715 10.181 9.914 9.554 11.048 11.085 10.946 11.356 13.576 13.002 14.799 16.807 16.713 15.528 14.933 13.965
+ 10.475 8.804 9.664 11.127 11.632 11.491 8.774 9.454 8.685 8.087 7.482 8.729 7.577 7.364 8.120 8.386 8.786 9.502 11.063 10.687 8.859 9.213 8.559 9.721 11.172 11.594 11.063 12.289 13.050 14.280 15.456 16.918 16.732 16.981 15.562 14.734
+ 9.348 9.638 9.105 10.114 11.585 11.004 9.887 9.630 8.696 8.412 8.404 7.446 7.812 7.978 9.019 8.214 8.211 9.631 10.371 9.951 9.095 8.928 9.154 9.808 10.125 10.902 11.394 12.370 14.095 15.343 15.018 16.139 17.863 17.428 16.359 14.894
+ 11.297 10.564 10.542 10.559 10.799 11.074 9.806 10.289 10.710 10.622 10.272 9.096 8.693 8.455 9.221 9.290 9.741 10.915 11.789 10.283 9.347 9.104 9.528 8.837 10.038 12.144 11.437 13.034 14.444 15.394 15.740 17.029 17.356 16.064 15.441 14.420
+ 11.503 10.835 7.894 10.076 11.627 11.631 10.357 10.364 9.715 8.210 8.735 9.541 9.024 8.288 7.973 8.978 9.806 11.228 11.632 10.438 9.560 9.595 8.087 9.650 10.520 11.516 12.134 14.577 15.267 15.057 16.713 16.407 15.606 14.755 13.796 12.166
+ 12.300 11.170 8.236 9.654 11.089 11.516 11.241 9.106 10.212 8.500 8.236 8.643 7.420 7.461 6.541 7.791 8.900 10.742 10.653 10.562 9.412 8.338 8.937 8.918 10.611 11.158 12.459 14.294 13.367 12.253 12.873 11.736 11.305 11.441 11.378 10.437
+ 12.320 11.266 10.626 10.936 10.265 12.120 11.457 10.726 10.890 10.497 10.154 10.041 8.538 6.957 7.579 7.742 9.007 10.390 9.378 8.777 7.568 8.161 8.932 8.795 8.303 9.937 9.521 8.569 8.071 9.363 8.795 8.747 9.806 9.708 9.182 8.161
+ 12.946 13.224 12.395 11.660 10.492 11.331 10.948 8.580 7.886 9.517 10.446 9.666 6.669 7.268 7.588 8.528 9.332 10.081 10.209 9.658 9.045 9.503 9.539 8.254 7.569 8.182 8.672 8.499 7.627 7.905 8.366 8.022 8.467 9.975 9.678 9.253
+ 13.830 13.738 12.127 12.312 12.335 11.010 10.456 10.415 9.374 10.689 10.160 9.404 8.271 7.750 8.812 10.125 9.881 9.485 9.993 9.534 9.360 9.585 10.639 9.709 8.096 8.075 8.737 8.902 7.034 7.230 7.992 8.402 8.107 10.464 9.811 8.506
+ 14.355 13.896 12.463 11.919 11.484 11.529 11.364 10.172 10.449 10.199 10.118 9.486 7.800 7.317 10.516 10.235 10.721 10.468 10.133 10.068 9.852 9.959 11.750 10.576 9.056 7.394 9.354 10.623 8.032 8.590 8.988 9.342 9.751 10.546 10.416 9.028
+ 14.392 13.956 13.338 12.138 11.955 12.740 11.261 10.615 11.068 9.929 10.080 10.233 8.366 9.004 10.228 11.075 10.416 11.653 11.271 11.772 11.403 12.021 13.076 11.800 10.371 8.595 8.480 10.519 8.718 7.268 8.360 8.925 10.209 9.519 9.508 9.315
+ 14.121 13.519 13.659 11.672 11.966 12.223 9.960 9.986 10.266 9.565 8.819 8.476 8.830 9.757 9.855 10.634 10.086 10.940 10.522 10.514 10.857 11.954 12.980 12.710 10.653 8.836 7.851 9.550 9.589 7.332 10.091 11.355 12.369 11.270 10.291 8.931
+ 13.950 13.137 13.619 11.554 11.930 12.763 10.649 10.025 10.262 9.685 8.864 9.832 9.888 10.019 9.622 9.976 9.668 10.442 9.951 9.793 10.042 11.397 12.707 12.183 10.012 8.396 6.719 8.771 9.117 6.907 9.970 10.967 12.058 11.339 9.999 9.496
+ 13.849 13.180 13.608 12.092 12.577 13.982 13.218 11.810 12.425 12.169 10.087 10.673 11.139 11.339 11.774 11.475 11.768 10.856 10.484 10.260 10.239 11.032 12.616 11.304 10.223 7.908 7.628 7.783 9.356 9.016 9.549 10.347 11.506 10.375 9.853 10.452
+ 13.428 12.911 13.485 11.392 13.938 15.293 14.839 13.576 12.897 12.622 11.172 11.399 11.402 11.858 12.244 13.321 12.673 11.643 11.315 10.836 10.818 11.712 13.154 12.455 10.114 7.434 7.593 7.876 9.268 9.246 10.741 11.400 11.322 10.734 10.733 8.463
+ 13.646 13.527 13.688 12.063 14.433 15.147 14.620 14.090 13.347 12.593 10.987 11.580 11.554 12.101 12.195 13.994 13.683 12.295 11.683 10.921 10.730 11.448 12.876 12.176 10.267 8.125 7.367 7.836 9.096 9.743 12.427 12.804 12.124 11.561 11.359 9.100
+ 13.665 13.608 13.660 12.451 14.813 15.054 14.168 13.971 13.543 12.519 10.670 11.521 11.023 11.941 11.934 14.058 14.009 12.929 12.137 11.098 11.143 12.221 13.689 12.742 11.023 8.917 7.688 6.671 9.088 10.309 12.730 13.490 10.944 10.431 11.293 9.539
+ 13.657 13.469 13.652 12.591 14.999 15.404 13.411 13.757 13.653 12.578 11.141 11.867 10.876 12.261 12.172 14.082 14.293 13.223 12.610 11.793 11.707 12.657 14.162 13.340 11.259 9.053 8.387 8.557 9.791 11.057 12.484 13.371 11.826 11.302 11.440 9.421
+ 13.511 13.015 13.434 12.657 14.926 15.582 13.213 13.436 13.282 12.058 11.200 11.543 10.523 11.931 11.937 13.787 13.729 13.303 11.910 11.354 11.282 12.176 13.947 13.372 10.652 9.076 8.295 8.047 9.015 10.079 11.971 12.885 11.838 11.600 10.863 9.166
+ 13.387 12.668 13.196 13.191 15.067 15.619 12.986 13.234 12.867 12.143 11.106 11.520 10.589 11.709 11.899 13.722 13.986 13.585 11.940 11.557 11.507 12.303 13.955 13.255 10.555 8.524 7.536 7.868 8.476 9.109 11.281 12.211 11.641 11.789 10.249 8.832
+ 13.260 12.710 13.213 13.983 15.126 15.501 13.142 12.941 12.507 11.247 11.049 11.377 10.664 11.654 12.167 13.744 14.393 13.749 12.239 11.810 11.860 12.809 14.201 13.600 10.746 8.309 8.244 8.580 8.244 8.970 10.938 11.954 10.956 10.823 10.133 8.789
+ 12.859 12.703 13.055 14.050 15.273 15.488 13.099 13.011 12.263 11.569 11.627 11.751 11.343 11.877 12.629 14.096 14.666 14.030 12.280 11.592 11.344 12.543 14.332 13.851 10.999 8.723 8.590 9.328 9.363 9.375 12.105 12.351 9.899 9.616 10.296 9.300
+ 13.516 13.682 13.456 13.770 14.746 14.877 12.695 13.022 11.706 11.692 12.026 11.173 11.599 11.368 12.411 13.421 14.113 13.033 12.685 11.286 11.395 12.399 13.653 12.547 10.713 9.479 9.049 7.902 8.459 10.027 11.995 12.097 11.305 10.134 9.404 7.918
+ 14.085 12.886 13.230 13.930 13.644 13.386 13.065 11.873 11.338 12.233 11.056 10.874 10.956 11.210 11.632 13.434 13.424 13.011 11.860 10.687 11.236 11.333 13.382 12.671 10.636 8.865 9.328 9.405 9.204 10.092 11.361 11.689 11.085 9.954 10.303 9.297
+ 13.862 12.642 10.847 12.668 12.923 13.353 13.068 11.065 11.786 11.590 10.726 10.646 10.269 10.966 11.337 12.928 13.009 12.094 10.611 10.226 10.822 11.236 13.157 11.909 9.775 8.135 9.192 8.409 8.663 9.676 11.318 11.152 11.041 9.854 9.272 8.252
+ 10.828 11.129 11.793 12.154 12.907 13.339 12.957 12.259 12.185 10.921 10.218 10.195 9.866 10.489 11.380 12.715 12.810 12.155 11.108 10.734 9.957 11.890 13.262 12.123 9.473 8.752 8.781 8.142 9.081 10.659 12.424 11.886 11.474 9.670 9.277 8.181
+ 11.772 11.209 11.470 12.100 12.166 12.619 12.080 12.068 12.408 11.534 11.319 10.362 9.647 10.259 11.035 11.738 12.747 13.278 12.428 11.543 11.069 11.705 13.288 12.073 10.143 8.525 8.415 8.676 8.709 10.121 11.976 11.341 10.505 8.648 9.067 8.061
+ 12.208 11.690 11.777 12.872 12.917 12.888 13.230 12.837 13.018 12.552 11.298 11.867 10.951 11.670 11.639 12.512 13.129 13.464 13.136 12.177 11.628 12.613 13.553 12.782 11.439 9.369 9.624 9.057 10.645 11.978 13.206 12.423 11.660 10.024 9.155 7.880
+ 11.640 10.439 11.359 12.154 13.102 13.653 13.806 14.223 13.139 12.566 12.809 11.925 11.106 11.657 11.706 12.715 13.583 14.373 14.273 13.094 12.575 13.530 14.606 13.688 11.660 9.088 9.128 9.639 10.569 12.371 13.830 12.697 12.260 10.520 9.336 8.310
+ 12.531 12.707 12.430 11.030 13.363 14.578 15.385 15.301 14.306 13.675 12.063 11.963 11.748 11.477 11.943 12.530 13.672 15.272 15.659 13.596 13.368 13.967 15.447 14.741 12.195 10.804 9.518 9.629 11.278 12.972 14.440 13.053 12.817 10.938 9.783 9.140
+ 12.300 12.253 12.626 10.939 13.105 14.517 15.855 16.348 15.684 14.477 11.889 12.070 12.249 11.596 12.237 12.041 13.131 14.319 15.995 16.030 14.706 14.418 15.548 15.589 13.824 11.725 10.108 9.670 11.570 12.882 13.691 12.711 11.129 9.957 10.944 10.788
+ 13.300 13.428 13.630 12.410 13.440 14.508 15.812 15.987 16.489 15.506 13.271 12.034 12.583 11.805 12.654 12.271 13.207 14.021 15.985 17.152 15.823 15.176 15.763 15.994 15.194 11.915 10.430 10.070 13.239 14.274 14.506 13.377 12.137 10.807 11.777 12.103
+ 13.470 13.468 13.584 11.700 12.923 13.951 14.993 16.214 16.489 14.576 12.226 12.924 12.351 12.157 12.717 12.332 13.151 13.457 14.906 16.313 16.709 15.251 15.126 15.825 15.114 13.281 11.215 11.049 12.268 13.933 14.744 12.908 11.093 10.197 9.452 10.095
+ 13.412 13.204 13.575 11.370 11.476 13.104 14.411 16.301 16.097 13.911 12.554 13.153 12.092 11.858 12.316 11.818 12.513 12.283 13.257 15.459 16.515 15.823 15.237 15.836 15.986 13.853 11.937 11.242 12.201 13.537 14.320 13.380 11.603 9.145 7.697 8.350
+ 13.380 12.914 13.452 11.167 11.888 12.608 14.141 16.271 15.731 13.509 12.977 13.190 11.151 11.642 11.611 11.707 11.742 11.601 12.085 13.945 15.724 15.701 15.170 15.803 15.998 13.936 11.378 10.593 11.933 13.248 14.243 13.692 12.064 10.085 8.254 8.694
+ 13.513 13.048 13.387 11.516 11.783 13.007 14.197 15.948 15.198 13.334 13.186 13.181 11.102 11.170 11.509 11.591 11.352 11.190 11.433 12.486 14.604 15.838 15.285 15.557 15.871 14.041 10.964 10.336 9.683 12.212 13.344 13.213 12.321 10.169 7.664 6.858
+ 13.689 13.440 13.170 11.831 11.508 12.812 13.841 14.850 13.958 12.189 13.505 12.851 11.441 10.787 11.265 11.597 11.463 11.463 10.521 9.864 12.155 14.392 14.904 14.740 14.933 13.150 10.165 9.733 9.671 10.961 11.942 12.351 12.580 10.787 8.943 7.922
+ 13.737 13.136 12.211 11.983 11.657 12.465 13.602 12.861 12.092 12.893 13.127 12.096 11.559 9.737 10.649 10.655 10.939 11.113 10.852 11.019 10.353 10.603 12.990 13.087 13.251 11.807 9.533 8.855 8.989 10.081 11.668 12.537 12.987 11.910 10.273 8.795
+ 13.410 11.773 11.220 11.786 10.869 12.331 12.406 13.200 12.834 10.989 12.418 11.879 11.118 9.827 9.870 10.457 10.356 11.040 11.211 11.018 11.191 11.299 11.960 11.556 10.720 9.515 7.835 7.477 8.248 7.741 9.859 11.358 11.536 11.238 10.651 8.432
+ 11.967 12.621 11.794 10.865 10.390 10.574 11.248 11.884 11.233 8.951 10.757 11.238 10.970 8.464 8.465 9.302 9.161 10.312 10.827 10.056 10.784 11.256 11.404 10.471 9.883 9.197 7.800 6.808 7.116 7.521 8.341 11.001 11.186 10.163 10.485 10.131
+ 8.445 10.769 11.398 11.247 9.419 9.399 9.810 9.774 8.961 9.218 8.615 8.889 8.134 6.642 6.300 7.093 7.561 9.071 8.773 7.790 9.267 10.419 10.214 10.015 10.129 8.707 7.728 6.662 7.493 8.256 7.812 11.182 11.585 10.265 11.153 11.319
+ 9.141 8.697 9.010 10.469 9.182 9.101 8.782 9.907 9.286 7.751 6.805 8.018 6.971 4.842 4.598 5.482 5.698 7.574 7.354 7.312 8.574 9.900 9.140 8.159 9.041 8.742 7.540 7.548 7.342 9.092 8.911 8.502 7.892 6.666 6.588 6.329
+ 6.449 8.217 8.866 10.076 9.152 8.366 8.082 7.857 7.145 6.381 8.029 7.754 7.021 6.274 5.050 4.374 4.201 5.770 6.993 7.307 9.230 9.998 8.508 7.550 9.032 9.306 8.056 7.015 7.561 9.436 8.941 7.771 6.763 5.841 6.181 5.290
+ 6.467 8.876 8.868 8.674 7.752 8.882 7.971 6.263 6.838 6.454 7.183 6.928 5.879 5.635 6.363 5.442 5.018 5.952 5.807 7.407 9.128 9.684 7.354 7.398 9.814 9.661 7.771 6.994 7.388 9.474 8.620 7.619 6.588 5.361 5.634 5.061
+ 7.429 9.364 9.309 9.690 8.738 8.553 7.689 6.986 7.027 6.271 5.508 6.378 6.071 5.902 5.694 5.206 5.139 6.013 6.625 7.872 8.437 9.161 7.895 7.401 8.625 8.411 7.861 6.522 7.303 9.822 9.854 7.712 5.927 5.038 5.224 4.353
+ 7.143 8.323 7.635 10.455 9.878 9.033 8.395 7.043 6.425 5.881 5.619 5.265 4.781 6.145 5.300 4.153 5.385 6.432 6.974 9.109 9.182 8.039 7.038 6.550 8.819 9.243 7.018 6.122 6.639 9.214 8.779 7.358 5.248 4.626 5.085 4.894
+ 7.249 8.330 8.529 10.677 9.975 7.805 7.162 5.521 5.139 6.541 6.757 5.500 4.920 4.252 5.757 5.859 5.064 4.602 6.561 7.984 8.917 7.583 6.619 6.245 9.086 8.882 5.742 5.143 5.820 8.757 8.447 6.659 5.413 4.592 4.468 4.411
+ 7.199 8.365 7.659 9.930 9.965 7.418 5.714 6.032 5.735 5.407 5.380 5.316 4.148 4.317 4.715 5.063 5.187 5.717 6.554 7.144 7.306 7.172 6.018 5.940 6.947 7.264 6.441 5.124 5.117 7.261 7.563 5.609 4.723 4.265 4.178 4.491
+ 6.143 6.922 7.610 9.722 8.940 8.467 6.346 6.043 6.318 5.395 4.629 4.646 4.984 4.779 4.738 4.753 4.589 5.697 6.772 6.726 7.145 6.882 6.086 6.145 7.428 6.703 5.627 5.140 6.480 7.707 7.383 5.329 4.620 3.864 4.139 4.623
+ 6.862 8.287 8.063 8.635 7.955 8.224 6.523 6.701 6.729 5.483 5.821 5.955 5.804 4.849 4.670 5.360 5.607 6.135 8.304 7.774 7.705 7.270 5.356 5.783 7.896 7.326 5.620 5.110 5.827 7.982 6.811 4.702 5.053 4.122 4.597 3.622
+ 6.795 8.816 7.721 6.296 6.871 6.987 6.445 7.387 5.716 5.691 7.143 6.664 5.211 5.734 6.388 5.118 5.117 8.138 8.691 7.212 6.798 7.149 6.624 6.598 7.415 8.368 8.785 7.634 7.896 8.013 6.945 6.305 6.058 5.467 5.027 4.902
+ 7.275 8.654 7.645 7.367 7.264 7.977 7.835 8.185 5.889 6.289 6.086 6.877 4.651 5.736 5.453 5.922 6.155 6.837 8.389 7.614 6.398 6.801 6.396 6.472 6.992 8.135 8.748 7.552 7.490 7.881 6.866 6.105 5.443 5.865 4.967 5.048
+ 7.235 8.342 8.086 9.269 9.059 9.239 8.187 7.475 5.864 6.928 7.146 7.024 5.346 5.679 4.598 6.066 5.571 6.954 7.104 6.893 6.629 6.295 5.197 5.288 6.489 6.689 6.305 5.607 7.753 7.901 6.773 4.986 4.565 5.679 4.967 4.655
+ 7.662 8.352 8.632 10.194 10.036 10.289 8.328 7.394 6.761 7.771 7.419 7.065 4.602 6.424 5.555 6.561 6.611 8.643 7.908 7.513 7.056 5.821 4.876 6.256 6.443 7.495 6.557 5.903 6.988 6.755 6.022 4.208 3.775 5.306 4.487 4.448
+ 6.602 7.694 8.890 10.239 10.412 10.679 7.653 6.754 7.146 7.011 7.012 7.011 4.802 5.645 5.483 5.892 8.521 9.650 8.692 6.907 6.492 5.993 5.517 4.733 4.967 6.084 6.212 6.060 6.342 6.284 5.927 3.608 3.722 4.035 2.984 3.116
+ 6.290 7.193 8.447 9.470 10.860 11.034 7.329 6.070 6.543 5.994 6.255 5.974 6.063 6.061 6.151 7.638 8.553 9.004 7.907 8.204 6.593 7.761 6.721 4.519 5.823 6.648 5.613 5.122 5.581 6.471 6.975 4.121 4.381 5.401 3.752 2.761
+ 5.948 6.257 6.893 7.495 11.069 11.130 7.746 6.999 6.850 7.483 6.953 5.234 6.753 7.519 6.850 8.821 8.650 8.336 7.386 6.899 6.803 6.526 5.551 5.433 5.990 6.446 5.490 4.574 5.728 6.093 6.870 5.546 4.991 5.005 3.727 3.204
+ 6.011 5.454 6.554 7.551 10.750 10.667 7.311 6.823 6.803 7.710 8.055 7.585 7.953 7.921 6.581 7.431 6.902 7.169 6.566 6.423 6.192 6.293 5.847 5.199 5.035 5.202 4.817 4.595 6.227 6.706 6.463 6.236 5.205 5.356 3.472 3.758
+ 6.482 6.968 8.241 8.693 9.365 9.554 6.512 6.250 5.980 6.104 7.781 7.296 7.388 6.994 6.463 6.472 6.373 6.384 5.919 5.510 6.433 6.724 6.312 5.873 5.978 5.896 5.162 5.627 5.654 6.928 7.573 7.833 7.378 5.233 4.366 3.663
+ 7.513 8.040 8.766 8.704 8.979 9.438 7.288 6.179 7.027 8.183 8.162 7.389 6.259 5.370 5.940 6.074 5.408 5.605 6.466 5.420 7.259 8.095 6.738 5.838 5.979 4.976 5.207 5.754 6.176 7.454 6.953 7.046 7.221 6.136 4.504 3.288
+ 7.430 7.954 8.945 8.581 9.302 8.578 7.981 6.324 7.269 7.778 8.140 8.911 7.671 6.307 5.997 5.531 5.679 6.443 5.988 5.462 7.332 7.605 6.392 5.596 5.959 5.502 4.563 5.129 6.128 6.710 6.727 6.740 6.805 6.156 5.238 3.719
+ 7.284 7.594 9.463 8.933 8.314 8.113 8.171 6.544 7.421 7.300 8.191 9.082 6.452 6.681 7.083 6.302 5.583 5.993 5.382 5.229 6.031 7.204 5.857 6.451 6.425 6.063 5.466 6.244 6.243 6.583 7.210 7.845 7.765 6.516 5.870 4.270
+ 6.907 7.412 9.343 8.945 9.037 8.407 7.575 5.158 6.501 6.754 8.019 9.496 8.490 7.051 5.789 5.886 5.489 5.221 4.797 5.312 7.163 8.260 6.466 6.519 6.831 6.505 5.871 5.986 5.986 7.044 7.097 7.559 7.657 6.145 5.870 4.943
+ 6.666 7.191 8.922 8.691 9.504 8.892 8.842 7.006 7.263 7.000 7.017 9.194 9.286 8.253 6.595 5.075 5.484 5.494 5.906 4.952 7.466 8.094 6.891 6.636 7.314 6.753 5.791 6.472 6.732 7.851 7.864 7.541 7.704 6.020 5.808 5.222
+ 7.398 7.256 8.620 8.059 7.375 8.705 9.379 7.967 8.326 8.473 7.228 7.483 9.710 9.810 8.235 6.499 5.717 5.890 5.627 6.020 7.685 7.211 5.936 6.075 6.917 5.613 5.977 5.870 6.943 6.967 7.512 8.078 7.692 6.419 6.231 5.743
+ 7.664 7.712 8.415 8.107 8.909 8.533 8.092 9.386 10.091 8.644 7.454 7.407 8.398 8.745 9.314 7.488 6.703 6.214 6.354 6.691 7.337 7.350 7.014 6.625 7.052 6.873 6.183 7.080 6.984 7.109 7.385 7.679 7.998 6.174 5.607 5.740
+ 8.236 8.369 7.869 8.091 9.331 8.969 9.142 8.504 9.468 8.811 7.293 8.445 8.215 8.635 9.992 8.574 7.230 5.475 6.629 6.644 7.559 7.826 7.320 5.968 7.158 6.299 5.222 6.549 7.180 7.463 8.678 6.537 7.978 7.163 6.387 5.853
+ 7.523 7.194 7.822 7.111 7.358 8.289 9.907 11.155 11.052 9.011 6.327 7.383 7.262 8.528 9.637 8.972 7.478 6.307 6.647 7.324 8.182 8.671 6.875 6.042 7.921 7.466 6.722 6.897 7.536 7.213 8.570 7.986 7.633 6.408 5.495 5.287
+ 5.018 6.806 8.415 7.853 8.231 8.469 8.290 10.149 10.220 7.995 6.123 7.728 7.363 6.325 6.984 8.670 7.142 6.724 6.192 7.587 8.394 8.280 6.241 6.766 7.890 7.128 6.226 5.950 7.037 7.730 8.352 8.123 8.152 6.360 5.638 5.465
+ 6.384 6.529 7.677 6.489 7.192 6.891 7.354 8.940 8.125 8.286 6.741 7.720 6.911 7.038 7.904 7.735 7.367 6.620 6.297 7.893 9.054 8.942 7.368 7.139 7.110 6.432 6.673 6.164 7.019 7.534 9.023 8.196 7.988 7.338 5.963 5.468
+ 6.551 6.467 7.932 7.387 5.746 6.246 6.346 8.742 8.953 7.108 6.017 5.841 5.765 6.475 6.266 7.273 6.540 7.206 6.079 7.052 7.659 7.909 7.560 6.747 6.645 6.330 6.503 7.007 6.677 7.580 8.660 7.540 8.511 7.643 6.595 6.393
+ 7.583 7.162 6.847 7.221 7.058 8.863 8.769 9.019 9.229 7.950 6.826 7.760 7.404 5.583 6.802 8.119 6.413 5.499 6.714 7.295 9.065 9.965 7.498 6.329 8.504 7.194 7.059 8.854 8.096 7.629 9.117 8.534 8.444 7.213 6.386 5.713
+ 7.435 6.905 6.940 6.152 6.804 8.266 8.237 9.012 10.730 8.876 7.361 7.618 7.226 6.059 7.014 8.959 8.378 7.149 7.090 7.122 9.509 10.621 8.447 5.978 8.000 8.294 7.106 7.731 7.582 8.611 8.781 8.538 8.857 7.087 7.231 5.838
+ 7.092 7.148 7.188 6.674 6.579 6.352 8.995 10.350 11.187 9.507 8.121 8.086 7.786 6.901 7.165 9.324 9.136 7.844 7.297 7.200 7.985 8.842 8.532 7.039 8.111 7.928 7.656 8.140 7.841 9.072 8.998 8.763 8.354 7.455 6.653 6.401
+ 6.355 5.857 5.933 5.669 5.128 6.251 8.448 10.367 11.485 9.946 8.082 8.701 8.422 6.997 6.890 8.533 7.906 7.896 7.783 6.821 8.291 8.830 7.775 6.569 7.791 7.975 7.998 8.934 8.214 8.061 8.940 8.489 7.989 7.737 6.502 6.045
+ 5.306 6.332 7.218 5.775 6.275 7.756 8.421 10.109 11.653 10.164 7.629 8.974 8.923 7.673 7.458 8.674 8.146 7.628 8.166 7.313 9.409 9.194 7.739 6.370 6.839 8.662 7.342 8.018 8.738 8.666 7.407 8.600 9.562 7.772 6.787 5.916
+ 5.477 6.710 8.062 7.027 6.635 7.212 7.950 9.772 11.298 9.741 8.521 8.676 8.905 7.857 7.063 6.966 7.829 8.935 9.692 8.689 8.652 9.022 7.185 7.340 8.071 7.910 7.794 7.890 8.607 8.788 8.791 8.837 9.333 8.034 6.948 6.288
+ 6.699 7.271 8.126 6.939 5.636 7.957 7.720 9.178 10.624 9.499 8.602 8.165 6.271 7.096 5.824 6.997 8.703 9.418 9.537 9.417 9.173 8.052 6.428 7.325 8.145 8.146 8.357 8.913 7.972 8.290 8.813 8.532 8.752 7.653 7.054 5.975
+ 7.834 7.869 8.275 7.555 5.708 7.695 7.981 8.681 9.252 8.321 8.570 6.908 7.056 6.004 6.461 5.834 8.554 9.207 8.366 8.966 10.636 9.692 6.895 6.006 8.130 8.226 7.516 8.136 8.423 8.814 8.914 8.460 9.090 7.781 6.833 6.028
+ 7.887 7.943 8.064 7.082 5.534 6.522 7.554 8.175 9.267 8.565 7.723 6.444 6.832 6.666 5.683 5.958 7.369 7.834 9.210 9.939 8.991 8.670 8.744 7.455 7.604 8.030 7.590 8.403 8.460 8.453 9.820 8.885 9.036 7.910 6.832 6.151
+ 7.477 7.963 7.594 7.225 6.671 6.560 9.000 10.595 10.371 8.779 7.838 7.668 7.661 7.067 4.216 5.751 6.903 8.468 9.345 9.436 9.508 7.847 6.974 7.222 7.643 8.393 8.096 7.703 7.314 8.228 9.254 9.134 8.918 7.896 6.964 6.618
+ 6.411 7.828 7.212 5.799 6.795 6.934 8.234 10.186 9.949 7.947 5.968 7.127 7.536 5.769 4.572 6.130 6.440 7.447 7.877 9.382 10.011 8.860 6.991 7.947 6.902 7.973 8.402 7.683 7.242 8.053 9.316 9.027 8.682 7.405 7.715 6.654
+ 6.114 5.916 5.873 4.982 6.081 6.496 6.476 6.878 8.103 7.231 6.741 5.881 6.615 4.251 4.988 5.980 6.406 7.354 7.016 8.823 9.684 9.565 8.050 7.546 7.730 8.000 7.372 8.193 7.983 8.053 9.089 7.662 9.022 7.764 7.076 6.300
+ 4.515 5.657 5.758 6.167 5.722 5.860 7.527 8.785 7.754 6.400 5.462 5.565 5.157 5.606 5.721 6.631 6.988 7.637 7.438 9.417 9.193 9.679 8.194 8.016 8.059 7.086 6.868 7.381 6.929 7.713 8.934 7.914 8.093 7.352 6.473 6.233
+ 5.834 5.500 5.956 5.849 5.660 5.187 7.252 8.909 7.455 4.179 4.705 4.283 4.753 6.308 6.563 6.559 7.144 7.026 7.883 8.971 9.950 9.839 7.314 7.550 7.190 7.064 7.099 7.392 7.507 7.684 8.616 8.960 8.162 7.625 7.138 7.341
+ 4.520 5.369 6.034 4.743 4.535 6.159 7.061 7.920 6.138 5.610 5.367 6.184 4.906 5.432 6.882 7.126 6.877 7.475 7.562 7.450 9.002 8.452 8.159 7.483 6.932 6.449 7.060 8.510 8.609 8.381 8.734 8.092 7.898 8.022 7.966 6.988
+ 3.344 4.474 3.939 3.980 4.713 5.743 7.582 8.974 8.066 5.897 4.957 5.417 4.613 5.570 5.681 6.121 6.521 6.917 7.790 7.732 9.278 8.124 7.293 6.350 7.802 7.257 6.567 8.388 8.965 8.420 8.460 8.572 8.441 7.979 7.422 6.903
+ 5.765 6.192 5.317 5.381 5.551 5.170 5.103 8.116 7.751 5.033 5.039 5.853 4.985 6.476 6.373 5.410 5.889 5.394 6.843 8.546 9.590 8.622 7.004 7.631 8.163 6.745 6.575 7.917 8.638 8.976 8.416 8.645 8.434 8.184 7.705 8.071
+ 4.679 5.783 5.002 4.076 2.892 5.277 6.311 6.321 6.225 4.535 3.825 4.759 4.628 5.862 6.416 5.023 4.251 6.005 6.438 6.566 7.803 7.884 7.842 7.541 7.034 6.822 7.123 8.015 8.272 8.074 8.787 8.304 8.559 7.447 7.546 7.097
+ 5.281 5.638 3.961 3.572 4.056 5.659 6.071 5.289 6.711 5.426 4.315 5.223 4.708 5.006 5.433 5.609 5.348 5.877 6.265 8.709 10.078 9.098 7.480 7.285 8.081 7.656 6.974 7.751 7.799 7.932 8.999 8.412 8.125 7.902 7.716 7.011
+ 5.126 6.292 5.863 4.822 1.822 5.889 7.136 6.264 6.756 6.177 5.740 5.324 3.600 4.852 5.855 5.470 5.019 6.626 7.281 9.100 10.170 9.203 7.414 7.021 7.676 6.248 7.305 7.640 8.343 8.670 9.041 8.112 8.281 7.528 8.236 7.955
+ 2.377 4.791 5.944 5.209 4.221 4.941 5.544 6.400 6.737 4.739 6.323 6.137 5.252 6.029 6.045 5.371 6.181 6.156 6.663 8.192 10.180 9.077 6.704 7.580 6.413 6.821 6.833 7.357 7.890 8.260 8.982 7.849 8.016 7.520 7.056 6.164
+ 4.025 4.771 4.138 3.333 4.316 5.556 6.150 6.534 5.345 5.699 5.900 5.216 6.294 6.397 5.476 5.556 6.049 6.807 6.584 8.502 9.858 8.419 5.864 7.027 7.643 7.320 6.664 7.333 8.054 9.138 7.555 8.474 8.722 7.098 6.987 6.033
+ 4.384 4.481 3.085 3.613 5.310 6.114 6.717 4.545 5.607 5.554 5.211 5.156 5.018 4.653 5.432 6.313 6.389 6.274 6.809 8.924 9.833 7.600 7.277 7.816 8.295 6.677 6.601 7.637 8.564 7.930 7.904 7.805 7.631 7.472 6.910 6.369
+ 4.842 5.094 5.348 5.318 6.372 7.329 7.124 5.565 7.739 7.887 6.104 4.226 5.517 5.871 6.829 5.600 6.453 5.875 7.326 8.579 10.453 8.216 7.350 7.613 6.453 6.057 7.055 7.280 7.630 7.687 8.830 7.409 7.126 7.108 6.893 5.674
+ 7.135 7.274 5.781 6.882 8.798 9.569 9.374 7.265 7.214 6.396 7.316 6.463 6.643 6.957 6.668 5.839 8.413 8.563 8.297 7.635 9.695 8.569 7.369 7.546 6.260 6.918 7.104 7.618 8.257 7.456 8.639 8.251 7.087 6.758 6.963 6.541
+ 6.577 7.635 7.207 6.091 9.559 9.924 10.353 9.474 8.501 7.669 8.015 8.339 7.845 7.195 8.235 8.000 10.376 9.926 7.631 7.021 8.702 7.794 7.495 7.066 6.395 7.527 7.189 8.115 7.737 7.359 9.215 8.607 7.379 7.074 7.758 6.806
+ 5.633 6.658 6.375 6.444 9.529 9.778 9.571 10.517 10.793 9.552 9.065 8.114 7.080 8.260 8.933 8.003 10.234 10.337 9.065 9.273 9.712 8.682 6.520 7.439 6.563 6.343 6.982 7.361 8.352 7.156 8.935 7.898 7.065 7.199 7.024 5.959
+ 5.887 6.774 6.076 7.001 9.843 11.053 10.344 11.000 11.387 9.251 8.671 7.027 6.089 8.081 8.640 9.081 9.991 9.502 8.551 8.432 8.618 8.878 7.869 7.224 7.772 6.953 7.432 7.300 9.200 8.099 8.273 7.470 6.493 6.387 6.818 6.366
+ 6.979 7.955 7.823 6.961 9.293 10.680 10.829 11.367 10.563 9.989 8.365 7.545 7.957 8.579 9.302 9.218 10.044 9.354 8.597 8.402 8.458 7.446 8.204 6.963 7.502 7.874 7.000 7.747 8.838 7.746 7.679 7.315 7.158 6.152 7.129 6.497
+ 7.338 8.041 7.469 6.422 9.003 10.263 10.526 10.799 10.594 9.341 8.375 7.667 8.325 8.235 9.143 9.457 10.267 9.658 8.534 8.890 9.551 9.022 9.019 7.802 7.852 8.153 7.981 8.010 8.540 8.499 8.066 8.072 7.953 7.313 6.898 6.012
+ 5.947 7.098 8.203 7.172 10.527 11.840 11.500 11.191 9.649 9.086 9.291 8.257 7.500 9.478 9.103 8.686 10.785 10.475 8.286 8.572 9.409 8.409 7.763 7.311 8.877 9.035 8.007 7.936 8.267 7.723 7.807 7.140 7.787 7.534 6.865 6.002
+ 4.726 7.475 8.689 8.265 11.360 12.194 11.142 11.429 10.331 8.791 9.286 7.865 6.791 8.725 9.675 9.849 9.646 10.677 9.652 9.636 9.913 8.101 6.771 6.895 8.530 8.318 7.959 8.261 8.367 8.219 8.526 8.094 7.265 6.662 6.820 6.413
+ 7.123 7.827 8.469 7.846 10.761 11.036 10.900 10.803 10.339 9.189 7.303 7.548 7.297 7.457 8.369 9.721 9.700 9.966 9.532 9.263 10.010 8.347 7.618 8.251 8.448 8.903 7.875 8.328 8.790 8.039 8.634 7.430 7.306 6.462 6.678 5.661
+ 7.723 7.896 8.663 8.881 10.756 11.212 10.480 9.624 9.235 8.548 8.158 7.264 6.680 7.618 8.273 9.795 10.784 10.152 9.126 9.008 8.911 9.594 8.494 8.089 8.742 8.553 8.299 7.895 8.170 8.261 8.267 7.594 7.308 6.552 6.143 5.583
+ 8.532 8.756 8.704 9.547 10.666 10.631 10.150 10.593 9.553 7.775 7.090 6.904 5.415 5.412 7.716 8.682 8.361 9.696 9.809 9.574 9.287 9.858 8.902 9.272 9.673 9.804 9.212 8.886 8.591 9.224 8.616 7.768 7.114 6.356 6.210 5.799
+ 8.543 8.445 7.597 7.230 9.801 9.991 9.374 10.616 9.208 7.459 7.115 6.553 6.219 7.969 7.843 8.187 8.343 9.049 9.063 8.660 9.027 8.488 7.790 7.736 8.673 9.566 9.233 9.806 8.885 9.246 8.633 7.601 6.769 6.460 6.132 5.440
+ 8.420 8.223 8.206 9.257 9.935 10.573 10.137 10.224 9.150 7.476 6.798 6.354 5.663 6.395 6.381 7.511 8.397 9.138 7.856 8.841 8.852 8.153 8.337 7.471 7.806 8.610 7.612 7.338 7.173 7.046 7.002 6.837 6.633 6.604 6.544 5.138
+ 8.350 8.120 6.135 6.565 6.984 8.924 8.393 8.006 7.718 7.092 6.685 5.452 5.403 4.924 7.132 8.426 8.794 8.534 7.627 8.027 8.255 7.735 7.257 6.513 7.505 7.707 7.187 7.647 7.011 7.110 8.017 6.918 6.330 5.661 5.715 5.033
+ 7.376 7.324 6.934 7.140 7.645 9.141 9.122 9.734 9.580 7.831 5.785 6.117 6.648 4.778 7.076 7.896 8.468 8.678 7.638 8.753 8.358 7.726 7.286 6.141 7.568 7.045 6.360 6.786 6.764 6.856 7.281 6.865 6.808 6.153 5.641 5.244
+ 5.432 6.562 7.518 7.479 8.261 8.770 8.224 8.321 8.301 5.899 5.886 7.042 5.981 6.001 5.053 8.463 9.603 8.775 8.073 7.267 8.069 6.828 6.358 7.508 7.936 7.293 6.144 5.941 7.003 6.859 7.724 6.792 6.598 5.950 5.314 4.758
+ 6.245 5.425 6.969 7.612 7.140 7.389 7.282 8.809 8.009 5.964 6.449 6.592 5.587 5.841 6.325 7.477 7.917 9.188 8.889 8.808 9.140 7.654 6.653 8.086 8.104 7.328 6.351 7.115 7.774 7.825 6.573 6.534 6.868 8.231 7.621 5.641
+ 4.954 5.454 7.029 8.017 9.277 9.337 7.917 8.394 7.723 6.112 7.008 6.421 5.653 6.397 6.064 5.554 7.038 9.136 9.146 10.092 9.584 8.480 7.093 6.770 7.703 7.379 7.579 7.115 8.010 8.427 7.194 6.608 6.922 8.634 9.095 7.154
+ 5.113 5.256 6.319 8.830 8.779 8.777 8.503 7.541 7.554 6.163 7.419 7.496 6.708 5.757 5.356 7.102 7.687 8.344 8.377 9.030 8.210 6.849 7.098 6.962 9.375 9.101 8.471 8.807 7.590 7.333 6.747 6.803 6.905 7.877 8.318 6.959
+ 6.671 6.533 4.196 8.821 9.806 8.574 7.421 5.943 7.327 5.500 5.311 5.837 5.706 4.436 6.010 6.779 6.982 8.503 8.374 9.002 8.707 8.832 7.384 7.455 8.555 9.349 9.855 10.152 8.605 7.475 7.501 7.393 7.549 7.486 6.680 5.620
+ 7.399 7.547 5.718 9.434 11.209 10.607 7.705 8.833 8.673 6.307 6.096 6.753 6.063 4.970 6.275 6.966 7.673 8.688 8.829 8.453 9.153 9.798 7.909 6.835 8.859 9.284 10.932 11.383 9.842 8.741 8.175 7.483 7.991 8.568 7.140 5.204
+ 7.684 7.716 5.656 6.968 9.507 9.158 8.085 9.298 8.123 6.737 5.931 5.502 5.904 5.865 5.606 5.878 6.076 8.219 9.098 9.282 9.908 10.256 6.948 7.602 9.206 9.539 11.174 11.063 9.643 9.061 7.876 7.952 8.270 8.511 6.828 5.555
+ 8.137 7.738 5.915 8.470 9.582 9.651 9.063 9.921 8.143 5.554 5.599 4.582 4.683 6.286 5.362 6.331 6.333 7.083 7.796 8.482 10.372 9.968 7.404 6.715 9.069 9.501 10.645 10.227 9.080 8.687 8.561 8.317 7.552 7.975 5.934 4.987
+ 7.058 6.954 5.058 8.675 9.240 9.265 9.701 9.804 6.883 5.511 5.365 5.548 5.189 5.887 6.509 6.316 6.382 6.791 8.678 8.622 9.738 9.425 8.474 7.763 8.400 8.792 10.638 10.937 9.464 9.273 8.652 7.998 8.030 8.070 6.863 4.119
+ 5.860 5.511 6.485 9.276 10.111 9.126 9.574 9.602 7.828 6.905 5.615 5.510 5.358 6.541 7.023 6.855 6.824 8.309 8.893 8.365 9.296 9.159 8.665 8.123 8.012 8.700 10.649 10.882 9.841 9.540 8.944 8.707 7.259 7.024 6.545 4.621
+ 3.110 5.665 6.612 9.647 10.359 8.368 10.300 11.016 8.642 8.062 7.301 5.637 6.214 6.751 6.158 6.424 6.638 6.951 8.464 8.747 10.573 9.509 8.380 7.637 8.705 9.152 9.770 9.711 9.167 9.342 9.003 8.133 8.014 7.776 6.685 4.132
+ 5.194 4.429 6.260 7.682 8.667 7.569 9.794 10.187 6.916 7.537 6.081 5.064 5.372 5.854 5.186 5.178 6.914 7.681 7.821 8.904 9.618 7.857 7.828 6.961 8.266 7.677 9.805 8.898 7.215 7.473 8.987 8.322 7.514 6.170 5.721 4.866
+ 5.787 5.844 7.922 9.586 9.012 7.710 8.334 9.216 7.794 6.550 7.247 6.326 5.951 6.413 5.791 6.401 6.422 8.220 8.410 8.922 8.613 7.754 6.975 6.291 7.017 7.251 8.527 8.385 6.548 6.828 8.371 8.525 7.366 6.261 5.151 4.866
+ 5.200 6.040 8.432 9.821 9.097 8.779 9.096 9.219 7.068 6.806 5.944 5.954 6.538 5.987 6.439 6.808 6.068 8.494 8.250 9.221 9.080 7.581 6.328 6.028 7.450 6.977 7.858 7.414 7.268 7.398 7.292 8.051 7.392 6.592 4.475 4.068
+ 4.984 7.175 8.028 9.822 9.856 8.476 7.162 7.788 6.473 6.492 5.230 5.496 5.911 6.837 5.626 5.565 6.511 7.557 8.473 9.355 8.775 7.165 6.245 6.521 7.932 6.748 8.207 7.962 7.378 7.294 7.628 7.518 6.190 5.937 5.447 3.996
+ 4.681 4.834 7.258 7.802 9.079 9.099 7.292 6.851 6.757 5.478 6.060 5.170 5.296 6.600 5.134 6.142 6.264 5.980 6.807 9.029 8.199 6.657 6.205 4.522 6.717 6.252 8.612 7.762 6.647 6.465 6.783 6.824 6.169 4.842 4.467 3.625
+ 6.241 6.426 6.497 7.583 9.198 8.909 8.780 5.925 6.663 6.713 6.433 5.809 4.805 6.296 5.978 5.999 6.895 7.472 8.182 7.668 7.542 6.038 5.514 4.722 6.746 6.647 6.692 6.770 5.838 6.298 5.971 5.659 5.711 5.863 4.588 3.239
+ 3.922 5.986 7.645 7.344 8.539 9.506 8.338 7.041 6.469 6.215 6.486 3.986 4.536 6.696 6.047 5.504 6.252 7.474 8.523 8.502 8.508 7.017 6.085 6.200 6.146 6.411 7.409 7.570 6.415 6.825 7.223 6.409 6.374 6.004 5.230 3.740
+ 4.612 5.886 6.895 8.104 9.097 8.685 7.740 6.574 5.942 6.582 5.488 5.960 5.092 5.730 5.648 5.489 5.410 6.583 7.441 7.986 7.503 6.413 6.141 6.429 6.298 6.853 7.292 6.412 6.477 6.258 6.039 5.958 6.683 6.554 4.569 3.213
+ 5.305 5.257 5.892 7.933 7.682 7.885 7.233 7.199 6.672 6.135 5.833 4.974 5.615 5.001 4.972 5.067 6.402 6.516 7.037 7.867 6.568 6.558 6.930 6.216 5.291 5.333 5.090 5.196 6.095 5.832 5.264 5.876 6.009 5.072 4.470 3.169
+ 5.438 4.701 5.378 8.185 8.032 6.440 6.771 6.483 6.367 6.197 4.712 5.320 5.131 5.171 5.446 4.802 4.002 5.916 7.397 8.154 7.562 5.613 5.943 5.662 4.854 5.218 5.772 5.654 5.336 5.227 4.694 5.281 5.918 6.199 4.118 2.927
+ 4.660 6.799 6.853 6.868 7.472 6.561 6.529 6.751 6.074 6.145 4.261 3.215 4.540 5.395 6.146 6.437 6.507 8.182 8.065 7.969 6.695 5.140 5.360 4.757 4.738 6.306 6.148 6.119 6.783 6.702 5.642 5.918 6.242 5.439 4.042 3.633
+ 4.556 5.406 6.164 6.821 6.662 6.541 7.345 6.602 5.070 4.133 4.337 5.619 5.473 6.434 6.277 5.355 6.256 8.379 8.419 9.135 7.602 5.447 5.024 4.647 6.563 7.233 5.973 5.919 6.568 6.694 5.925 6.001 5.943 5.670 4.590 3.512
+ 2.485 5.156 7.181 8.018 6.880 4.715 6.206 7.722 7.090 5.720 5.770 5.715 5.946 4.562 5.644 5.379 6.723 7.530 6.959 7.266 5.903 5.847 5.266 4.960 5.339 5.723 5.262 5.837 5.859 6.052 6.050 5.976 4.698 4.167 4.333 3.089
+ 4.736 5.597 6.664 7.318 6.596 5.499 6.366 6.947 7.321 7.460 5.939 4.990 5.703 5.258 5.579 5.574 8.196 8.141 5.877 6.514 6.589 5.281 4.339 5.205 5.344 6.632 5.855 6.367 6.029 6.748 5.602 5.261 5.583 3.951 3.510 3.206
+ 5.919 4.709 6.247 7.479 6.479 5.235 6.928 8.653 8.650 7.502 7.252 6.584 5.484 4.320 4.774 5.986 8.868 8.715 6.765 7.147 7.316 6.035 5.673 6.543 6.045 5.994 5.355 5.321 5.980 6.367 5.315 4.650 5.103 3.777 3.538 2.747
+ 6.023 4.726 3.878 7.517 7.475 4.642 6.683 7.326 8.821 8.409 6.343 6.015 4.494 6.431 7.112 7.167 9.979 9.245 6.571 7.418 6.428 6.157 4.994 4.386 6.152 6.380 5.439 5.672 6.237 7.213 6.076 4.814 5.030 3.952 3.620 2.828
+ 6.480 5.053 4.428 6.979 6.512 5.666 7.152 6.148 8.470 9.337 7.007 5.292 4.870 6.359 6.412 6.835 10.450 10.087 8.532 7.869 6.600 5.722 5.921 4.744 7.560 8.530 6.915 6.153 7.702 8.767 8.022 5.507 5.239 5.929 4.105 2.831
+ 7.013 6.239 4.685 5.651 6.680 6.069 8.054 7.993 7.817 8.905 6.300 6.366 5.935 5.233 6.660 7.313 10.897 11.005 8.758 7.829 6.397 6.258 6.046 5.763 7.487 8.764 7.270 6.138 7.915 9.359 8.880 5.855 5.307 6.435 4.346 2.375
+ 7.206 6.836 6.162 6.815 6.889 6.034 9.267 9.767 8.787 9.107 6.306 5.488 5.180 7.192 7.491 7.923 8.549 10.056 8.817 8.221 7.341 6.069 5.878 6.731 8.194 7.693 6.820 6.422 6.803 8.259 8.026 6.555 6.429 6.623 4.095 2.498
+ 7.095 6.422 5.809 7.987 7.194 6.124 8.833 8.931 8.683 8.595 5.388 4.180 5.364 5.962 5.817 5.355 8.709 9.402 8.551 7.679 6.584 5.429 5.616 6.561 7.429 6.484 6.033 5.167 5.892 6.755 6.778 6.235 5.641 4.757 2.734 2.194
+ 6.257 6.217 7.109 9.101 8.397 6.357 7.543 7.901 7.627 7.392 4.716 4.557 4.316 5.654 5.107 6.453 6.694 8.556 7.843 7.697 6.449 5.545 4.237 5.882 5.654 5.844 5.641 4.241 5.062 6.769 6.691 6.458 5.116 3.756 3.363 2.287
+ 3.719 3.308 7.286 8.692 7.761 7.152 7.930 7.584 7.509 8.172 4.876 5.186 4.810 4.924 4.815 6.042 6.461 7.878 6.641 6.215 5.332 6.139 4.495 4.955 4.781 5.505 4.801 4.205 3.596 5.509 5.683 5.299 5.235 3.972 3.638 2.390
+ 2.710 3.932 5.515 6.118 5.604 6.227 6.544 6.583 6.955 7.699 5.367 4.724 4.285 4.094 4.324 5.857 7.055 8.724 6.597 5.389 6.006 5.737 5.053 5.119 4.962 5.304 3.553 3.720 3.226 4.003 5.442 4.907 4.570 4.382 3.384 3.164
+ 5.689 5.066 6.011 6.482 5.286 5.359 7.398 6.729 5.748 7.157 5.696 4.604 4.998 5.548 5.164 4.839 6.751 8.047 6.038 4.903 4.834 4.689 4.931 5.296 6.034 4.663 3.546 3.629 3.649 3.942 4.527 4.411 4.623 4.611 4.343 3.645
+ 6.225 5.462 5.954 7.354 7.052 5.017 6.864 5.807 5.744 6.570 3.911 3.842 4.193 5.677 5.295 5.023 6.401 6.635 6.310 6.040 4.774 4.860 5.954 5.854 5.707 5.995 6.448 6.983 7.442 7.315 7.193 6.383 5.361 5.981 6.050 4.675
+ 4.839 5.712 5.292 7.655 7.433 3.822 6.347 6.093 5.595 6.014 4.292 3.057 4.324 5.566 5.302 4.212 4.724 4.574 5.462 5.010 4.623 4.869 5.020 4.959 5.783 5.237 5.563 5.485 5.975 5.573 5.568 5.302 4.271 4.824 5.364 4.142
+ 4.573 3.840 4.228 7.184 7.114 4.505 5.766 4.732 3.736 4.697 3.893 3.903 3.905 4.997 4.627 4.520 4.302 4.565 5.621 3.665 4.135 5.070 5.734 4.193 6.079 5.456 4.751 5.134 5.004 4.910 5.047 4.839 3.624 4.352 4.638 3.719
+ 5.616 4.657 4.942 5.963 6.416 4.787 6.267 5.902 3.865 4.069 3.984 3.722 3.038 5.062 4.907 4.263 4.852 5.396 5.585 4.987 4.707 5.788 5.270 5.087 6.075 6.142 6.461 5.878 4.995 5.729 5.884 5.235 4.450 4.156 4.399 3.558
+ 6.405 5.441 6.019 7.929 7.204 6.690 6.742 4.399 4.343 4.147 4.673 4.325 3.723 3.597 2.562 5.169 4.769 4.778 5.822 4.891 4.900 6.179 5.688 5.670 6.086 6.518 7.249 5.955 5.826 6.524 7.516 5.827 3.930 4.525 5.053 3.950
+ 5.299 4.328 5.014 7.880 7.369 5.438 5.211 4.142 3.994 3.686 4.507 3.787 3.939 3.991 3.961 5.101 6.291 6.147 5.398 5.583 6.859 6.716 5.675 5.670 6.226 6.608 6.040 5.175 5.161 6.427 7.192 5.828 3.552 4.206 4.560 3.828
+ 2.387 3.680 4.116 7.529 7.373 5.068 5.747 4.981 4.531 5.011 6.116 5.458 3.804 5.127 4.799 4.316 4.244 5.681 5.668 5.743 6.757 7.338 5.662 5.911 6.132 7.155 6.239 5.061 4.629 5.795 6.122 4.471 4.283 4.157 4.696 4.268
+ 3.761 4.878 5.037 6.786 7.126 5.266 4.777 3.744 5.040 5.273 5.846 5.756 5.383 5.323 4.251 4.854 5.960 5.949 5.752 5.671 6.865 7.402 5.955 5.973 6.661 7.361 6.640 6.701 5.127 5.344 6.366 4.855 2.981 3.633 4.533 4.479
+ 5.496 5.383 4.221 7.031 6.546 4.595 4.636 3.768 6.491 6.947 6.141 6.139 5.430 6.489 5.029 4.675 4.899 5.977 6.249 6.729 8.025 8.015 6.699 6.172 7.067 7.279 6.891 6.808 5.768 6.601 6.670 5.867 4.462 3.994 4.220 4.496
+ 4.364 4.460 7.017 8.287 6.850 3.206 4.369 5.346 6.499 6.782 6.011 5.889 4.812 6.116 5.564 5.837 5.311 5.856 6.337 6.677 7.954 8.558 7.970 6.699 6.875 7.261 7.705 7.362 5.869 6.695 6.708 6.318 4.365 3.951 3.996 4.445
+ 5.409 5.217 7.627 8.452 6.590 5.829 5.873 7.793 8.261 7.943 7.858 5.834 4.413 3.841 4.288 6.138 5.572 5.015 6.205 6.881 8.244 8.792 7.886 7.521 7.157 7.784 7.664 7.094 6.285 6.267 7.056 7.080 4.743 4.123 3.946 4.244
+ 5.185 4.172 7.195 7.321 5.242 6.827 7.189 8.790 8.632 8.298 6.870 5.966 5.657 7.025 6.125 6.864 6.418 6.985 6.802 6.847 8.686 9.299 7.699 7.919 6.937 7.530 8.066 7.480 6.761 6.958 7.198 7.124 5.007 4.062 3.674 3.456
+ 4.498 5.027 6.761 5.692 6.308 6.095 6.186 8.046 7.022 6.473 7.052 6.541 5.514 6.143 5.055 5.577 6.084 6.377 6.006 6.048 7.158 7.988 7.768 7.425 7.473 6.535 7.078 6.614 6.211 6.233 7.138 6.040 4.802 2.958 2.970 3.054
+ 3.024 5.197 7.244 7.044 5.417 5.532 6.103 8.402 8.077 7.752 7.521 6.384 5.738 6.129 5.095 4.855 5.251 6.349 6.223 6.688 7.391 7.861 7.928 8.075 7.836 7.818 8.233 7.376 6.919 7.173 7.365 6.171 5.477 4.307 3.869 3.075
+ 5.180 4.608 6.911 6.731 4.864 5.507 6.162 8.445 7.888 8.293 7.953 6.784 5.603 6.551 5.458 4.789 4.401 6.056 6.490 5.752 7.596 8.002 8.221 8.821 8.289 8.117 7.619 7.345 6.396 5.897 7.188 6.667 6.171 4.317 3.654 3.966
+ 6.038 4.630 7.192 7.812 6.047 6.844 6.162 8.853 8.836 8.422 7.438 7.693 7.068 5.453 4.332 3.605 5.212 5.665 4.253 6.368 6.820 7.701 8.403 7.854 7.595 8.046 8.265 7.934 6.535 6.375 7.739 7.352 6.231 4.806 3.602 3.180
+ 6.027 4.509 7.323 7.935 5.802 6.538 5.330 7.964 7.881 8.053 8.252 7.728 7.037 5.488 5.120 3.641 3.249 5.151 4.996 5.117 6.087 6.441 6.156 6.991 6.766 7.294 8.331 7.404 6.446 6.106 7.312 7.293 6.161 5.142 3.436 2.729
+ 5.846 5.450 6.403 6.847 5.247 6.822 6.099 7.927 7.655 6.325 6.772 5.156 5.040 4.791 4.811 3.767 4.494 4.610 5.090 4.526 5.179 6.426 6.029 7.843 7.115 7.574 7.246 6.494 6.092 5.681 6.750 6.769 5.556 4.934 3.955 3.106
+ 4.095 3.169 5.008 6.462 5.073 5.954 5.258 7.037 7.963 7.246 5.761 5.482 5.109 5.524 5.107 3.434 4.525 5.375 5.142 4.955 4.035 5.755 5.850 8.030 7.881 7.465 6.527 6.510 5.652 5.171 5.863 5.909 5.298 5.061 4.410 3.711
+ 5.242 4.516 5.820 6.332 4.557 5.802 5.638 5.732 6.962 6.263 5.915 5.841 5.493 5.864 5.012 4.921 5.097 4.807 4.937 4.563 4.916 6.453 5.695 6.216 6.604 5.873 5.267 6.142 5.134 4.760 5.989 5.841 4.478 4.209 3.811 3.336
+ 5.403 4.216 6.530 6.898 5.394 5.155 5.564 6.313 5.611 6.032 6.614 5.257 4.182 4.206 3.509 5.013 5.183 5.523 6.635 6.469 7.123 6.212 6.112 7.408 7.160 5.514 5.553 5.996 5.007 4.068 5.035 5.596 4.501 3.894 3.495 3.562
+ 6.784 5.593 5.505 5.863 4.152 4.594 5.366 3.893 4.351 5.607 5.893 6.032 6.064 5.599 5.887 5.701 6.461 5.788 8.333 7.864 7.245 7.519 6.841 7.666 7.612 6.638 6.672 6.584 5.841 6.127 6.024 6.126 5.915 5.722 5.412 4.839
+ 5.401 4.236 4.967 4.984 4.787 5.253 5.074 5.316 5.506 5.632 6.164 6.805 5.074 5.800 6.369 5.793 5.737 6.518 8.846 8.438 7.942 6.638 6.795 7.298 7.441 7.802 8.286 7.875 8.118 7.075 8.042 8.490 7.625 7.353 8.173 7.528
+ 3.519 4.409 4.317 5.756 6.267 6.484 4.957 4.493 4.637 5.300 5.440 6.327 5.493 5.773 5.829 6.820 7.668 6.905 8.043 7.664 8.012 7.550 7.751 8.044 9.639 9.543 9.687 9.164 8.622 7.593 9.819 10.004 8.665 7.803 9.095 8.813
+ 3.265 4.822 6.000 6.414 5.898 6.107 5.480 5.774 6.076 5.182 6.704 5.521 4.785 6.456 6.480 5.377 6.571 7.494 7.880 8.145 9.665 9.689 8.697 8.846 10.020 9.664 10.324 9.852 9.840 8.725 9.741 10.537 9.617 9.046 9.011 8.861
+ 4.473 5.410 5.834 5.236 5.460 6.309 6.653 6.858 6.738 6.263 7.430 6.400 6.880 5.966 5.591 5.471 8.642 8.524 8.509 8.095 9.188 8.947 8.667 7.732 8.693 9.199 10.537 11.058 10.287 9.281 10.390 10.634 9.391 9.438 9.757 9.902
+ 6.546 6.774 6.522 5.724 5.518 6.829 7.010 6.606 6.639 5.885 6.109 6.018 6.176 6.324 6.474 7.500 7.770 8.251 9.335 9.846 8.301 10.398 10.264 9.055 9.786 9.704 11.053 10.704 10.085 9.710 9.450 10.843 10.130 10.361 10.147 10.010
+ 5.499 5.660 6.177 6.570 7.227 7.290 6.259 6.838 6.063 5.939 7.535 8.093 7.250 5.803 6.002 7.408 7.548 8.401 10.732 10.625 9.117 9.492 9.391 9.935 9.744 10.338 11.344 9.920 8.767 9.270 10.305 10.686 10.497 9.468 9.728 9.477
+ 6.999 7.277 6.864 5.423 7.547 7.825 7.129 6.553 6.789 7.001 7.753 8.243 8.153 8.224 7.966 7.000 8.725 9.888 10.943 10.608 8.982 9.429 8.544 8.738 8.856 9.145 10.138 9.320 8.537 8.414 10.429 10.596 10.012 8.187 7.378 7.595
+ 9.122 8.530 7.645 7.257 6.781 8.196 6.854 7.436 7.632 7.446 6.989 7.911 8.018 7.771 7.579 7.562 7.924 9.833 9.537 8.855 7.666 8.563 7.588 7.587 7.213 8.301 8.906 7.218 6.280 6.546 8.160 8.951 8.823 6.412 7.130 7.403
+ 12.404 12.395 11.403 11.345 12.612 12.576 12.566 13.151 11.827 10.113 10.284 8.335 8.486 7.318 8.118 7.971 8.821 10.447 10.813 9.617 7.850 8.087 8.302 8.446 8.255 9.546 9.645 8.325 6.635 7.605 9.654 10.424 10.293 8.983 7.517 7.736
+ 13.270 12.958 12.717 12.379 13.408 14.727 15.368 15.699 13.961 12.282 11.631 11.376 9.848 10.633 10.436 11.211 11.794 13.378 12.814 11.092 9.949 9.498 10.109 10.239 9.143 11.253 11.392 9.860 9.029 9.467 12.205 12.651 12.274 11.131 8.829 8.424
+ 12.590 12.675 12.763 12.657 13.656 14.928 16.053 16.862 15.567 13.539 12.483 12.086 11.371 11.686 11.994 12.450 13.563 15.222 14.210 12.437 11.347 10.819 10.879 10.112 9.261 11.176 11.265 10.444 10.333 10.582 13.660 13.911 13.516 12.364 8.647 7.006
+ 12.593 12.329 11.975 12.442 12.955 13.731 15.251 16.395 14.650 14.062 12.480 10.050 8.742 8.300 9.985 11.016 12.597 14.806 13.453 12.023 11.042 10.576 10.169 8.548 7.906 9.456 9.355 9.538 9.900 9.775 11.253 11.545 9.878 9.050 7.487 6.410
+ 12.685 12.081 12.209 12.442 12.631 13.311 15.110 15.124 15.165 12.952 12.005 10.778 9.318 8.947 10.286 10.819 12.552 14.503 12.790 11.612 11.247 11.152 10.947 9.462 9.805 10.439 9.600 8.509 9.691 10.834 11.786 12.060 10.538 8.932 7.304 6.438
+ 12.606 11.700 11.908 11.919 12.190 12.873 14.094 15.435 14.939 13.804 12.138 9.925 9.460 10.319 10.942 11.719 13.480 14.213 12.206 11.319 10.940 10.942 10.891 8.980 8.840 10.013 9.613 8.915 9.669 10.206 11.174 11.472 10.696 10.274 8.059 6.729
+ 12.710 11.658 11.858 11.765 11.888 12.650 14.325 15.548 15.366 14.083 12.255 10.825 10.210 10.861 11.446 12.146 14.071 14.610 12.391 11.493 10.961 10.974 11.288 9.682 8.618 9.596 9.833 9.153 9.857 10.354 11.602 11.788 11.071 10.816 7.687 7.151
+ 12.769 11.970 12.029 11.963 11.976 13.032 14.256 15.964 16.073 14.740 13.413 11.483 11.582 11.403 12.067 13.012 14.738 14.833 12.792 11.931 11.168 11.339 11.772 10.409 9.589 10.074 10.246 9.363 10.298 10.964 12.324 12.426 11.349 10.862 7.896 7.251
+ 12.860 12.381 12.281 12.172 12.384 13.282 14.502 16.264 16.271 15.315 14.109 12.057 12.292 12.030 12.791 13.935 15.309 14.977 13.144 12.327 11.698 11.886 12.081 11.815 11.579 10.569 10.174 9.946 10.139 10.560 12.722 12.894 12.973 12.176 8.230 7.216
+ 12.927 12.444 12.272 12.047 12.495 13.301 14.243 16.190 16.202 15.256 14.476 12.218 12.348 12.126 13.170 14.555 15.928 14.836 13.193 12.256 11.713 11.617 12.153 12.842 12.313 10.905 10.734 11.206 11.006 10.747 12.597 12.939 12.896 12.184 8.673 8.576
+ 12.931 12.382 12.292 11.922 12.624 13.282 14.049 16.179 16.325 15.112 14.647 12.456 12.369 12.451 13.593 14.742 15.616 14.715 12.995 12.207 11.639 11.723 12.816 13.740 12.840 10.524 10.979 11.332 10.408 9.559 12.200 12.722 12.442 11.774 8.839 8.175
+ 12.843 11.953 12.008 11.629 12.456 13.026 13.307 16.243 16.250 14.973 14.389 11.913 12.323 12.348 13.379 14.468 15.503 13.970 12.131 11.652 11.208 11.693 12.571 13.183 12.112 10.160 10.726 10.971 9.957 8.280 12.357 12.679 12.252 11.704 8.585 8.534
+ 12.783 11.699 11.992 11.520 12.169 13.012 13.341 16.065 16.151 14.765 14.179 11.736 12.228 12.322 13.424 14.570 14.867 13.382 11.790 11.452 11.050 11.457 12.397 12.982 11.943 9.917 10.427 11.509 9.610 8.206 12.321 12.647 12.233 11.903 8.397 9.188
+ 12.791 12.002 12.067 11.743 12.129 13.141 13.829 16.130 16.217 14.843 14.210 11.989 12.373 12.526 13.739 15.261 14.800 13.056 11.864 11.445 10.961 11.311 12.333 13.280 12.345 9.920 10.520 11.852 10.037 8.579 11.583 11.955 12.112 11.696 8.414 9.291
+ 12.829 12.333 12.212 11.878 12.349 13.255 14.095 16.102 15.995 14.791 14.215 12.010 12.474 12.632 14.233 15.381 14.382 12.905 12.131 11.529 11.040 11.496 12.454 13.075 12.044 9.790 10.286 11.896 10.439 8.714 11.376 11.909 11.646 11.246 7.650 7.213
+ 13.064 12.568 12.351 11.948 12.393 13.301 14.268 15.984 15.820 14.615 14.115 11.918 12.576 12.844 14.340 14.559 13.960 12.475 11.728 10.971 11.161 11.592 12.274 13.170 12.681 9.806 10.914 11.986 10.245 8.730 11.224 12.197 11.913 11.513 7.984 7.475
+ 13.070 12.514 12.273 11.612 12.189 13.004 14.369 15.675 15.617 14.404 13.969 12.191 13.129 13.611 14.529 14.081 12.552 11.786 11.214 10.971 11.079 11.458 12.334 13.199 12.624 10.370 10.408 11.350 10.469 7.220 10.135 11.529 11.501 11.104 8.607 6.755
+ 13.116 12.062 11.831 11.274 12.018 12.742 14.391 15.241 15.213 14.329 13.652 12.474 13.159 13.886 14.625 12.930 11.605 11.074 10.354 10.412 10.433 10.750 11.370 12.563 12.884 11.330 9.371 10.929 10.381 7.322 9.422 11.135 11.099 10.731 9.623 7.988
+ 12.878 11.833 10.920 11.590 11.072 12.877 14.365 14.810 14.369 14.120 13.132 13.942 13.374 14.272 12.781 11.527 10.603 10.202 10.139 10.625 10.545 10.746 11.101 12.012 12.942 11.592 8.737 10.751 10.283 7.244 8.635 10.990 10.649 10.252 10.100 9.499
+ 12.461 11.987 11.926 10.500 11.039 12.461 13.032 13.925 14.341 13.730 13.955 14.101 14.046 13.141 9.538 6.825 8.432 9.780 9.766 10.391 10.289 10.337 10.470 10.461 11.565 11.240 8.195 10.699 10.297 6.407 6.669 8.986 9.044 9.089 10.583 11.107
+ 11.698 11.835 11.957 10.857 10.322 11.304 11.558 12.072 12.234 12.445 12.553 12.003 11.434 9.360 7.764 6.757 6.724 8.731 9.095 8.517 8.327 8.445 8.506 9.649 10.150 10.771 9.870 8.500 8.680 6.590 7.687 8.913 9.218 9.565 11.087 11.345
+ 10.325 9.321 9.395 9.249 8.618 8.789 8.531 9.761 10.462 10.272 8.037 8.284 9.246 7.863 7.076 8.208 7.516 8.146 8.879 8.635 8.887 8.663 9.253 9.677 10.342 10.760 10.077 7.249 7.896 7.789 7.717 9.250 10.181 9.282 9.947 9.524
+ 9.446 8.907 8.930 7.830 6.202 7.277 7.333 8.218 8.264 8.881 9.019 8.920 8.554 7.798 6.428 7.836 7.686 7.610 8.291 8.362 7.320 6.931 8.159 8.535 8.530 9.262 9.113 7.813 8.743 7.767 6.976 9.249 10.061 9.285 8.314 8.973
+ 10.914 9.498 9.192 7.132 5.324 6.823 7.699 8.650 7.876 8.317 9.049 8.178 8.185 7.282 6.424 7.654 7.227 8.350 8.085 7.749 6.250 6.885 8.236 8.040 7.902 7.948 9.527 8.396 8.621 8.372 8.924 9.741 10.056 9.967 8.420 7.850
+ 10.878 10.063 9.115 6.476 7.626 8.773 9.224 8.092 7.229 5.971 7.127 6.717 6.493 6.906 6.359 6.082 6.953 7.770 7.920 7.830 6.114 7.370 8.650 8.790 7.752 9.075 8.110 8.146 8.644 9.205 9.111 9.533 11.169 10.565 9.183 8.569
+ 11.243 9.075 8.204 8.214 7.190 8.169 8.627 8.134 8.221 6.517 7.067 5.825 6.296 6.979 6.812 5.656 6.259 6.281 7.346 7.580 7.201 8.311 9.466 8.844 9.027 9.140 9.416 8.870 8.652 8.916 8.789 10.190 11.039 11.182 10.083 9.467
+ 11.146 8.317 9.150 8.625 7.301 7.807 5.616 6.728 7.914 6.282 6.785 7.002 6.656 6.583 6.364 6.620 6.736 6.497 7.051 6.718 7.150 9.213 9.975 9.222 9.230 8.859 8.925 8.267 8.862 8.439 8.595 10.500 11.210 10.941 10.712 10.557
+ 9.944 8.905 8.426 7.824 7.529 6.282 7.586 7.806 6.933 7.401 6.749 6.742 6.716 6.045 5.480 6.576 7.166 6.619 7.105 7.304 6.213 7.993 10.260 9.711 8.827 8.919 8.305 8.290 8.393 8.001 8.715 10.449 11.129 9.925 9.584 9.712
+ 10.560 8.969 6.357 6.909 7.463 6.995 6.553 7.272 6.817 5.508 5.265 6.137 5.999 5.458 5.917 5.140 5.734 6.230 6.931 6.478 6.517 7.933 7.892 9.945 9.754 9.675 9.193 8.928 8.223 8.713 9.250 10.142 10.459 9.821 9.717 8.394
+ 10.275 9.561 8.692 8.662 7.478 7.736 7.544 7.506 7.849 6.981 7.492 7.577 5.322 5.472 5.511 6.224 5.909 6.740 6.678 6.100 6.122 8.019 8.940 9.184 9.285 8.922 8.395 8.056 8.998 9.097 9.181 10.132 10.761 9.926 9.658 8.973
+ 9.425 10.220 9.321 7.634 6.843 6.693 8.503 9.468 9.340 8.771 8.885 8.505 7.942 6.591 5.225 8.063 8.030 6.109 6.596 6.579 5.528 7.161 8.713 8.470 8.942 8.666 9.084 7.603 8.493 8.598 9.032 9.133 10.027 9.374 9.605 9.065
+ 9.314 9.333 8.078 7.630 7.012 6.597 9.407 10.249 9.038 8.841 9.467 8.157 7.723 7.634 7.549 8.295 7.759 6.812 6.218 6.393 5.666 7.125 8.461 9.002 8.620 7.360 8.170 7.940 8.074 7.642 8.314 8.673 9.240 9.072 9.383 9.134
+ 8.465 7.341 7.382 6.727 7.250 7.323 9.578 10.596 11.031 10.224 10.030 10.137 8.977 9.111 9.165 10.121 9.443 7.672 7.285 7.147 5.496 6.009 7.736 8.843 8.470 7.582 8.078 7.322 8.177 8.007 8.021 8.458 8.661 8.411 7.901 7.407
+ 9.680 8.772 6.338 7.990 8.004 8.697 10.475 11.764 12.413 10.942 9.901 10.304 8.322 8.518 8.721 11.047 10.670 9.037 8.050 7.718 6.208 7.764 7.718 8.486 7.863 8.177 8.293 7.611 7.882 7.570 7.111 8.770 9.001 7.753 7.252 7.251
+ 7.609 7.754 7.357 7.839 8.018 8.958 11.065 11.507 12.449 11.044 10.967 10.507 9.365 8.429 8.891 10.785 10.865 9.994 7.935 7.317 7.165 7.470 6.786 7.368 8.470 8.933 7.765 7.300 7.204 7.811 7.191 8.431 8.134 7.896 8.067 7.016
+ 8.826 8.709 7.424 7.584 7.224 7.972 11.466 11.628 11.797 11.157 11.113 10.154 9.652 8.906 9.367 8.846 9.409 9.924 8.474 7.503 6.775 6.179 6.333 7.403 8.991 8.667 8.189 7.462 6.929 7.478 7.386 8.311 8.589 7.423 6.767 6.434
+ 7.570 8.599 7.851 7.636 6.975 7.584 11.781 11.978 11.121 10.471 10.580 9.988 9.440 8.642 9.292 9.202 9.391 9.513 7.547 7.860 7.139 6.095 7.495 7.251 9.511 9.626 7.638 7.098 6.915 7.426 7.584 7.526 7.499 6.795 6.884 6.000
+ 8.559 8.879 7.598 7.952 7.701 8.994 11.854 11.956 11.507 10.172 9.597 9.316 9.131 8.807 9.023 9.172 10.666 9.795 7.835 6.733 6.505 7.811 7.392 6.589 9.350 9.520 7.933 7.591 6.054 8.011 8.195 7.883 7.908 6.600 6.623 5.979
+ 7.178 8.419 7.818 8.468 8.886 9.502 11.549 12.378 12.789 11.042 9.850 8.190 7.583 8.487 8.401 10.072 10.227 9.404 8.765 7.125 6.455 7.890 7.674 7.336 9.059 8.767 7.501 6.452 6.248 8.234 8.368 8.502 7.186 5.928 6.082 5.973
+ 7.584 8.049 7.493 7.465 8.677 9.539 10.226 11.803 12.743 10.740 9.770 8.513 7.075 7.708 8.732 9.734 8.822 8.750 8.196 6.828 6.199 6.593 6.542 7.122 8.813 9.185 7.506 7.269 6.292 7.372 7.862 8.346 6.766 5.719 6.768 5.968
+ 6.118 5.656 7.105 7.124 7.774 8.319 10.301 9.993 11.225 10.172 8.624 8.140 6.181 6.658 7.722 9.888 9.756 8.831 7.797 6.642 5.412 5.772 7.548 7.083 8.041 7.565 7.882 7.320 7.031 7.455 7.563 7.276 6.624 6.223 6.393 6.255
+ 6.888 7.301 6.252 5.958 6.522 7.880 8.022 8.324 10.204 9.659 8.939 8.524 7.826 6.753 6.863 9.690 8.386 7.924 6.269 5.998 5.159 6.085 6.791 7.305 7.520 7.314 7.121 6.938 6.436 6.435 6.766 6.637 6.832 6.792 6.459 5.525
+ 7.087 7.813 6.118 4.559 7.654 8.944 9.233 9.015 10.881 9.359 7.933 8.255 7.841 7.450 6.377 9.931 9.789 8.498 6.195 5.577 5.133 6.276 6.605 7.251 7.745 7.504 6.686 6.240 6.797 6.812 6.169 6.755 6.909 6.420 6.339 5.523
+ 8.297 8.514 7.188 6.258 7.012 9.349 10.248 9.169 9.904 10.035 9.453 8.426 7.482 8.076 8.561 9.728 8.422 8.060 7.107 5.202 5.637 7.308 6.946 6.878 6.753 6.568 7.283 6.619 6.645 7.381 6.022 7.066 6.956 6.264 6.888 5.659
+ 8.746 6.988 4.350 5.880 6.604 8.908 9.113 8.678 8.636 9.021 8.664 8.196 6.616 6.911 8.934 9.730 8.185 6.939 6.826 7.347 6.937 6.715 6.733 6.652 7.245 7.072 7.046 6.815 5.763 6.693 6.528 7.158 7.379 7.537 7.202 5.505
+ 7.166 8.059 7.679 7.417 7.674 8.774 8.129 8.459 8.810 8.717 6.793 8.186 7.801 6.894 8.808 9.469 8.231 7.173 6.708 7.080 6.652 6.552 6.723 6.382 7.115 7.723 6.499 7.283 6.174 6.332 6.650 7.376 7.796 7.001 6.795 5.894
+ 8.039 7.937 7.911 8.389 7.836 8.867 9.473 9.954 9.062 8.536 6.964 7.795 7.980 6.961 7.453 9.137 8.680 7.104 6.195 6.560 6.919 7.299 8.060 7.766 7.505 7.365 7.351 7.454 6.929 7.247 7.059 7.942 7.696 7.216 6.281 6.011
+ 8.376 8.154 6.180 8.028 9.395 10.458 9.201 8.867 8.786 7.854 7.531 7.062 7.274 6.661 6.908 9.088 8.579 7.694 6.692 5.939 6.879 7.851 7.732 8.502 8.891 8.057 7.457 7.927 7.685 7.058 8.139 9.449 9.414 8.410 7.009 6.037
+ 7.944 7.693 6.369 6.757 10.553 11.380 8.959 8.263 6.422 5.467 6.649 5.705 5.661 4.896 6.353 8.716 7.930 6.821 7.185 6.976 6.342 7.238 9.048 10.790 10.731 9.552 9.284 9.741 9.229 7.567 9.390 11.375 11.015 9.704 7.755 5.661
+ 7.136 7.596 5.332 4.560 11.293 13.121 11.725 8.758 9.024 7.134 6.241 6.594 6.160 5.688 6.417 8.076 7.274 6.683 7.473 6.195 6.488 6.754 9.565 10.891 11.391 10.336 9.780 10.127 10.098 7.511 9.672 11.139 10.955 10.127 7.816 5.356
+ 8.110 8.531 7.041 5.531 11.893 14.050 12.801 8.004 7.883 6.948 6.906 6.985 7.880 7.390 6.569 7.783 7.658 6.387 7.315 6.257 5.868 8.337 9.699 10.613 11.543 10.684 10.059 10.434 10.246 8.086 10.258 11.575 11.716 10.819 8.061 6.044
+ 7.682 9.281 8.051 6.767 12.049 14.324 12.965 9.669 8.933 8.760 8.243 7.077 6.998 8.065 7.868 8.468 7.692 6.721 7.614 7.006 6.894 9.165 10.117 11.252 12.089 11.185 10.759 10.819 10.492 8.740 10.123 11.755 11.523 9.999 8.086 5.825
+ 8.914 9.819 8.160 6.543 12.573 14.637 13.301 9.967 9.910 7.930 7.824 7.545 8.144 7.817 7.135 9.309 8.823 7.249 8.155 7.039 7.122 10.006 11.121 11.966 12.919 11.521 11.528 11.526 10.960 10.067 11.225 12.059 12.113 11.189 8.341 5.477
+ 7.222 9.476 8.216 5.086 12.696 14.589 12.868 10.962 10.678 8.359 8.525 7.651 7.902 7.789 7.863 8.212 8.571 8.111 8.139 7.517 7.263 9.843 11.161 11.851 12.719 10.819 10.833 11.126 10.953 10.088 11.335 12.516 12.607 11.731 9.092 6.260
+ 7.659 9.269 8.818 7.356 13.080 14.610 12.662 11.211 10.862 9.122 8.789 8.273 8.016 8.207 7.881 8.637 8.422 7.936 8.015 6.896 7.350 9.505 10.978 11.456 12.298 10.333 10.601 10.823 10.285 9.656 10.693 12.688 12.646 11.519 9.582 6.368
--- /dev/null
+ 5.442 5.122 4.669 4.293 4.054 3.863 3.640 3.458 3.513 3.934 4.608 5.221 5.480 5.344 5.050 4.911 5.076 5.464 5.892 6.269 6.658 7.158 7.753 8.294 8.631 8.774 8.891 9.160 9.589 9.998 10.167 10.023 9.687 9.361 9.167 9.097
+ 3.675 4.033 4.542 4.922 4.991 4.750 4.350 3.986 3.809 3.892 4.223 4.701 5.150 5.391 5.348 5.130 4.994 5.176 5.717 6.415 6.979 7.252 7.333 7.487 7.921 8.616 9.354 9.904 10.191 10.300 10.344 10.323 10.141 9.744 9.247 8.896
+ 3.935 4.420 5.042 5.403 5.373 5.151 5.038 5.149 5.348 5.426 5.331 5.201 5.196 5.307 5.374 5.287 5.152 5.233 5.704 6.445 7.115 7.440 7.456 7.474 7.793 8.429 9.127 9.615 9.847 9.997 10.210 10.394 10.280 9.712 8.885 8.273
+ 4.063 4.221 4.519 4.886 5.182 5.271 5.120 4.855 4.684 4.747 5.018 5.347 5.594 5.747 5.891 6.086 6.274 6.328 6.200 6.031 6.088 6.568 7.429 8.397 9.162 9.582 9.749 9.860 10.027 10.188 10.187 9.921 9.436 8.888 8.444 8.204
+ 4.270 4.237 4.276 4.470 4.762 4.987 5.024 4.920 4.836 4.879 4.988 5.008 4.884 4.772 4.922 5.421 6.061 6.475 6.463 6.211 6.176 6.716 7.767 8.864 9.495 9.489 9.118 8.842 8.937 9.310 9.632 9.627 9.269 8.742 8.279 8.023
+ 2.996 3.751 4.778 5.463 5.491 5.032 4.556 4.447 4.718 5.047 5.090 4.786 4.415 4.361 4.792 5.513 6.130 6.374 6.329 6.361 6.827 7.770 8.865 9.638 9.799 9.433 8.918 8.659 8.820 9.264 9.688 9.839 9.655 9.255 8.841 8.588
+ 3.556 3.927 4.456 4.845 4.894 4.622 4.252 4.070 4.237 4.691 5.186 5.466 5.429 5.186 4.970 4.972 5.223 5.615 6.027 6.441 6.950 7.639 8.451 9.155 9.470 9.270 8.719 8.203 8.103 8.540 9.279 9.864 9.911 9.362 8.539 7.943
+ 3.544 4.215 5.071 5.513 5.278 4.594 3.941 3.660 3.727 3.865 3.859 3.757 3.813 4.224 4.931 5.653 6.110 6.242 6.233 6.348 6.726 7.302 7.882 8.286 8.450 8.426 8.322 8.251 8.293 8.469 8.720 8.923 8.955 8.780 8.497 8.285
+ 3.823 4.208 4.737 5.114 5.209 5.114 5.008 4.969 4.902 4.661 4.247 3.876 3.858 4.350 5.211 6.072 6.583 6.655 6.495 6.435 6.686 7.203 7.747 8.087 8.158 8.091 8.093 8.288 8.639 8.981 9.135 9.006 8.628 8.134 7.688 7.427
+ 4.078 3.944 3.829 3.899 4.181 4.528 4.728 4.668 4.401 4.099 3.935 4.011 4.354 4.947 5.720 6.529 7.168 7.465 7.407 7.181 7.068 7.244 7.650 8.038 8.175 8.031 7.796 7.730 7.956 8.372 8.746 8.881 8.742 8.439 8.134 7.951
+ 2.140 2.924 4.055 4.938 5.191 4.842 4.250 3.825 3.784 4.077 4.509 4.919 5.262 5.569 5.850 6.052 6.111 6.037 5.952 6.016 6.317 6.798 7.288 7.619 7.733 7.707 7.688 7.786 8.011 8.280 8.484 8.553 8.493 8.359 8.224 8.143
+ 5.319 4.917 4.379 4.054 4.146 4.586 5.101 5.394 5.324 4.956 4.498 4.176 4.129 4.370 4.799 5.260 5.619 5.819 5.915 6.023 6.236 6.546 6.844 7.008 7.011 6.957 7.006 7.250 7.631 7.982 8.152 8.113 7.961 7.825 7.766 7.761
+ 8.902 8.445 7.686 6.862 6.170 5.681 5.329 5.000 4.650 4.360 4.277 4.469 4.837 5.149 5.207 5.004 4.741 4.673 4.913 5.364 5.823 6.169 6.451 6.811 7.300 7.787 8.049 7.969 7.658 7.382 7.351 7.557 7.800 7.886 7.792 7.668
+ 7.922 7.524 6.768 5.815 4.987 4.612 4.781 5.232 5.512 5.327 4.782 4.286 4.201 4.536 4.956 5.101 4.911 4.660 4.687 5.079 5.606 5.945 5.980 5.882 5.914 6.171 6.498 6.660 6.581 6.404 6.334 6.434 6.573 6.580 6.435 6.283
+ 6.541 6.242 5.688 5.029 4.536 4.456 4.815 5.331 5.588 5.356 4.781 4.281 4.206 4.571 5.063 5.333 5.273 5.059 4.940 5.008 5.161 5.276 5.369 5.578 5.972 6.413 6.647 6.545 6.266 6.146 6.388 6.852 7.153 7.012 6.523 6.094
+ 5.167 4.957 4.762 4.784 4.968 5.029 4.731 4.153 3.666 3.626 4.056 4.618 4.907 4.800 4.530 4.444 4.671 5.020 5.193 5.090 4.923 5.015 5.479 6.098 6.490 6.435 6.049 5.678 5.611 5.879 6.273 6.545 6.583 6.443 6.262 6.146
+ 6.214 6.046 5.701 5.231 4.786 4.545 4.565 4.699 4.688 4.385 3.914 3.618 3.794 4.438 5.209 5.654 5.538 5.009 4.486 4.352 4.702 5.304 5.789 5.887 5.574 5.038 4.547 4.316 4.424 4.804 5.275 5.617 5.671 5.428 5.047 4.768
+ 4.294 4.591 5.002 5.302 5.383 5.291 5.126 4.914 4.574 4.039 3.394 2.896 2.826 3.268 4.017 4.688 4.975 4.848 4.553 4.410 4.564 4.893 5.118 5.025 4.634 4.178 3.933 4.037 4.409 4.821 5.051 5.004 4.732 4.373 4.063 3.890
+ 4.621 4.159 3.626 3.476 3.862 4.511 4.940 4.828 4.239 3.548 3.159 3.258 3.747 4.370 4.876 5.118 5.064 4.777 4.402 4.118 4.053 4.188 4.349 4.322 4.029 3.611 3.332 3.373 3.674 3.985 4.056 3.831 3.462 3.158 3.016 2.987
+ 3.222 3.249 3.488 4.061 4.799 5.271 5.102 4.304 3.328 2.761 2.916 3.631 4.431 4.891 4.898 4.644 4.399 4.296 4.292 4.283 4.219 4.123 4.031 3.939 3.838 3.753 3.748 3.844 3.964 3.961 3.743 3.366 3.007 2.823 2.826 2.891
+ 3.731 4.211 4.857 5.289 5.333 5.109 4.872 4.776 4.769 4.702 4.515 4.318 4.285 4.469 4.723 4.812 4.600 4.171 3.757 3.564 3.632 3.848 4.060 4.187 4.233 4.236 4.206 4.138 4.036 3.932 3.840 3.728 3.533 3.233 2.900 2.676
+ 4.708 5.397 6.136 6.223 5.506 4.508 3.941 4.094 4.633 4.968 4.799 4.346 4.071 4.205 4.546 4.694 4.463 4.049 3.813 3.916 4.176 4.275 4.092 3.811 3.711 3.866 4.063 4.025 3.707 3.351 3.262 3.511 3.886 4.102 4.076 3.967
+ 4.843 5.253 5.859 6.334 6.408 6.006 5.281 4.509 3.917 3.565 3.378 3.277 3.296 3.539 4.030 4.588 4.890 4.709 4.122 3.504 3.254 3.483 3.929 4.179 4.023 3.624 3.355 3.450 3.786 3.994 3.797 3.267 2.757 2.582 2.749 2.973
+ 5.579 5.423 5.397 5.740 6.321 6.652 6.272 5.162 3.820 2.913 2.803 3.340 4.052 4.528 4.663 4.589 4.448 4.258 3.983 3.673 3.495 3.587 3.887 4.152 4.149 3.866 3.514 3.331 3.364 3.463 3.461 3.370 3.378 3.637 4.078 4.423
+ 7.745 7.672 7.551 7.430 7.357 7.341 7.320 7.197 6.918 6.547 6.234 6.100 6.129 6.161 6.032 5.713 5.345 5.113 5.088 5.193 5.326 5.522 5.967 6.820 7.987 9.091 9.692 9.612 9.089 8.586 8.439 8.609 8.769 8.638 8.246 7.902
+ 11.109 11.194 11.279 11.271 11.142 10.913 10.595 10.155 9.582 8.960 8.449 8.157 8.016 7.827 7.466 7.064 6.955 7.380 8.207 8.958 9.178 8.852 8.482 8.693 9.684 11.003 11.880 11.838 11.078 10.279 10.010 10.275 10.582 10.460 9.917 9.417
+ 12.168 12.691 13.374 13.774 13.675 13.177 12.522 11.858 11.168 10.394 9.581 8.879 8.411 8.164 8.066 8.134 8.535 9.411 10.637 11.755 12.244 11.917 11.104 10.427 10.318 10.709 11.151 11.248 10.999 10.734 10.725 10.873 10.788 10.193 9.263 8.556
+ 12.247 12.862 13.797 14.625 15.008 14.818 14.133 13.145 12.083 11.155 10.492 10.097 9.847 9.597 9.350 9.322 9.812 10.926 12.376 13.582 14.042 13.699 12.994 12.526 12.594 13.003 13.307 13.242 12.963 12.859 13.115 13.464 13.383 12.589 11.377 10.469
+ 12.817 13.420 14.363 15.260 15.777 15.751 15.205 14.304 13.303 12.467 11.962 11.755 11.622 11.329 10.876 10.588 10.914 12.040 13.634 14.984 15.483 15.083 14.322 13.874 14.004 14.398 14.523 14.185 13.750 13.783 14.446 15.211 15.231 14.091 12.277 10.911
+ 13.250 13.784 14.695 15.701 16.463 16.692 16.266 15.306 14.151 13.195 12.664 12.487 12.371 12.068 11.631 11.440 11.917 13.144 14.691 15.850 16.128 15.595 14.809 14.342 14.334 14.442 14.248 13.734 13.357 13.620 14.501 15.297 15.100 13.574 11.367 9.756
+ 13.564 13.922 14.665 15.718 16.789 17.432 17.282 16.327 14.958 13.749 13.082 12.914 12.877 12.640 12.235 12.070 12.581 13.818 15.311 16.374 16.596 16.133 15.527 15.229 15.220 15.091 14.517 13.671 13.173 13.553 14.670 15.645 15.450 13.754 11.308 9.532
+ 13.745 13.920 14.455 15.462 16.719 17.676 17.789 16.923 15.482 14.141 13.375 13.162 13.100 12.831 12.404 12.260 12.837 14.146 15.678 16.751 17.002 16.619 16.110 15.826 15.666 15.236 14.334 13.289 12.806 13.374 14.726 15.863 15.709 13.962 11.437 9.608
+ 13.949 13.938 14.254 15.171 16.499 17.588 17.787 16.956 15.572 14.350 13.693 13.466 13.255 12.842 12.442 12.507 13.290 14.583 15.855 16.647 16.857 16.681 16.325 15.785 14.927 13.760 12.615 12.015 12.292 13.275 14.297 14.565 13.650 11.761 9.671 8.313
+ 14.093 13.980 14.168 15.023 16.395 17.608 17.956 17.258 15.970 14.778 14.066 13.720 13.425 13.086 12.968 13.413 14.442 15.660 16.549 16.870 16.778 16.566 16.309 15.799 14.822 13.514 12.389 11.990 12.438 13.290 13.840 13.595 12.564 11.168 9.932 9.231
+ 14.099 14.090 14.391 15.274 16.586 17.751 18.156 17.604 16.424 15.181 14.269 13.751 13.523 13.562 13.971 14.779 15.757 16.486 16.674 16.401 16.042 15.891 15.856 15.530 14.608 13.278 12.187 11.981 12.776 14.009 14.801 14.525 13.159 11.228 9.451 8.414
+ 13.875 14.124 14.702 15.624 16.695 17.539 17.789 17.311 16.284 15.089 14.126 13.673 13.825 14.482 15.360 16.045 16.172 15.661 14.836 14.266 14.358 15.003 15.579 15.383 14.196 12.530 11.322 11.279 12.368 13.835 14.718 14.452 13.141 11.373 9.818 8.940
+ 13.601 14.007 14.793 15.838 16.864 17.492 17.426 16.639 15.443 14.362 13.874 14.161 15.007 15.899 16.284 15.845 14.690 13.321 12.399 12.382 13.242 14.428 15.156 14.863 13.569 11.895 10.695 10.549 11.420 12.694 13.556 13.447 12.322 10.611 8.965 7.975
+ 13.479 13.811 14.549 15.644 16.759 17.365 17.081 15.997 14.681 13.840 13.862 14.588 15.447 15.834 15.442 14.373 13.021 11.872 11.333 11.590 12.510 13.623 14.283 13.996 12.748 11.089 9.849 9.635 10.447 11.697 12.587 12.594 11.714 10.366 9.105 8.366
+ 13.180 13.713 14.664 15.783 16.709 17.070 16.678 15.671 14.512 13.777 13.834 14.601 15.563 16.050 15.632 14.377 12.813 11.626 11.285 11.808 12.798 13.677 13.962 13.454 12.290 10.876 9.746 9.366 9.916 11.139 12.370 12.823 12.010 10.086 7.850 6.361
+ 13.038 13.796 14.977 16.106 16.811 16.934 16.500 15.653 14.636 13.799 13.518 13.968 14.919 15.760 15.831 14.879 13.288 11.868 11.335 11.854 12.972 13.950 14.224 13.655 12.491 11.158 10.097 9.671 10.083 11.218 12.541 13.233 12.634 10.739 8.356 6.711
+ 13.315 14.083 15.219 16.200 16.696 16.676 16.265 15.573 14.674 13.748 13.149 13.247 14.098 15.263 15.991 15.716 14.492 13.000 12.098 12.242 13.198 14.244 14.656 14.127 12.869 11.416 10.339 10.026 10.571 11.726 12.930 13.498 12.954 11.366 9.421 8.096
+ 13.290 14.089 15.272 16.281 16.751 16.654 16.179 15.518 14.746 13.909 13.175 12.847 13.178 14.113 15.212 15.877 15.745 14.957 14.084 13.732 14.102 14.838 15.256 14.814 13.488 11.806 10.541 10.255 10.987 12.250 13.303 13.535 12.755 11.260 9.676 8.673
+ 13.586 14.162 15.097 16.036 16.616 16.628 16.096 15.246 14.357 13.613 13.065 12.710 12.606 12.870 13.556 14.512 15.399 15.889 15.908 15.688 15.567 15.668 15.742 15.343 14.223 12.623 11.214 10.689 11.296 12.651 13.954 14.460 13.877 12.485 10.942 9.952
+ 13.625 14.048 14.825 15.763 16.519 16.739 16.270 15.286 14.196 13.378 12.946 12.753 12.602 12.468 12.534 13.008 13.911 15.024 16.038 16.761 17.170 17.293 17.057 16.303 14.976 13.336 11.945 11.389 11.895 13.137 14.379 14.876 14.288 12.844 11.212 10.151
+ 13.588 13.953 14.667 15.600 16.443 16.809 16.469 15.526 14.382 13.475 12.999 12.830 12.698 12.462 12.246 12.332 12.932 14.015 15.338 16.597 17.566 18.103 18.092 17.433 16.149 14.514 13.060 12.356 12.684 13.815 15.070 15.668 15.159 13.692 11.948 10.784
+ 13.505 13.772 14.378 15.291 16.239 16.774 16.553 15.609 14.360 13.339 12.828 12.708 12.630 12.357 11.981 11.857 12.304 13.357 14.737 16.050 17.017 17.543 17.626 17.243 16.359 15.073 13.734 12.862 12.858 13.693 14.823 15.452 15.002 13.507 11.644 10.372
+ 13.471 13.666 14.170 15.022 16.004 16.677 16.635 15.817 14.577 13.462 12.841 12.675 12.625 12.385 11.969 11.722 12.030 13.002 14.355 15.609 16.411 16.714 16.695 16.514 16.153 15.498 14.572 13.672 13.247 13.546 14.349 15.017 14.906 13.850 12.346 11.262
+ 13.633 13.669 13.983 14.767 15.874 16.798 16.998 16.307 15.077 13.934 13.316 13.191 13.157 12.852 12.307 11.948 12.248 13.320 14.786 16.038 16.651 16.629 16.299 15.970 15.684 15.261 14.570 13.769 13.247 13.306 13.841 14.329 14.183 13.218 11.853 10.868
+ 13.493 13.520 13.784 14.482 15.541 16.560 17.016 16.628 15.573 14.383 13.579 13.304 13.272 13.070 12.580 12.138 12.292 13.305 14.863 16.222 16.736 16.315 15.450 14.774 14.554 14.548 14.341 13.817 13.321 13.317 13.863 14.414 14.198 12.892 11.014 9.642
+ 13.404 13.383 13.568 14.191 15.230 16.320 16.940 16.757 15.871 14.761 13.937 13.581 13.462 13.212 12.730 12.352 12.595 13.672 15.200 16.394 16.635 15.943 14.938 14.315 14.275 14.419 14.209 13.551 12.941 13.002 13.806 14.636 14.484 12.924 10.605 8.896
+ 13.388 13.314 13.448 14.076 15.168 16.307 16.940 16.768 15.950 14.966 14.253 13.903 13.694 13.379 12.999 12.894 13.413 14.542 15.805 16.547 16.401 15.558 14.606 14.082 14.081 14.260 14.204 13.826 13.430 13.385 13.702 13.916 13.427 12.046 10.267 9.016
+ 13.232 13.147 13.301 14.008 15.210 16.422 17.050 16.824 15.975 15.019 14.358 14.022 13.780 13.473 13.241 13.420 14.204 15.365 16.331 16.570 15.984 14.979 14.153 13.848 13.937 14.003 13.738 13.224 12.844 12.910 13.315 13.542 13.042 11.699 10.021 8.859
+ 13.010 12.931 13.129 13.929 15.226 16.455 16.991 16.619 15.668 14.709 14.095 13.778 13.515 13.239 13.192 13.690 14.728 15.838 16.372 15.990 14.941 13.879 13.353 13.412 13.620 13.478 12.864 12.141 11.851 12.246 13.054 13.640 13.450 12.420 11.043 10.078
+ 12.475 12.474 12.792 13.690 14.988 16.095 16.440 15.915 14.929 14.034 13.488 13.173 12.894 12.721 12.975 13.841 15.014 15.764 15.479 14.210 12.726 11.974 12.357 13.428 14.251 14.124 13.086 11.828 11.141 11.352 12.174 12.991 13.315 13.058 12.507 12.086
+ 12.238 12.448 12.937 13.730 14.678 15.472 15.788 15.477 14.659 13.653 12.816 12.402 12.502 13.056 13.876 14.654 15.032 14.732 13.742 12.401 11.290 10.933 11.487 12.633 13.755 14.313 14.155 13.567 13.034 12.899 13.149 13.465 13.488 13.091 12.472 12.015
+ 13.086 13.366 13.848 14.454 15.150 15.859 16.351 16.291 15.493 14.190 13.016 12.625 13.206 14.318 15.204 15.343 14.757 13.846 12.956 12.115 11.211 10.359 10.016 10.634 12.146 13.833 14.797 14.683 13.986 13.594 13.939 14.537 14.385 12.919 10.670 8.981
+ 13.475 13.561 13.820 14.382 15.296 16.378 17.179 17.199 16.273 14.826 13.689 13.546 14.394 15.513 16.001 15.454 14.213 12.978 12.174 11.673 11.112 10.458 10.177 10.802 12.283 13.833 14.527 14.139 13.426 13.453 14.530 15.738 15.600 13.409 10.060 7.563
+ 13.385 13.341 13.480 14.083 15.226 16.586 17.530 17.485 16.410 14.941 14.025 14.222 15.227 16.069 15.863 14.534 12.851 11.743 11.497 11.585 11.277 10.451 9.797 10.159 11.636 13.346 14.160 13.775 13.071 13.315 14.867 16.601 16.719 14.343 10.516 7.623
+ 13.099 13.111 13.368 14.125 15.366 16.681 17.437 17.211 16.161 15.015 14.582 15.106 16.001 16.249 15.217 13.217 11.310 10.453 10.720 11.282 11.190 10.271 9.294 9.255 10.408 11.985 12.894 12.767 12.346 12.757 14.310 15.963 16.059 13.809 10.209 7.494
+ 12.990 13.028 13.359 14.207 15.459 16.616 17.098 16.693 15.766 15.024 14.979 15.512 15.925 15.474 13.982 12.027 10.520 10.003 10.258 10.541 10.270 9.541 9.026 9.330 10.401 11.549 12.089 12.020 12.074 13.011 14.760 16.219 16.019 13.700 10.306 7.828
+ 12.752 12.973 13.500 14.370 15.432 16.336 16.713 16.445 15.796 15.256 15.169 15.413 15.433 14.668 13.050 11.150 9.793 9.415 9.717 9.940 9.567 8.836 8.558 9.368 11.053 12.620 13.109 12.462 11.636 11.778 13.121 14.619 14.721 12.719 9.515 7.104
+ 12.376 12.814 13.590 14.517 15.355 15.880 15.988 15.754 15.407 15.172 15.077 14.875 14.197 12.872 11.158 9.661 8.917 8.962 9.259 9.130 8.369 7.505 7.431 8.621 10.619 12.286 12.685 11.884 10.946 11.035 12.358 13.858 14.016 12.144 9.113 6.826
+ 11.944 12.636 13.688 14.647 15.197 15.302 15.149 14.981 14.934 14.958 14.845 14.327 13.234 11.649 9.959 8.698 8.215 8.392 8.668 8.447 7.626 6.780 6.768 8.008 10.014 11.665 12.066 11.314 10.475 10.686 12.115 13.672 13.821 11.890 8.781 6.442
+ 11.571 12.551 13.927 14.962 15.271 15.011 14.646 14.542 14.708 14.861 14.662 13.917 12.645 11.047 9.462 8.285 7.791 7.924 8.246 8.207 7.601 6.835 6.689 7.665 9.464 11.097 11.650 11.089 10.347 10.544 11.931 13.524 13.827 12.120 9.222 7.007
+ 11.313 12.491 14.070 15.124 15.273 14.864 14.543 14.642 14.946 14.968 14.399 13.309 11.981 10.638 9.379 8.315 7.647 7.514 7.749 7.899 7.597 6.992 6.748 7.487 9.136 10.828 11.571 11.152 10.405 10.510 11.858 13.532 13.978 12.364 9.466 7.213
+ 11.035 12.282 13.926 14.977 15.088 14.715 14.572 14.921 15.358 15.237 14.279 12.790 11.335 10.248 9.471 8.794 8.167 7.733 7.570 7.507 7.291 6.951 6.918 7.672 9.196 10.806 11.647 11.468 10.917 10.998 12.092 13.464 13.791 12.351 9.803 7.827
+ 11.293 12.281 13.661 14.705 15.090 15.044 15.027 15.267 15.552 15.446 14.667 13.314 11.764 10.407 9.453 8.923 8.727 8.706 8.639 8.327 7.777 7.312 7.431 8.417 9.998 11.437 12.059 11.823 11.398 11.604 12.632 13.762 13.893 12.506 10.238 8.520
+ 11.897 12.340 13.140 14.122 15.061 15.754 16.116 16.203 16.135 15.964 15.603 14.890 13.759 12.366 11.053 10.137 9.695 9.514 9.277 8.851 8.432 8.414 9.062 10.251 11.499 12.299 12.505 12.453 12.700 13.541 14.699 15.441 15.089 13.566 11.561 10.157
+ 12.282 12.208 12.415 13.240 14.596 15.959 16.760 16.844 16.567 16.428 16.582 16.662 16.110 14.706 12.843 11.273 10.543 10.591 10.848 10.756 10.237 9.738 9.820 10.662 11.897 12.921 13.388 13.468 13.656 14.287 15.181 15.705 15.252 13.752 11.841 10.516
+ 12.522 12.204 12.083 12.705 14.109 15.733 16.832 17.061 16.705 16.363 16.379 16.536 16.269 15.212 13.570 11.999 11.089 10.898 10.961 10.735 10.104 9.491 9.495 10.363 11.755 13.010 13.675 13.843 14.016 14.602 15.471 15.973 15.431 13.736 11.577 10.077
+ 12.615 12.261 12.012 12.402 13.582 15.164 16.491 17.107 17.053 16.747 16.578 16.558 16.331 15.529 14.148 12.616 11.489 11.015 10.962 10.856 10.423 9.859 9.671 10.231 11.432 12.751 13.679 14.132 14.469 15.075 15.886 16.302 15.636 13.753 11.374 9.719
+ 12.690 12.375 12.106 12.348 13.322 14.811 16.271 17.170 17.338 17.034 16.704 16.581 16.491 16.025 14.939 13.438 12.073 11.310 11.160 11.191 10.945 10.379 9.932 10.128 11.089 12.403 13.485 14.104 14.542 15.228 16.154 16.675 15.970 13.821 11.041 9.084
+ 12.866 12.587 12.313 12.446 13.239 14.601 16.088 17.153 17.495 17.255 16.874 16.709 16.719 16.496 15.657 14.234 12.718 11.689 11.343 11.362 11.251 10.822 10.393 10.477 11.275 12.458 13.458 13.997 14.321 14.876 15.719 16.260 15.674 13.693 11.060 9.188
+ 12.820 12.682 12.524 12.584 13.130 14.260 15.723 16.982 17.548 17.345 16.784 16.416 16.443 16.530 16.105 14.911 13.293 11.949 11.359 11.409 11.562 11.400 11.019 10.910 11.452 12.527 13.632 14.358 14.746 15.137 15.679 15.998 15.457 13.804 11.617 10.057
+ 12.923 12.759 12.558 12.575 13.099 14.233 15.705 16.935 17.399 17.043 16.358 15.992 16.192 16.565 16.405 15.323 13.630 12.111 11.389 11.436 11.681 11.576 11.103 10.755 11.036 11.974 13.108 13.915 14.249 14.347 14.443 14.409 13.849 12.561 10.926 9.768
+ 12.956 12.810 12.607 12.569 12.989 14.013 15.410 16.598 17.015 16.578 15.803 15.416 15.732 16.346 16.455 15.553 13.899 12.336 11.596 11.725 12.116 12.100 11.557 10.979 10.982 11.736 12.832 13.676 13.975 13.877 13.666 13.386 12.811 11.779 10.529 9.653
+ 12.805 12.624 12.355 12.239 12.607 13.629 15.037 16.171 16.409 15.708 14.718 14.297 14.775 15.617 15.851 14.910 13.156 11.601 11.058 11.473 12.043 11.989 11.259 10.529 10.540 11.405 12.545 13.249 13.299 13.043 12.906 12.873 12.506 11.463 10.009 8.935
+ 12.627 12.574 12.436 12.323 12.564 13.439 14.787 15.932 16.143 15.296 14.097 13.563 14.135 15.243 15.762 14.996 13.300 11.761 11.224 11.580 11.974 11.712 10.967 10.596 11.241 12.615 13.701 13.683 12.715 11.759 11.644 12.253 12.652 12.032 10.571 9.340
+ 12.521 12.599 12.607 12.532 12.672 13.391 14.643 15.773 15.956 14.937 13.394 12.477 12.859 14.138 15.171 15.053 13.858 12.490 11.808 11.891 12.125 11.966 11.564 11.592 12.451 13.702 14.350 13.781 12.405 11.344 11.381 12.180 12.565 11.641 9.725 8.160
+ 12.531 12.528 12.486 12.474 12.728 13.455 14.519 15.364 15.364 14.353 12.855 11.748 11.605 12.282 13.120 13.549 13.528 13.427 13.519 13.652 13.447 12.803 12.156 12.123 12.857 13.756 13.915 12.960 11.470 10.522 10.715 11.568 11.896 10.899 8.960 7.406
+ 12.422 12.467 12.475 12.455 12.606 13.137 13.956 14.575 14.431 13.383 11.915 10.792 10.469 10.788 11.254 11.589 11.987 12.780 13.884 14.646 14.372 13.070 11.634 11.170 11.998 13.273 13.677 12.606 10.773 9.597 9.893 11.055 11.552 10.335 7.883 5.905
+ 12.567 12.602 12.553 12.394 12.326 12.602 13.193 13.661 13.468 12.467 11.089 9.998 9.522 9.435 9.331 9.195 9.533 10.824 12.811 14.407 14.487 12.927 10.895 9.989 10.891 12.737 13.840 13.156 11.198 9.534 9.337 10.314 11.018 10.261 8.286 6.599
+ 12.285 12.506 12.656 12.480 12.062 11.770 11.874 12.233 12.364 11.878 10.841 9.728 9.014 8.808 8.883 9.033 9.353 10.107 11.309 12.478 12.892 12.193 10.775 9.560 9.296 9.979 10.908 11.315 10.992 10.379 10.069 10.245 10.575 10.617 10.291 9.939
+ 12.223 12.535 12.811 12.698 12.189 11.626 11.358 11.384 11.345 10.874 9.975 9.053 8.557 8.578 8.791 8.808 8.599 8.558 9.124 10.286 11.440 11.775 10.897 9.180 7.548 6.861 7.370 8.632 9.882 10.544 10.512 10.071 9.610 9.361 9.323 9.365
+ 11.881 12.285 12.661 12.541 11.851 10.976 10.409 10.308 10.371 10.135 9.410 8.457 7.756 7.595 7.857 8.192 8.371 8.491 8.826 9.478 10.173 10.399 9.795 8.466 6.963 5.953 5.836 6.562 7.725 8.815 9.443 9.440 8.862 7.945 7.031 6.465
+ 11.507 11.785 12.066 12.015 11.502 10.696 9.930 9.442 9.204 8.961 8.444 7.585 6.581 5.778 5.456 5.679 6.274 6.943 7.417 7.571 7.441 7.169 6.891 6.667 6.470 6.250 6.031 5.937 6.122 6.629 7.296 7.798 7.845 7.386 6.685 6.172
+ 10.955 11.116 11.228 11.033 10.435 9.606 8.891 8.568 8.633 8.770 8.565 7.815 6.713 5.746 5.370 5.681 6.346 6.839 6.822 6.371 5.889 5.770 6.098 6.588 6.816 6.539 5.869 5.187 4.890 5.162 5.914 6.893 7.839 8.589 9.083 9.323
+ 10.806 10.780 10.606 10.173 9.508 8.810 8.323 8.185 8.338 8.585 8.713 8.600 8.252 7.775 7.333 7.096 7.173 7.541 8.022 8.363 8.391 8.148 7.870 7.812 8.040 8.370 8.520 8.359 8.042 7.910 8.231 8.998 9.942 10.741 11.229 11.430
+ 11.171 10.961 10.614 10.241 9.933 9.725 9.598 9.515 9.463 9.456 9.488 9.493 9.365 9.063 8.694 8.501 8.699 9.285 9.981 10.403 10.348 9.972 9.681 9.806 10.311 10.807 10.874 10.435 9.846 9.616 9.973 10.660 11.141 11.053 10.515 10.026
+ 11.259 11.154 11.025 10.941 10.875 10.720 10.395 9.939 9.484 9.129 8.840 8.490 8.030 7.618 7.570 8.128 9.206 10.364 11.052 10.985 10.353 9.694 9.518 9.947 10.646 11.085 10.935 10.303 9.633 9.386 9.718 10.408 11.053 11.368 11.357 11.245
+ 11.538 11.721 12.071 12.506 12.847 12.890 12.531 11.854 11.077 10.396 9.868 9.426 9.036 8.815 8.991 9.690 10.732 11.652 11.969 11.538 10.694 10.050 10.066 10.720 11.514 11.846 11.455 10.620 9.952 9.945 10.619 11.512 12.033 11.894 11.304 10.794
+ 11.081 11.501 12.282 13.216 13.921 14.007 13.342 12.188 11.044 10.289 9.946 9.766 9.564 9.481 9.874 10.931 12.345 13.406 13.490 12.554 11.223 10.353 10.415 11.182 11.952 12.109 11.567 10.779 10.343 10.560 11.259 11.977 12.307 12.147 11.716 11.372
+ 11.107 11.556 12.328 13.165 13.727 13.744 13.179 12.269 11.373 10.734 10.350 10.081 9.870 9.868 10.304 11.200 12.199 12.724 12.382 11.301 10.099 9.478 9.738 10.585 11.378 11.603 11.213 10.601 10.263 10.437 10.980 11.522 11.745 11.581 11.212 10.925
+ 11.060 11.407 12.030 12.730 13.191 13.124 12.467 11.460 10.486 9.799 9.382 9.069 8.807 8.783 9.255 10.225 11.282 11.823 11.502 10.529 9.546 9.154 9.493 10.208 10.800 11.028 11.021 11.046 11.205 11.369 11.377 11.269 11.280 11.602 12.147 12.573
+ 12.479 12.062 11.411 10.750 10.198 9.759 9.418 9.222 9.229 9.383 9.476 9.293 8.837 8.411 8.424 9.053 10.045 10.870 11.104 10.754 10.233 10.016 10.284 10.830 11.302 11.521 11.599 11.780 12.190 12.732 13.213 13.537 13.776 14.049 14.364 14.590
+ 10.951 11.072 11.052 10.625 9.813 8.971 8.538 8.685 9.170 9.513 9.358 8.737 8.034 7.700 7.942 8.615 9.366 9.887 10.092 10.114 10.167 10.391 10.781 11.219 11.558 11.718 11.730 11.734 11.905 12.355 13.050 13.817 14.440 14.787 14.886 14.874
+ 12.365 12.059 11.392 10.390 9.271 8.382 7.985 8.072 8.386 8.627 8.670 8.607 8.605 8.743 8.982 9.260 9.580 9.978 10.419 10.757 10.849 10.724 10.619 10.795 11.286 11.834 12.101 12.011 11.876 12.163 13.079 14.333 15.331 15.647 15.369 14.999
+ 11.515 11.335 11.021 10.630 10.191 9.708 9.185 8.674 8.273 8.074 8.100 8.278 8.495 8.694 8.937 9.358 10.037 10.873 11.593 11.901 11.678 11.095 10.516 10.276 10.476 10.955 11.448 11.811 12.110 12.536 13.211 14.063 14.872 15.433 15.700 15.776
+ 11.604 11.452 11.154 10.732 10.234 9.743 9.350 9.128 9.089 9.173 9.270 9.284 9.198 9.102 9.151 9.478 10.095 10.866 11.555 11.953 11.982 11.730 11.390 11.147 11.090 11.206 11.437 11.760 12.201 12.802 13.555 14.370 15.113 15.673 16.013 16.163
+ 13.487 12.840 11.921 11.175 10.784 10.584 10.298 9.840 9.412 9.295 9.552 9.918 10.021 9.728 9.306 9.243 9.839 10.933 11.988 12.471 12.242 11.629 11.157 11.162 11.578 12.054 12.273 12.201 12.100 12.305 12.968 13.962 14.983 15.764 16.209 16.385
+ 10.397 10.477 10.529 10.398 9.985 9.332 8.639 8.185 8.177 8.615 9.263 9.764 9.863 9.577 9.203 9.143 9.632 10.577 11.593 12.250 12.340 11.998 11.588 11.449 11.683 12.131 12.537 12.761 12.878 13.100 13.598 14.369 15.244 16.009 16.529 16.777
+ 11.758 11.164 10.342 9.721 9.451 9.341 9.100 8.650 8.213 8.100 8.411 8.945 9.383 9.580 9.685 9.969 10.561 11.305 11.904 12.170 12.177 12.165 12.306 12.565 12.765 12.787 12.705 12.739 13.073 13.714 14.495 15.208 15.730 16.052 16.228 16.305
+ 10.572 10.011 9.280 8.839 8.843 9.050 9.069 8.721 8.200 7.889 8.018 8.462 8.855 8.917 8.705 8.590 8.977 10.006 11.440 12.816 13.709 13.935 13.589 12.943 12.304 11.894 11.790 11.930 12.175 12.415 12.650 12.998 13.582 14.392 15.221 15.753
+ 8.056 7.731 7.174 6.552 6.041 5.724 5.532 5.308 4.964 4.611 4.492 4.764 5.304 5.769 5.908 5.853 6.101 7.110 8.837 10.616 11.558 11.190 9.812 8.284 7.396 7.345 7.719 7.952 7.832 7.621 7.750 8.397 9.350 10.222 10.765 10.985
+ 5.202 5.103 4.827 4.354 3.833 3.511 3.529 3.785 4.010 4.017 3.881 3.862 4.143 4.626 4.998 5.020 4.766 4.578 4.762 5.299 5.848 6.023 5.711 5.135 4.636 4.396 4.351 4.353 4.385 4.597 5.136 5.948 6.772 7.336 7.566 7.599
+ 2.932 3.263 3.876 4.619 5.232 5.445 5.160 4.555 4.001 3.815 4.046 4.442 4.655 4.507 4.126 3.830 3.884 4.309 4.888 5.342 5.509 5.412 5.175 4.907 4.644 4.378 4.133 3.985 4.033 4.336 4.881 5.591 6.357 7.065 7.611 7.909
+ 7.329 7.613 8.119 8.739 9.352 9.850 10.152 10.206 9.985 9.492 8.783 7.981 7.261 6.797 6.689 6.916 7.357 7.871 8.383 8.912 9.523 10.230 10.938 11.463 11.636 11.409 10.895 10.305 9.836 9.571 9.457 9.372 9.212 8.961 8.692 8.517
+ 9.156 9.207 9.524 10.289 11.395 12.449 13.035 13.029 12.664 12.311 12.162 12.114 11.923 11.487 10.964 10.649 10.714 11.087 11.550 11.967 12.401 13.005 13.806 14.583 14.989 14.800 14.109 13.277 12.702 12.566 12.763 13.018 13.093 12.929 12.645 12.434
+ 11.437 11.657 12.129 12.824 13.574 14.083 14.081 13.501 12.551 11.609 10.992 10.775 10.784 10.780 10.676 10.626 10.902 11.651 12.744 13.828 14.552 14.791 14.691 14.510 14.402 14.320 14.111 13.701 13.199 12.825 12.728 12.865 13.043 13.086 12.981 12.860
+ 12.122 12.326 12.798 13.586 14.618 15.627 16.212 16.048 15.129 13.837 12.736 12.206 12.206 12.381 12.452 12.511 12.945 14.010 15.451 16.566 16.737 15.970 14.942 14.455 14.756 15.326 15.373 14.589 13.474 12.902 13.288 14.139 14.432 13.528 11.813 10.454
+ 12.147 12.155 12.368 13.021 14.170 15.544 16.623 16.912 16.266 15.015 13.766 13.006 12.819 12.951 13.141 13.407 13.993 15.017 16.184 16.886 16.693 15.772 14.832 14.552 14.981 15.479 15.305 14.345 13.301 13.094 13.973 15.150 15.369 13.984 11.622 9.810
+ 12.040 11.967 12.037 12.535 13.596 15.055 16.460 17.282 17.197 16.272 14.929 13.709 12.999 12.905 13.306 14.005 14.825 15.594 16.120 16.233 15.914 15.371 14.934 14.815 14.921 14.931 14.590 13.997 13.575 13.715 14.358 14.921 14.698 13.445 11.683 10.410
+ 11.996 12.039 12.207 12.642 13.475 14.690 16.025 17.018 17.232 16.528 15.201 13.842 13.017 12.983 13.616 14.561 15.456 16.064 16.283 16.119 15.678 15.162 14.799 14.702 14.768 14.749 14.486 14.111 13.987 14.387 15.152 15.665 15.257 13.769 11.803 10.415
+ 12.134 12.341 12.686 13.133 13.761 14.679 15.844 16.936 17.473 17.119 15.966 14.548 13.549 13.404 14.068 15.107 15.993 16.402 16.323 15.958 15.557 15.272 15.121 15.008 14.809 14.471 14.094 13.923 14.191 14.898 15.674 15.903 15.104 13.323 11.238 9.837
+ 11.928 12.192 12.613 13.120 13.787 14.735 15.904 16.930 17.304 16.744 15.468 14.115 13.347 13.444 14.199 15.134 15.843 16.164 16.130 15.833 15.375 14.905 14.614 14.608 14.783 14.862 14.656 14.321 14.305 14.936 15.973 16.574 15.842 13.590 10.699 8.677
+ 11.939 12.122 12.464 12.982 13.760 14.843 16.072 17.043 17.300 16.649 15.352 14.007 13.200 13.188 13.821 14.733 15.570 16.112 16.241 15.925 15.254 14.502 14.026 14.033 14.379 14.652 14.531 14.130 13.957 14.450 15.440 16.078 15.406 13.183 10.279 8.234
+ 11.663 11.630 11.759 12.306 13.399 14.879 16.311 17.169 17.107 16.165 14.745 13.408 12.593 12.475 12.979 13.890 14.931 15.786 16.140 15.809 14.903 13.856 13.201 13.210 13.679 14.077 13.999 13.541 13.245 13.598 14.490 15.141 14.640 12.730 10.176 8.362
+ 12.067 11.629 11.320 11.782 13.164 14.931 16.218 16.426 15.591 14.277 13.102 12.345 11.908 11.620 11.529 11.889 12.849 14.146 15.131 15.181 14.178 12.656 11.469 11.199 11.773 12.568 12.920 12.614 11.977 11.535 11.526 11.702 11.575 10.875 9.843 9.077
+ 11.545 11.072 10.598 10.621 11.213 11.969 12.404 12.375 12.128 11.938 11.754 11.235 10.180 8.908 8.158 8.527 9.918 11.532 12.438 12.269 11.461 10.841 10.951 11.676 12.446 12.762 12.572 12.195 11.957 11.909 11.855 11.601 11.148 10.662 10.307 10.138
+ 13.539 12.870 11.960 11.323 11.161 11.260 11.221 10.815 10.135 9.451 8.946 8.599 8.307 8.106 8.210 8.822 9.883 11.008 11.727 11.841 11.588 11.479 11.921 12.928 14.125 15.029 15.360 15.164 14.700 14.229 13.869 13.598 13.350 13.099 12.878 12.746
+ 14.276 13.813 13.025 12.115 11.261 10.567 10.076 9.793 9.685 9.662 9.584 9.338 8.935 8.556 8.467 8.841 9.606 10.472 11.119 11.442 11.645 12.105 13.071 14.435 15.752 16.507 16.461 15.806 15.034 14.600 14.635 14.900 15.015 14.771 14.284 13.897
+ 13.652 13.219 12.482 11.645 10.914 10.412 10.151 10.044 9.966 9.820 9.581 9.293 9.045 8.923 8.984 9.233 9.624 10.089 10.577 11.100 11.742 12.603 13.702 14.902 15.933 16.526 16.577 16.240 15.835 15.643 15.720 15.874 15.828 15.458 14.910 14.507
+ 11.035 10.799 10.329 9.707 9.148 8.924 9.184 9.802 10.413 10.626 10.280 9.557 8.859 8.562 8.804 9.450 10.224 10.893 11.390 11.822 12.383 13.229 14.371 15.634 16.704 17.278 17.240 16.751 16.179 15.868 15.920 16.138 16.197 15.918 15.418 15.029
+ 11.111 10.667 10.027 9.510 9.302 9.364 9.507 9.549 9.422 9.156 8.807 8.421 8.062 7.871 8.037 8.690 9.779 11.053 12.197 13.027 13.593 14.123 14.828 15.733 16.654 17.328 17.595 17.490 17.190 16.883 16.644 16.426 16.143 15.770 15.389 15.144
+ 10.912 10.084 8.933 8.119 8.032 8.599 9.412 10.038 10.245 10.029 9.517 8.879 8.319 8.068 8.302 9.021 10.006 10.948 11.670 12.245 12.904 13.795 14.824 15.719 16.269 16.500 16.627 16.816 17.012 16.984 16.579 15.906 15.293 15.019 15.085 15.242
+ 13.935 13.129 11.986 11.055 10.549 10.273 9.922 9.429 9.001 8.847 8.920 8.950 8.770 8.562 8.745 9.570 10.825 11.955 12.543 12.682 12.901 13.664 14.930 16.162 16.791 16.693 16.253 15.972 16.018 16.135 15.974 15.483 14.965 14.771 14.942 15.184
+ 14.357 13.426 12.129 11.133 10.713 10.642 10.530 10.222 9.877 9.685 9.577 9.267 8.605 7.872 7.653 8.351 9.787 11.286 12.211 12.479 12.578 13.084 14.105 15.172 15.660 15.335 14.541 13.879 13.707 13.912 14.116 14.072 13.843 13.660 13.645 13.709
+ 14.613 13.462 11.828 10.530 9.943 9.837 9.720 9.333 8.831 8.531 8.530 8.597 8.444 8.086 7.908 8.337 9.431 10.769 11.767 12.136 12.080 12.064 12.399 12.998 13.513 13.676 13.510 13.254 13.109 13.082 13.041 12.906 12.735 12.652 12.691 12.765
+ 14.540 13.583 12.368 11.748 12.093 13.068 13.965 14.259 13.912 13.243 12.575 12.020 11.553 11.221 11.198 11.607 12.309 12.919 13.085 12.792 12.390 12.298 12.638 13.130 13.335 13.029 12.371 11.739 11.401 11.325 11.262 10.996 10.515 9.977 9.556 9.339
+ 13.690 13.413 13.075 12.972 13.286 13.944 14.638 14.995 14.814 14.178 13.383 12.723 12.331 12.182 12.234 12.515 13.051 13.701 14.101 13.879 13.000 11.923 11.339 11.636 12.508 13.123 12.769 11.478 10.077 9.535 10.140 11.198 11.568 10.618 8.811 7.386
+ 13.259 12.873 12.422 12.323 12.794 13.684 14.549 14.924 14.600 13.730 12.702 11.898 11.512 11.546 11.909 12.497 13.172 13.696 13.777 13.258 12.330 11.521 11.387 12.074 13.116 13.705 13.280 11.996 10.654 10.093 10.517 11.300 11.482 10.565 8.966 7.733
+ 12.825 12.604 12.307 12.164 12.364 12.911 13.559 13.911 13.647 12.758 11.592 10.664 10.357 10.723 11.499 12.301 12.816 12.888 12.511 11.826 11.129 10.815 11.181 12.161 13.230 13.648 12.963 11.400 9.791 9.011 9.322 10.168 10.609 10.086 8.883 7.897
+ 12.770 12.614 12.378 12.176 12.099 12.157 12.256 12.238 11.963 11.395 10.636 9.893 9.390 9.278 9.569 10.116 10.662 10.942 10.828 10.438 10.131 10.313 11.151 12.371 13.341 13.438 12.501 11.012 9.837 9.649 10.445 11.528 12.010 11.474 10.290 9.341
+ 12.650 12.652 12.541 12.247 11.892 11.713 11.823 12.043 12.002 11.443 10.476 9.535 9.069 9.228 9.805 10.439 10.864 11.019 10.972 10.837 10.764 10.958 11.578 12.529 13.340 13.380 12.354 10.693 9.426 9.478 10.911 12.745 13.628 12.870 11.033 9.529
+ 12.542 12.124 11.581 11.309 11.538 12.150 12.721 12.772 12.092 10.912 9.800 9.332 9.753 10.862 12.161 13.156 13.578 13.431 12.884 12.167 11.518 11.157 11.204 11.566 11.912 11.856 11.258 10.415 9.919 10.215 11.182 12.120 12.213 11.164 9.504 8.266
+ 12.439 12.251 12.033 12.032 12.439 13.231 14.092 14.541 14.214 13.150 11.836 10.941 10.911 11.709 12.877 13.862 14.337 14.304 13.964 13.513 13.062 12.669 12.389 12.244 12.147 11.932 11.504 11.009 10.792 11.126 11.898 12.565 12.495 11.479 9.979 8.882
+ 12.019 11.923 11.808 11.857 12.309 13.253 14.425 15.230 15.088 13.890 12.182 10.869 10.624 11.461 12.795 13.902 14.392 14.322 13.961 13.497 12.982 12.473 12.135 12.119 12.337 12.431 12.072 11.342 10.789 10.996 11.976 12.980 12.992 11.575 9.365 7.715
+ 12.090 11.850 11.586 11.639 12.292 13.536 14.955 15.874 15.744 14.539 12.842 11.523 11.211 11.927 13.153 14.227 14.749 14.707 14.314 13.781 13.238 12.805 12.624 12.771 13.099 13.264 12.978 12.308 11.700 11.624 12.115 12.619 12.381 11.092 9.256 7.919
+ 12.084 12.000 12.007 12.342 13.127 14.226 15.238 15.685 15.292 14.200 12.928 12.087 12.031 12.678 13.605 14.340 14.610 14.414 13.925 13.361 12.922 12.761 12.940 13.328 13.591 13.346 12.459 11.245 10.338 10.258 10.976 11.851 12.068 11.266 9.864 8.789
+ 10.339 10.925 11.789 12.577 13.150 13.587 13.948 14.081 13.706 12.744 11.558 10.817 11.020 12.075 13.299 13.881 13.451 12.307 11.149 10.553 10.633 11.070 11.431 11.453 11.107 10.499 9.768 9.084 8.658 8.663 9.083 9.644 9.958 9.801 9.312 8.895
+ 9.762 10.384 11.293 12.092 12.611 12.909 13.047 12.896 12.241 11.108 9.961 9.490 10.086 11.444 12.681 12.942 12.026 10.517 9.340 9.086 9.656 10.440 10.821 10.569 9.861 9.022 8.285 7.746 7.459 7.469 7.743 8.087 8.216 7.970 7.473 7.076
+ 8.934 9.042 9.010 8.646 8.095 7.762 7.922 8.382 8.580 8.067 6.961 5.936 5.708 6.435 7.562 8.243 7.987 7.001 5.966 5.483 5.654 6.106 6.369 6.232 5.820 5.395 5.133 5.054 5.107 5.248 5.433 5.560 5.490 5.163 4.700 4.362
+ 8.499 8.526 8.370 7.903 7.329 7.082 7.411 8.053 8.365 7.853 6.651 5.494 5.162 5.848 6.982 7.683 7.427 6.410 5.318 4.761 4.856 5.266 5.575 5.629 5.557 5.539 5.595 5.583 5.374 4.998 4.609 4.335 4.180 4.065 3.945 3.856
+ 8.044 8.126 8.279 8.485 8.719 8.919 8.968 8.713 8.037 6.972 5.751 4.747 4.297 4.507 5.159 5.820 6.082 5.797 5.156 4.542 4.286 4.462 4.880 5.245 5.361 5.228 4.988 4.778 4.634 4.496 4.302 4.069 3.880 3.807 3.841 3.897
+ 7.599 7.716 7.870 7.979 8.038 8.099 8.161 8.094 7.682 6.804 5.592 4.434 3.769 3.816 4.417 5.131 5.510 5.365 4.867 4.396 4.287 4.625 5.209 5.695 5.804 5.479 4.908 4.408 4.247 4.488 4.957 5.341 5.382 5.035 4.505 4.119
+ 6.792 7.807 9.183 10.110 10.209 9.726 9.225 9.070 9.159 9.093 8.590 7.758 7.003 6.699 6.913 7.402 7.840 8.042 8.015 7.869 7.710 7.596 7.568 7.637 7.750 7.797 7.703 7.545 7.559 7.964 8.733 9.519 9.862 9.551 8.826 8.240
+ 10.889 10.159 9.147 8.441 8.393 8.934 9.671 10.168 10.176 9.714 8.993 8.304 7.924 8.022 8.567 9.298 9.827 9.865 9.429 8.850 8.539 8.672 9.052 9.278 9.079 8.541 8.018 7.835 8.019 8.321 8.466 8.401 8.307 8.386 8.643 8.874
+ 11.266 10.975 10.759 11.028 11.863 12.936 13.749 13.983 13.664 13.048 12.394 11.853 11.519 11.512 11.926 12.685 13.467 13.868 13.696 13.155 12.705 12.698 13.087 13.467 13.428 12.904 12.214 11.769 11.729 11.892 11.910 11.597 11.049 10.517 10.175 10.035
+ 11.647 11.269 11.006 11.422 12.662 14.309 15.665 16.207 15.857 14.906 13.753 12.727 12.066 11.965 12.508 13.527 14.565 15.088 14.854 14.128 13.514 13.499 14.060 14.687 14.794 14.202 13.269 12.587 12.518 12.933 13.358 13.348 12.781 11.876 11.006 10.489
+ 11.711 11.436 11.284 11.708 12.813 14.253 15.472 16.067 15.964 15.338 14.415 13.395 12.514 12.091 12.394 13.391 14.638 15.483 15.509 14.852 14.114 13.900 14.346 15.029 15.321 14.893 13.954 13.055 12.640 12.741 13.005 13.007 12.550 11.756 10.947 10.448
+ 11.450 11.326 11.327 11.753 12.710 14.005 15.243 16.034 16.168 15.660 14.704 13.606 12.719 12.372 12.738 13.707 14.872 15.709 15.869 15.408 14.751 14.410 14.617 15.167 15.574 15.435 14.731 13.837 13.243 13.188 13.483 13.643 13.241 12.229 11.001 10.165
+ 11.047 10.977 11.045 11.504 12.450 13.724 14.974 15.833 16.073 15.673 14.796 13.725 12.809 12.383 12.650 13.548 14.707 15.591 15.784 15.271 14.470 13.977 14.138 14.781 15.318 15.189 14.317 13.221 12.662 13.041 14.018 14.667 14.118 12.225 9.783 8.082
+ 10.656 10.862 11.234 11.755 12.473 13.450 14.631 15.758 16.431 16.320 15.396 14.018 12.794 12.282 12.714 13.866 15.177 16.025 16.059 15.385 14.514 14.050 14.298 15.025 15.587 15.391 14.382 13.183 12.691 13.387 14.841 15.879 15.367 13.084 10.033 7.880
+ 11.174 11.389 11.753 12.212 12.799 13.606 14.653 15.758 16.541 16.613 15.840 14.515 13.269 12.744 13.221 14.434 15.710 16.373 16.148 15.325 14.543 14.350 14.817 15.482 15.673 15.014 13.740 12.599 12.350 13.197 14.560 15.376 14.788 12.757 10.185 8.412
+ 11.012 11.305 11.766 12.265 12.792 13.464 14.383 15.456 16.346 16.634 16.108 14.989 13.870 13.394 13.839 14.921 15.957 16.318 15.845 14.948 14.300 14.344 14.959 15.539 15.441 14.476 13.093 12.116 12.185 13.283 14.685 15.364 14.630 12.588 10.137 8.489
+ 10.056 10.521 11.186 11.760 12.195 12.728 13.647 14.954 16.232 16.858 16.451 15.207 13.860 13.231 13.690 14.892 16.007 16.290 15.587 14.426 13.619 13.672 14.417 15.133 15.073 14.017 12.476 11.369 11.414 12.607 14.173 15.006 14.352 12.303 9.794 8.095
+ 10.286 10.685 11.247 11.737 12.162 12.785 13.856 15.280 16.545 17.006 16.360 14.942 13.583 13.095 13.725 14.989 15.999 16.071 15.184 13.974 13.269 13.500 14.399 15.188 15.129 14.065 12.563 11.571 11.785 13.152 14.823 15.633 14.806 12.475 9.672 7.785
+ 10.741 11.161 11.744 12.228 12.607 13.149 14.129 15.483 16.715 17.186 16.588 15.255 14.008 13.635 14.335 15.574 16.448 16.319 15.261 13.996 13.366 13.726 14.695 15.439 15.271 14.157 12.759 11.999 12.434 13.849 15.346 15.861 14.795 12.401 9.688 7.908
+ 10.457 10.917 11.558 12.084 12.467 12.979 13.919 15.254 16.514 17.063 16.579 15.363 14.203 13.844 14.461 15.526 16.186 15.895 14.812 13.683 13.279 13.822 14.817 15.414 15.039 13.819 12.512 11.996 12.671 14.181 15.611 16.026 15.005 12.872 10.533 9.025
+ 9.915 10.463 11.196 11.738 12.076 12.586 13.656 15.225 16.668 17.192 16.456 14.920 13.591 13.328 14.206 15.458 16.030 15.371 13.836 12.425 12.045 12.850 14.145 14.901 14.498 13.165 11.813 11.407 12.315 14.062 15.607 15.957 14.716 12.294 9.698 8.041
+ 10.580 11.033 11.662 12.190 12.616 13.226 14.276 15.647 16.792 17.085 16.333 15.012 14.000 13.961 14.848 15.910 16.232 15.414 13.876 12.571 12.305 13.161 14.447 15.191 14.827 13.582 12.321 11.963 12.868 14.591 16.132 16.510 15.309 12.912 10.316 8.650
+ 10.776 11.230 11.887 12.498 13.062 13.805 14.875 16.060 16.833 16.740 15.823 14.686 14.109 14.466 15.428 16.187 16.044 14.922 13.416 12.369 12.296 13.062 14.014 14.437 14.013 13.009 12.099 11.957 12.853 14.449 15.934 16.418 15.426 13.212 10.701 9.050
+ 10.334 10.786 11.459 12.129 12.806 13.685 14.855 16.038 16.682 16.369 15.229 13.957 13.365 13.784 14.797 15.527 15.269 13.999 12.373 11.250 11.115 11.798 12.657 13.045 12.720 11.958 11.343 11.398 12.278 13.659 14.878 15.260 14.468 12.730 10.773 9.491
+ 9.928 10.323 10.961 11.712 12.604 13.747 15.082 16.234 16.674 16.126 14.880 13.692 13.289 13.841 14.814 15.355 14.893 13.534 11.952 10.917 10.804 11.424 12.224 12.661 12.498 11.888 11.267 11.119 11.725 12.965 14.292 14.960 14.441 12.802 10.772 9.385
+ 10.406 10.581 11.053 11.961 13.311 14.866 16.182 16.794 16.496 15.497 14.356 13.670 13.728 14.344 14.989 15.117 14.478 13.222 11.785 10.663 10.208 10.510 11.362 12.314 12.838 12.598 11.699 10.714 10.376 11.063 12.446 13.598 13.593 12.193 10.110 8.592
+ 10.166 10.470 11.154 12.262 13.675 15.051 15.931 15.985 15.231 14.089 13.165 12.908 13.345 14.093 14.622 14.574 13.910 12.834 11.635 10.586 9.958 9.995 10.774 12.012 13.058 13.234 12.347 10.978 10.190 10.770 12.541 14.350 14.842 13.491 11.093 9.256
+ 9.474 9.340 9.529 10.519 12.300 14.227 15.378 15.173 13.783 12.031 10.866 10.788 11.620 12.726 13.444 13.416 12.640 11.334 9.807 8.438 7.668 7.864 9.049 10.711 11.953 12.011 10.823 9.196 8.345 9.054 11.046 13.092 13.840 12.789 10.695 9.059
+ 9.383 10.096 11.319 12.717 13.911 14.577 14.532 13.810 12.696 11.652 11.130 11.339 12.110 12.981 13.452 13.255 12.439 11.272 10.060 9.061 8.499 8.572 9.340 10.546 11.591 11.820 11.004 9.624 8.664 8.936 10.433 12.242 13.165 12.618 11.105 9.847
+ 6.396 7.280 8.660 10.017 10.989 11.474 11.506 11.108 10.294 9.200 8.172 7.635 7.812 8.531 9.290 9.554 9.057 7.890 6.401 5.030 4.209 4.272 5.298 6.918 8.332 8.678 7.644 5.852 4.580 4.897 6.798 9.077 10.147 9.248 7.079 5.311
+ 8.559 8.279 7.863 7.566 7.659 8.257 9.183 9.979 10.134 9.406 8.022 6.582 5.707 5.662 6.216 6.821 6.984 6.555 5.772 5.058 4.746 4.909 5.367 5.819 6.015 5.863 5.472 5.082 4.939 5.140 5.555 5.879 5.825 5.330 4.632 4.131
+ 9.157 8.580 7.848 7.501 7.827 8.674 9.565 9.992 9.695 8.748 7.479 6.307 5.584 5.471 5.862 6.409 6.669 6.362 5.569 4.717 4.310 4.575 5.284 5.912 6.019 5.565 4.931 4.609 4.837 5.441 5.978 6.051 5.554 4.691 3.828 3.302
+ 5.962 5.724 5.488 5.596 6.284 7.492 8.828 9.725 9.736 8.806 7.345 6.019 5.383 5.561 6.194 6.681 6.563 5.806 4.790 4.049 3.929 4.395 5.079 5.535 5.507 5.057 4.498 4.182 4.294 4.744 5.231 5.415 5.111 4.396 3.579 3.042
+ 4.618 5.082 5.675 6.061 6.237 6.523 7.188 8.083 8.651 8.359 7.189 5.739 4.812 4.822 5.497 6.134 6.157 5.534 4.732 4.279 4.353 4.696 4.891 4.722 4.316 3.997 4.010 4.355 4.819 5.143 5.165 4.864 4.325 3.696 3.144 2.821
+ 6.569 5.853 4.892 4.344 4.654 5.783 7.221 8.277 8.464 7.752 6.551 5.451 4.877 4.877 5.149 5.273 4.992 4.366 3.715 3.401 3.595 4.174 4.810 5.172 5.124 4.777 4.400 4.232 4.347 4.621 4.825 4.763 4.383 3.794 3.210 2.850
+ 5.188 5.367 5.763 6.370 7.059 7.624 7.916 7.952 7.886 7.856 7.832 7.625 7.068 6.216 5.382 4.958 5.148 5.817 6.598 7.159 7.416 7.537 7.740 8.065 8.315 8.222 7.677 6.858 6.123 5.764 5.809 6.015 6.064 5.801 5.349 5.003
+ 3.945 4.373 5.122 5.995 6.762 7.247 7.417 7.391 7.354 7.414 7.511 7.453 7.072 6.384 5.615 5.072 4.937 5.159 5.512 5.788 5.955 6.156 6.544 7.093 7.556 7.619 7.138 6.282 5.441 4.974 4.969 5.202 5.327 5.144 4.744 4.419
+ 4.920 4.465 3.997 4.057 4.856 6.083 7.093 7.339 6.737 5.700 4.831 4.507 4.668 4.925 4.897 4.487 3.912 3.493 3.411 3.615 3.928 4.223 4.493 4.772 5.012 5.071 4.839 4.379 3.939 3.770 3.906 4.099 4.002 3.463 2.687 2.120
+ 5.344 4.574 3.641 3.293 3.854 5.010 6.072 6.475 6.125 5.356 4.626 4.225 4.190 4.411 4.745 5.055 5.191 5.029 4.586 4.081 3.840 4.062 4.641 5.197 5.339 4.946 4.239 3.605 3.304 3.313 3.407 3.360 3.112 2.757 2.440 2.262
+ 4.662 4.154 3.642 3.727 4.612 5.900 6.852 6.908 6.093 4.984 4.290 4.353 4.942 5.488 5.532 5.048 4.396 3.985 3.952 4.110 4.183 4.084 3.981 4.098 4.457 4.799 4.790 4.320 3.624 3.112 3.033 3.284 3.514 3.445 3.105 2.796
+ 3.993 3.453 2.900 2.934 3.709 4.795 5.524 5.510 4.927 4.320 4.160 4.511 5.056 5.387 5.296 4.851 4.268 3.753 3.442 3.412 3.686 4.179 4.673 4.906 4.740 4.283 3.823 3.612 3.680 3.829 3.829 3.615 3.320 3.127 3.097 3.140
+ 4.884 4.276 3.543 3.275 3.715 4.586 5.323 5.506 5.148 4.636 4.392 4.554 4.918 5.151 5.067 4.750 4.436 4.299 4.324 4.363 4.293 4.123 3.961 3.896 3.902 3.873 3.727 3.499 3.319 3.293 3.398 3.473 3.344 2.965 2.480 2.141
+ 5.331 4.601 3.752 3.517 4.158 5.246 5.978 5.771 4.685 3.353 2.526 2.573 3.307 4.196 4.754 4.815 4.536 4.200 4.012 4.019 4.158 4.333 4.461 4.479 4.347 4.075 3.744 3.480 3.376 3.425 3.509 3.468 3.202 2.745 2.258 1.945
+ 3.077 3.027 3.116 3.541 4.289 5.081 5.513 5.331 4.614 3.746 3.190 3.206 3.722 4.399 4.857 4.883 4.520 3.998 3.581 3.438 3.583 3.901 4.221 4.382 4.301 3.999 3.597 3.263 3.125 3.200 3.370 3.446 3.286 2.888 2.413 2.092
+ 3.296 3.265 3.429 3.959 4.710 5.255 5.228 4.658 3.994 3.747 4.071 4.646 4.959 4.740 4.165 3.675 3.578 3.817 4.067 4.065 3.851 3.701 3.850 4.256 4.623 4.648 4.265 3.687 3.219 3.032 3.059 3.089 2.943 2.600 2.196 1.927
+ 4.068 4.223 4.428 4.583 4.680 4.761 4.804 4.678 4.268 3.660 3.181 3.189 3.772 4.616 5.214 5.241 4.786 4.230 3.897 3.803 3.727 3.516 3.285 3.307 3.698 4.219 4.445 4.144 3.523 3.054 3.042 3.320 3.392 2.904 2.017 1.314
+ 4.695 4.513 4.326 4.353 4.683 5.170 5.507 5.419 4.871 4.127 3.590 3.539 3.929 4.430 4.666 4.482 4.038 3.654 3.561 3.742 3.989 4.099 4.026 3.864 3.718 3.588 3.404 3.140 2.894 2.807 2.916 3.066 3.014 2.638 2.078 1.662
+ 3.926 4.124 4.433 4.743 4.979 5.114 5.122 4.941 4.511 3.862 3.176 2.740 2.780 3.290 3.997 4.503 4.535 4.127 3.589 3.290 3.410 3.826 4.224 4.331 4.094 3.686 3.348 3.203 3.191 3.148 2.963 2.667 2.393 2.256 2.260 2.309
+ 6.647 6.013 5.261 4.962 5.241 5.682 5.719 5.148 4.295 3.720 3.724 4.116 4.420 4.304 3.840 3.380 3.209 3.315 3.464 3.466 3.366 3.366 3.591 3.944 4.178 4.122 3.820 3.473 3.248 3.156 3.085 2.938 2.728 2.540 2.436 2.403
+ 5.555 5.458 5.347 5.325 5.420 5.534 5.477 5.112 4.503 3.940 3.780 4.177 4.915 5.506 5.505 4.837 3.854 3.071 2.795 2.932 3.125 3.091 2.858 2.697 2.841 3.248 3.634 3.723 3.483 3.124 2.883 2.806 2.736 2.508 2.148 1.865
+ 4.519 5.043 5.795 6.354 6.431 6.036 5.460 5.067 5.039 5.258 5.415 5.278 4.884 4.508 4.414 4.607 4.799 4.655 4.092 3.396 3.020 3.226 3.877 4.534 4.788 4.542 4.027 3.573 3.353 3.324 3.371 3.474 3.727 4.189 4.746 5.135
+ 7.489 8.183 9.059 9.448 9.001 7.947 6.951 6.635 7.099 7.819 8.033 7.335 6.033 4.941 4.747 5.450 6.341 6.564 5.814 4.603 3.855 4.162 5.321 6.507 6.922 6.377 5.342 4.499 4.225 4.429 4.810 5.216 5.734 6.477 7.319 7.900
+ 7.424 7.770 7.983 7.580 6.573 5.518 5.048 5.334 5.951 6.260 5.942 5.209 4.544 4.253 4.265 4.320 4.292 4.325 4.635 5.230 5.848 6.175 6.125 5.877 5.666 5.535 5.344 4.998 4.647 4.600 5.011 5.655 6.047 5.855 5.222 4.671
+ 6.297 6.761 7.206 7.128 6.483 5.721 5.366 5.534 5.866 5.905 5.529 5.024 4.752 4.777 4.841 4.686 4.375 4.260 4.609 5.293 5.866 5.984 5.732 5.526 5.669 6.015 6.095 5.617 4.820 4.326 4.572 5.377 6.067 6.079 5.475 4.877
+ 2.804 3.391 4.186 4.751 4.947 5.002 5.246 5.769 6.324 6.554 6.320 5.822 5.419 5.309 5.375 5.319 4.951 4.361 3.857 3.727 4.057 4.705 5.418 5.952 6.127 5.854 5.189 4.374 3.785 3.735 4.246 4.989 5.488 5.463 5.042 4.647
+ 4.421 4.829 5.414 5.859 5.961 5.766 5.552 5.636 6.130 6.824 7.295 7.195 6.507 5.579 4.885 4.697 4.906 5.154 5.144 4.899 4.728 4.947 5.568 6.233 6.450 5.953 4.923 3.880 3.348 3.516 4.146 4.751 4.919 4.565 3.947 3.486
+ 3.547 4.260 5.252 5.951 6.024 5.609 5.215 5.352 6.138 7.186 7.847 7.668 6.724 5.559 4.798 4.711 5.076 5.426 5.461 5.267 5.190 5.474 6.009 6.407 6.326 5.752 5.011 4.491 4.356 4.466 4.562 4.499 4.338 4.228 4.233 4.283
+ 3.272 4.079 5.308 6.364 6.749 6.368 5.632 5.217 5.577 6.569 7.501 7.645 6.832 5.631 4.929 5.221 6.217 7.085 7.147 6.433 5.619 5.419 5.974 6.755 7.033 6.494 5.464 4.587 4.298 4.534 4.891 5.012 4.837 4.544 4.320 4.222
+ 3.435 3.707 4.242 4.924 5.493 5.677 5.423 4.995 4.808 5.088 5.666 6.102 6.075 5.673 5.333 5.459 6.055 6.706 6.944 6.652 6.172 6.001 6.360 7.004 7.427 7.273 6.599 5.794 5.260 5.131 5.252 5.360 5.294 5.072 4.818 4.657
+ 4.789 4.648 4.659 5.040 5.603 5.831 5.335 4.270 3.288 3.022 3.575 4.462 5.061 5.144 5.009 5.115 5.606 6.184 6.437 6.284 6.094 6.339 7.132 8.085 8.617 8.438 7.763 7.090 6.776 6.805 6.903 6.851 6.662 6.495 6.450 6.476
+ 1.774 2.878 4.547 5.972 6.499 5.996 4.942 4.131 4.145 4.949 5.921 6.327 5.892 5.024 4.489 4.799 5.809 6.850 7.290 7.040 6.587 6.553 7.148 8.003 8.480 8.190 7.278 6.277 5.682 5.629 5.876 6.062 5.975 5.647 5.263 5.016
+ 4.234 5.005 5.982 6.491 6.294 5.777 5.625 6.237 7.354 8.206 8.073 6.834 5.088 3.754 3.448 4.106 5.099 5.724 5.692 5.257 4.937 5.081 5.609 6.112 6.183 5.714 4.945 4.266 3.939 3.960 4.116 4.169 4.004 3.671 3.318 3.096
+ 3.535 4.331 5.285 5.687 5.390 4.936 5.066 6.045 7.391 8.227 7.957 6.703 5.173 4.119 3.851 4.135 4.484 4.543 4.279 3.912 3.726 3.913 4.488 5.263 5.888 5.992 5.414 4.378 3.433 3.121 3.577 4.401 4.936 4.780 4.106 3.509
+ 3.756 4.297 4.807 4.712 4.033 3.420 3.578 4.622 5.938 6.683 6.452 5.534 4.570 3.996 3.782 3.639 3.411 3.227 3.308 3.669 4.088 4.342 4.453 4.621 4.931 5.149 4.899 4.088 3.143 2.742 3.239 4.286 5.073 5.003 4.220 3.483
+ 4.337 4.755 5.167 5.144 4.672 4.164 4.039 4.310 4.574 4.426 3.876 3.351 3.290 3.720 4.236 4.406 4.175 3.898 3.956 4.375 4.810 4.911 4.676 4.425 4.436 4.623 4.621 4.196 3.574 3.295 3.714 4.615 5.346 5.386 4.814 4.241
+ 4.631 4.616 4.663 4.846 5.135 5.373 5.358 4.995 4.403 3.868 3.666 3.853 4.210 4.395 4.196 3.705 3.243 3.121 3.403 3.893 4.330 4.615 4.856 5.195 5.595 5.802 5.564 4.904 4.184 3.874 4.181 4.873 5.455 5.567 5.263 4.931
+ 4.262 4.632 5.159 5.560 5.650 5.431 5.030 4.598 4.235 3.985 3.873 3.900 4.021 4.134 4.138 4.005 3.817 3.707 3.756 3.940 4.170 4.397 4.644 4.952 5.273 5.450 5.322 4.892 4.384 4.116 4.276 4.780 5.342 5.699 5.791 5.759
+ 5.382 5.284 5.112 4.916 4.750 4.643 4.572 4.478 4.323 4.140 4.015 4.012 4.093 4.132 4.015 3.752 3.495 3.431 3.645 4.053 4.486 4.818 5.037 5.183 5.242 5.118 4.736 4.186 3.737 3.678 4.088 4.738 5.242 5.345 5.111 4.855
+ 3.473 3.634 3.911 4.259 4.657 5.073 5.407 5.498 5.233 4.672 4.062 3.692 3.678 3.883 4.032 3.950 3.710 3.553 3.674 4.053 4.490 4.795 4.934 4.996 5.042 4.999 4.741 4.275 3.831 3.719 4.064 4.659 5.094 5.089 4.725 4.376
+ 5.244 5.004 4.723 4.637 4.827 5.147 5.324 5.166 4.709 4.193 3.885 3.892 4.096 4.259 4.207 3.945 3.628 3.429 3.416 3.543 3.731 3.950 4.220 4.531 4.783 4.818 4.550 4.072 3.639 3.509 3.757 4.214 4.593 4.700 4.569 4.409
+ 4.844 4.860 4.820 4.708 4.657 4.853 5.308 5.745 5.752 5.127 4.104 3.235 2.984 3.369 3.964 4.253 4.044 3.585 3.316 3.499 4.033 4.589 4.890 4.878 4.659 4.351 4.011 3.700 3.553 3.721 4.209 4.775 5.061 4.867 4.345 3.908
+ 4.466 4.086 3.697 3.738 4.358 5.285 6.022 6.198 5.794 5.104 4.489 4.148 4.050 4.047 4.015 3.921 3.800 3.704 3.683 3.791 4.065 4.472 4.868 5.041 4.841 4.292 3.613 3.091 2.915 3.075 3.400 3.689 3.823 3.805 3.717 3.646
+ 5.934 5.734 5.427 5.175 5.140 5.395 5.860 6.316 6.522 6.354 5.872 5.257 4.680 4.205 3.807 3.465 3.236 3.222 3.469 3.900 4.344 4.657 4.808 4.862 4.876 4.823 4.617 4.220 3.724 3.315 3.136 3.183 3.317 3.388 3.354 3.293
+ 5.223 5.600 5.975 5.947 5.481 4.974 4.936 5.554 6.516 7.234 7.268 6.606 5.596 4.652 3.990 3.588 3.332 3.171 3.137 3.266 3.523 3.827 4.108 4.334 4.472 4.459 4.233 3.830 3.413 3.173 3.159 3.200 3.029 2.513 1.818 1.317
+ 5.043 4.971 4.808 4.588 4.461 4.658 5.336 6.396 7.443 7.955 7.592 6.450 5.050 4.032 3.762 4.109 4.576 4.689 4.350 3.877 3.724 4.094 4.771 5.288 5.290 4.788 4.118 3.647 3.507 3.542 3.495 3.236 2.841 2.484 2.273 2.195
+ 4.641 4.460 4.124 3.738 3.522 3.741 4.533 5.743 6.900 7.425 6.971 5.685 4.180 3.189 3.123 3.812 4.647 5.017 4.726 4.105 3.723 3.940 4.634 5.307 5.462 4.960 4.089 3.328 3.003 3.102 3.351 3.444 3.241 2.817 2.369 2.090
+ 4.313 4.407 4.540 4.613 4.535 4.301 4.041 3.961 4.192 4.652 5.054 5.094 4.679 4.016 3.457 3.239 3.316 3.446 3.430 3.298 3.265 3.498 3.932 4.286 4.292 3.922 3.404 3.029 2.920 2.957 2.923 2.696 2.335 1.996 1.785 1.701
+ 5.390 5.175 4.985 5.072 5.443 5.826 5.878 5.462 4.758 4.117 3.809 3.876 4.174 4.532 4.860 5.124 5.280 5.261 5.055 4.781 4.643 4.770 5.076 5.282 5.111 4.501 3.657 2.911 2.494 2.413 2.507 2.595 2.604 2.559 2.514 2.494
+ 4.583 4.088 3.524 3.398 3.897 4.743 5.411 5.517 5.062 4.370 3.813 3.566 3.571 3.684 3.822 3.991 4.199 4.395 4.497 4.502 4.530 4.731 5.127 5.532 5.644 5.270 4.498 3.669 3.160 3.134 3.421 3.646 3.485 2.886 2.113 1.577
+ 4.568 4.331 4.095 4.117 4.425 4.773 4.833 4.469 3.857 3.351 3.223 3.468 3.836 4.032 3.920 3.588 3.257 3.131 3.300 3.724 4.261 4.717 4.894 4.674 4.094 3.360 2.771 2.555 2.736 3.123 3.429 3.444 3.133 2.631 2.145 1.853
+ 3.971 4.439 5.156 5.839 6.317 6.585 6.727 6.790 6.755 6.604 6.409 6.313 6.420 6.686 6.943 7.028 6.926 6.776 6.732 6.810 6.847 6.623 6.033 5.170 4.257 3.504 3.010 2.759 2.692 2.748 2.851 2.898 2.787 2.496 2.128 1.871
+ 4.595 4.487 4.425 4.579 4.969 5.421 5.687 5.617 5.275 4.884 4.675 4.740 5.005 5.309 5.519 5.595 5.573 5.514 5.459 5.415 5.367 5.286 5.125 4.839 4.417 3.907 3.413 3.045 2.859 2.819 2.818 2.743 2.540 2.243 1.947 1.763
+ 4.812 5.030 5.238 5.189 4.841 4.370 3.985 3.733 3.503 3.204 2.924 2.879 3.195 3.741 4.197 4.316 4.134 3.919 3.908 4.081 4.196 4.046 3.674 3.348 3.293 3.468 3.604 3.468 3.096 2.757 2.683 2.825 2.896 2.655 2.167 1.767
+ 4.449 4.704 5.099 5.456 5.612 5.492 5.139 4.698 4.352 4.236 4.372 4.646 4.865 4.859 4.586 4.157 3.774 3.606 3.690 3.921 4.133 4.207 4.117 3.911 3.647 3.357 3.067 2.836 2.745 2.835 3.035 3.165 3.051 2.654 2.136 1.772
+ 4.716 5.128 5.875 6.768 7.523 7.861 7.674 7.133 6.633 6.559 7.021 7.747 8.227 8.028 7.081 5.749 4.611 4.135 4.422 5.193 5.980 6.381 6.232 5.614 4.756 3.919 3.323 3.105 3.285 3.728 4.164 4.278 3.876 3.025 2.058 1.419
+ 5.398 4.764 4.047 3.872 4.396 5.179 5.569 5.259 4.530 4.001 4.102 4.743 5.412 5.603 5.179 4.419 3.747 3.432 3.480 3.735 4.048 4.336 4.548 4.616 4.492 4.205 3.881 3.646 3.531 3.447 3.281 3.011 2.730 2.553 2.510 2.530
+ 5.604 5.347 5.024 4.878 5.022 5.341 5.541 5.347 4.698 3.815 3.076 2.778 2.956 3.380 3.735 3.834 3.713 3.550 3.487 3.524 3.556 3.497 3.374 3.296 3.342 3.476 3.586 3.588 3.504 3.426 3.399 3.352 3.152 2.744 2.246 1.899
+ 3.940 3.744 3.551 3.588 3.910 4.342 4.615 4.564 4.245 3.871 3.658 3.691 3.902 4.150 4.303 4.278 4.057 3.687 3.295 3.055 3.103 3.432 3.867 4.151 4.120 3.811 3.436 3.223 3.246 3.396 3.475 3.354 3.044 2.668 2.355 2.185
+ 5.433 4.699 3.827 3.496 3.900 4.613 4.993 4.730 4.072 3.560 3.549 3.960 4.425 4.633 4.531 4.252 3.908 3.509 3.082 2.784 2.839 3.303 3.905 4.180 3.843 3.056 2.348 2.195 2.643 3.280 3.590 3.356 2.773 2.213 1.899 1.802
+ 5.709 4.956 3.983 3.449 3.637 4.265 4.737 4.612 3.923 3.113 2.682 2.825 3.342 3.827 3.961 3.698 3.232 2.847 2.753 3.010 3.531 4.120 4.548 4.644 4.376 3.884 3.407 3.146 3.140 3.252 3.276 3.073 2.651 2.140 1.700 1.451
+ 4.562 4.582 4.610 4.640 4.677 4.705 4.650 4.387 3.825 3.023 2.225 1.755 1.820 2.359 3.054 3.519 3.546 3.220 2.845 2.716 2.932 3.356 3.739 3.902 3.832 3.657 3.523 3.492 3.517 3.496 3.354 3.085 2.748 2.424 2.178 2.049
+ 5.244 5.149 5.038 5.009 5.093 5.199 5.134 4.722 3.960 3.089 2.495 2.477 3.027 3.804 4.333 4.311 3.804 3.182 2.854 2.998 3.478 3.984 4.257 4.231 4.010 3.741 3.508 3.324 3.174 3.054 2.953 2.829 2.622 2.318 1.989 1.770
+ 4.160 4.011 3.881 4.001 4.485 5.188 5.709 5.605 4.718 3.371 2.254 1.997 2.732 3.967 4.911 5.021 4.356 3.484 3.020 3.182 3.698 4.092 4.079 3.734 3.337 3.101 3.023 2.969 2.857 2.735 2.693 2.722 2.701 2.520 2.220 1.986
+ 4.490 4.224 3.906 3.788 3.956 4.243 4.350 4.064 3.426 2.722 2.307 2.383 2.887 3.541 4.019 4.121 3.852 3.385 2.954 2.732 2.770 3.002 3.299 3.548 3.688 3.716 3.653 3.506 3.268 2.935 2.545 2.181 1.932 1.837 1.857 1.902
+ 4.415 4.411 4.398 4.366 4.295 4.168 3.991 3.788 3.589 3.415 3.287 3.240 3.325 3.563 3.887 4.131 4.114 3.779 3.271 2.884 2.864 3.228 3.721 3.985 3.801 3.245 2.619 2.229 2.187 2.363 2.526 2.519 2.346 2.116 1.934 1.843
+ 3.043 3.121 3.375 3.850 4.410 4.777 4.732 4.313 3.801 3.521 3.596 3.883 4.121 4.153 4.024 3.887 3.841 3.850 3.827 3.754 3.717 3.802 3.957 3.994 3.726 3.151 2.499 2.084 2.082 2.407 2.776 2.905 2.681 2.203 1.693 1.374
+ 4.299 3.790 3.196 3.016 3.419 4.124 4.639 4.640 4.170 3.534 3.030 2.765 2.678 2.696 2.811 3.042 3.337 3.566 3.636 3.594 3.594 3.748 3.992 4.126 3.991 3.635 3.279 3.125 3.169 3.213 3.048 2.653 2.206 1.919 1.849 1.883
+ 5.971 5.127 4.049 3.447 3.563 4.021 4.213 3.845 3.157 2.666 2.696 3.123 3.546 3.664 3.507 3.333 3.340 3.498 3.629 3.632 3.581 3.612 3.740 3.809 3.648 3.261 2.855 2.656 2.693 2.778 2.688 2.386 2.044 1.874 1.914 2.018
+ 6.437 5.708 4.993 5.060 5.930 6.789 6.680 5.357 3.543 2.351 2.399 3.368 4.353 4.643 4.228 3.658 3.464 3.710 4.045 4.126 3.947 3.790 3.878 4.125 4.220 3.942 3.384 2.865 2.646 2.722 2.866 2.859 2.661 2.391 2.182 2.083
+ 9.348 9.541 9.819 10.035 10.085 9.938 9.598 9.080 8.407 7.661 6.989 6.539 6.363 6.368 6.367 6.214 5.907 5.574 5.357 5.299 5.320 5.294 5.152 4.921 4.676 4.475 4.340 4.284 4.337 4.515 4.762 4.932 4.871 4.540 4.082 3.754
+ 11.062 11.276 11.565 11.756 11.753 11.548 11.149 10.527 9.669 8.674 7.785 7.269 7.214 7.434 7.586 7.430 7.006 6.588 6.438 6.589 6.827 6.886 6.662 6.270 5.908 5.686 5.580 5.529 5.542 5.681 5.946 6.181 6.160 5.780 5.201 4.770
+ 9.891 10.184 10.601 10.929 11.052 10.970 10.700 10.198 9.393 8.317 7.200 6.386 6.102 6.283 6.594 6.677 6.429 6.081 6.015 6.462 7.312 8.163 8.570 8.288 7.375 6.118 4.884 3.977 3.555 3.588 3.874 4.111 4.050 3.637 3.063 2.653
+ 9.522 9.505 9.515 9.597 9.730 9.791 9.579 8.927 7.835 6.537 5.419 4.816 4.799 5.125 5.390 5.299 4.871 4.418 4.320 4.746 5.529 6.269 6.587 6.343 5.686 4.927 4.346 4.060 4.013 4.061 4.074 3.986 3.805 3.583 3.386 3.271
+ 7.658 7.679 7.756 7.906 8.054 8.024 7.606 6.703 5.447 4.199 3.379 3.231 3.655 4.259 4.594 4.437 3.910 3.365 3.131 3.304 3.734 4.177 4.479 4.641 4.759 4.900 5.057 5.182 5.247 5.247 5.164 4.931 4.480 3.835 3.168 2.739
+ 4.110 4.228 4.585 5.236 5.988 6.453 6.309 5.562 4.564 3.767 3.424 3.464 3.634 3.723 3.686 3.571 3.400 3.134 2.771 2.436 2.325 2.548 3.003 3.436 3.645 3.643 3.613 3.706 3.871 3.898 3.632 3.155 2.741 2.622 2.782 2.979
+ 4.841 5.240 5.860 6.448 6.818 6.928 6.866 6.750 6.635 6.491 6.250 5.889 5.465 5.086 4.838 4.735 4.723 4.747 4.802 4.942 5.220 5.621 6.036 6.307 6.318 6.061 5.643 5.218 4.907 4.739 4.662 4.594 4.478 4.314 4.149 4.046
+ 8.195 8.446 8.646 8.517 8.137 7.935 8.317 9.259 10.249 10.645 10.167 9.100 8.065 7.540 7.561 7.797 7.895 7.776 7.646 7.769 8.229 8.874 9.449 9.760 9.739 9.419 8.885 8.277 7.769 7.510 7.512 7.609 7.557 7.227 6.732 6.363
+ 6.443 6.691 6.778 6.331 5.464 4.794 4.952 6.009 7.345 8.077 7.719 6.514 5.209 4.465 4.424 4.730 4.918 4.810 4.589 4.571 4.921 5.543 6.198 6.670 6.852 6.720 6.304 5.699 5.094 4.719 4.715 5.029 5.445 5.744 5.851 5.851
+ 2.814 3.398 4.137 4.526 4.381 3.947 3.656 3.751 4.124 4.453 4.500 4.273 3.958 3.725 3.618 3.602 3.679 3.915 4.346 4.887 5.367 5.676 5.864 6.082 6.391 6.650 6.618 6.189 5.557 5.116 5.167 5.682 6.337 6.787 6.926 6.901
+ 3.946 4.013 4.145 4.340 4.592 4.884 5.171 5.376 5.414 5.226 4.827 4.333 3.927 3.798 4.043 4.616 5.332 5.947 6.280 6.299 6.134 5.991 6.028 6.259 6.555 6.740 6.715 6.529 6.343 6.316 6.498 6.798 7.062 7.185 7.173 7.123
+ 3.116 3.000 2.924 3.097 3.646 4.525 5.519 6.343 6.755 6.645 6.067 5.222 4.404 3.934 4.050 4.793 5.946 7.077 7.738 7.698 7.097 6.378 6.018 6.223 6.804 7.316 7.388 6.984 6.420 6.116 6.280 6.776 7.256 7.448 7.351 7.193
+ 3.937 4.227 4.545 4.638 4.534 4.571 5.109 6.172 7.331 7.942 7.589 6.382 4.920 3.935 3.879 4.720 6.015 7.191 7.823 7.801 7.328 6.772 6.473 6.554 6.872 7.120 7.050 6.662 6.218 6.048 6.297 6.809 7.251 7.377 7.217 7.020
+ 2.520 3.264 4.172 4.621 4.522 4.370 4.733 5.669 6.614 6.857 6.164 4.985 4.080 3.926 4.423 5.101 5.566 5.761 5.857 5.973 6.064 6.051 5.995 6.069 6.328 6.549 6.377 5.682 4.788 4.279 4.522 5.323 6.064 6.230 5.842 5.405
+ 4.860 4.554 4.149 3.917 4.019 4.419 4.946 5.425 5.775 5.995 6.094 6.021 5.707 5.144 4.462 3.887 3.630 3.753 4.143 4.588 4.904 5.029 5.015 4.950 4.888 4.828 4.754 4.681 4.653 4.707 4.825 4.928 4.933 4.811 4.626 4.490
+ 5.489 5.867 6.299 6.409 6.079 5.525 5.094 4.967 5.031 5.020 4.779 4.399 4.120 4.094 4.245 4.339 4.211 3.916 3.692 3.746 4.078 4.474 4.675 4.565 4.248 3.943 3.831 3.943 4.178 4.387 4.463 4.374 4.152 3.869 3.610 3.456
+ 5.352 5.500 5.626 5.552 5.262 4.911 4.675 4.594 4.555 4.437 4.253 4.137 4.202 4.391 4.513 4.412 4.138 3.918 3.960 4.252 4.552 4.583 4.262 3.763 3.369 3.251 3.370 3.559 3.688 3.736 3.746 3.716 3.584 3.308 2.961 2.715
+ 4.566 4.577 4.539 4.413 4.248 4.156 4.202 4.334 4.428 4.407 4.318 4.269 4.303 4.328 4.199 3.880 3.523 3.359 3.489 3.778 3.952 3.829 3.478 3.146 3.035 3.133 3.261 3.276 3.221 3.266 3.492 3.749 3.747 3.329 2.662 2.155
+ 4.091 4.504 5.047 5.367 5.287 4.900 4.451 4.134 3.968 3.860 3.750 3.693 3.793 4.069 4.376 4.493 4.293 3.870 3.491 3.410 3.691 4.164 4.548 4.637 4.414 4.024 3.657 3.428 3.331 3.289 3.219 3.083 2.897 2.705 2.550 2.466
+ 4.372 4.568 4.870 5.128 5.188 4.983 4.593 4.220 4.074 4.228 4.561 4.827 4.819 4.500 4.012 3.566 3.316 3.295 3.450 3.704 3.988 4.231 4.352 4.294 4.077 3.812 3.632 3.590 3.607 3.538 3.298 2.940 2.621 2.472 2.490 2.557
+ 5.565 5.160 4.606 4.222 4.167 4.352 4.559 4.620 4.529 4.384 4.257 4.114 3.874 3.516 3.145 2.923 2.948 3.176 3.461 3.678 3.805 3.917 4.089 4.320 4.532 4.640 4.626 4.542 4.461 4.415 4.383 4.324 4.220 4.089 3.971 3.902
+ 6.098 6.229 6.324 6.234 5.996 5.823 5.899 6.185 6.425 6.365 5.968 5.449 5.086 4.997 5.087 5.194 5.259 5.365 5.601 5.931 6.208 6.343 6.434 6.711 7.300 8.031 8.493 8.320 7.489 6.386 5.568 5.423 5.966 6.889 7.779 8.306
+ 4.781 4.966 5.223 5.412 5.463 5.395 5.261 5.092 4.909 4.754 4.696 4.757 4.851 4.804 4.501 4.022 3.633 3.588 3.916 4.375 4.655 4.660 4.621 4.897 5.630 6.554 7.142 7.004 6.197 5.200 4.584 4.633 5.221 5.986 6.601 6.918
+ 6.525 6.852 7.212 7.278 6.974 6.546 6.351 6.546 6.948 7.168 6.912 6.196 5.324 4.658 4.390 4.471 4.705 4.915 5.023 5.046 5.034 5.039 5.115 5.313 5.634 5.990 6.210 6.132 5.708 5.058 4.415 3.999 3.903 4.069 4.332 4.517
+ 5.936 6.012 6.048 5.903 5.529 5.042 4.668 4.605 4.864 5.236 5.413 5.200 4.664 4.090 3.787 3.871 4.204 4.524 4.653 4.598 4.499 4.470 4.516 4.574 4.622 4.712 4.889 5.064 5.026 4.607 3.891 3.242 3.089 3.585 4.443 5.095
+ 3.922 4.731 5.786 6.383 6.181 5.419 4.683 4.444 4.738 5.200 5.402 5.174 4.685 4.251 4.074 4.126 4.244 4.300 4.302 4.336 4.454 4.618 4.749 4.824 4.900 5.039 5.209 5.257 5.014 4.446 3.736 3.206 3.121 3.508 4.115 4.559
+ 7.123 7.300 7.443 7.314 6.876 6.368 6.155 6.451 7.117 7.707 7.745 7.059 5.915 4.855 4.350 4.511 5.048 5.512 5.601 5.322 4.911 4.617 4.537 4.609 4.734 4.875 5.046 5.221 5.289 5.121 4.704 4.200 3.859 3.827 4.031 4.235
+ 6.363 6.917 7.450 7.328 6.429 5.282 4.639 4.873 5.684 6.365 6.365 5.681 4.790 4.232 4.222 4.580 4.959 5.133 5.094 4.962 4.835 4.749 4.720 4.786 4.968 5.205 5.362 5.330 5.125 4.886 4.751 4.731 4.713 4.583 4.357 4.175
+ 6.679 6.289 5.660 5.078 4.861 5.187 5.937 6.711 7.064 6.810 6.148 5.501 5.184 5.183 5.227 5.078 4.769 4.566 4.710 5.183 5.711 6.003 5.975 5.773 5.586 5.466 5.342 5.178 5.097 5.281 5.748 6.225 6.308 5.802 4.948 4.295
+ 5.131 5.360 5.635 5.737 5.586 5.308 5.150 5.294 5.719 6.200 6.459 6.338 5.897 5.353 4.938 4.762 4.786 4.896 5.009 5.130 5.319 5.607 5.939 6.186 6.227 6.044 5.748 5.529 5.542 5.817 6.232 6.587 6.724 6.615 6.375 6.189
+ 6.162 6.030 5.871 5.776 5.729 5.638 5.486 5.400 5.560 5.986 6.445 6.592 6.267 5.673 5.249 5.316 5.797 6.269 6.319 5.896 5.364 5.189 5.556 6.219 6.713 6.736 6.357 5.923 5.763 5.955 6.322 6.620 6.719 6.647 6.517 6.428
+ 5.397 5.523 5.625 5.554 5.321 5.118 5.182 5.599 6.218 6.750 6.967 6.847 6.556 6.295 6.151 6.062 5.920 5.698 5.498 5.473 5.704 6.126 6.558 6.814 6.815 6.611 6.337 6.124 6.045 6.097 6.239 6.416 6.590 6.736 6.842 6.897
+ 3.634 3.165 2.642 2.581 3.223 4.388 5.637 6.575 7.040 7.078 6.814 6.370 5.882 5.527 5.457 5.671 5.970 6.090 5.927 5.657 5.606 5.963 6.577 7.049 7.045 6.570 5.963 5.619 5.695 6.031 6.350 6.505 6.566 6.676 6.872 7.036
+ 2.732 2.844 3.070 3.393 3.767 4.133 4.457 4.736 4.964 5.102 5.096 4.942 4.737 4.646 4.773 5.057 5.294 5.293 5.063 4.842 4.927 5.428 6.147 6.700 6.795 6.439 5.912 5.545 5.488 5.651 5.842 5.950 6.007 6.100 6.246 6.365
+ 2.813 3.095 3.662 4.401 5.036 5.271 5.047 4.647 4.486 4.753 5.218 5.432 5.155 4.610 4.299 4.535 5.124 5.515 5.313 4.669 4.179 4.369 5.216 6.152 6.539 6.194 5.485 4.972 4.928 5.183 5.386 5.381 5.319 5.434 5.751 6.034
+ 4.207 3.926 3.690 3.820 4.305 4.809 5.010 4.925 4.884 5.173 5.694 5.997 5.689 4.834 3.951 3.605 3.938 4.573 4.962 4.856 4.471 4.224 4.326 4.613 4.749 4.573 4.248 4.083 4.225 4.537 4.754 4.746 4.616 4.557 4.637 4.747
+ 3.067 3.889 4.948 5.562 5.498 5.101 4.921 5.198 5.670 5.852 5.512 4.884 4.451 4.506 4.903 5.205 5.075 4.543 3.941 3.601 3.600 3.766 3.879 3.856 3.761 3.678 3.620 3.554 3.490 3.500 3.635 3.833 3.936 3.828 3.564 3.343
+ 4.797 4.257 3.541 3.096 3.114 3.417 3.638 3.526 3.129 2.719 2.562 2.738 3.129 3.557 3.905 4.140 4.256 4.236 4.083 3.877 3.758 3.830 4.050 4.235 4.181 3.830 3.327 2.924 2.800 2.942 3.172 3.278 3.153 2.842 2.495 2.272
+ 3.778 3.761 3.763 3.825 3.957 4.105 4.168 4.048 3.727 3.299 2.930 2.762 2.822 3.004 3.152 3.172 3.107 3.097 3.261 3.591 3.940 4.116 4.010 3.670 3.268 2.993 2.945 3.094 3.322 3.493 3.512 3.351 3.047 2.680 2.353 2.161
+ 4.119 4.279 4.414 4.339 4.047 3.724 3.580 3.658 3.814 3.869 3.789 3.704 3.764 3.970 4.148 4.109 3.823 3.459 3.243 3.282 3.501 3.743 3.907 3.993 4.026 3.973 3.764 3.397 3.010 2.809 2.899 3.166 3.357 3.285 3.001 2.748
+ 3.791 4.096 4.463 4.598 4.373 3.903 3.435 3.164 3.133 3.271 3.497 3.774 4.075 4.339 4.470 4.427 4.273 4.148 4.143 4.222 4.250 4.132 3.922 3.798 3.921 4.295 4.761 5.126 5.313 5.394 5.492 5.653 5.817 5.896 5.874 5.823
+ 4.590 4.044 3.407 3.215 3.647 4.394 4.922 4.895 4.397 3.807 3.471 3.471 3.647 3.804 3.888 3.975 4.145 4.375 4.568 4.656 4.655 4.619 4.565 4.462 4.300 4.163 4.191 4.460 4.881 5.250 5.403 5.357 5.281 5.335 5.523 5.692
+ 1.850 2.253 2.824 3.268 3.430 3.365 3.238 3.170 3.171 3.201 3.276 3.477 3.857 4.343 4.735 4.849 4.672 4.386 4.235 4.334 4.574 4.710 4.544 4.074 3.479 2.997 2.785 2.853 3.100 3.376 3.535 3.468 3.138 2.614 2.069 1.721
+ 3.606 3.611 3.609 3.586 3.535 3.460 3.377 3.306 3.276 3.322 3.484 3.788 4.208 4.651 4.964 5.009 4.750 4.300 3.875 3.672 3.737 3.935 4.041 3.905 3.564 3.219 3.080 3.206 3.461 3.616 3.518 3.197 2.819 2.552 2.445 2.432
+ 5.259 4.738 4.081 3.734 3.829 4.085 4.051 3.509 2.681 2.080 2.128 2.846 3.841 4.596 4.811 4.546 4.107 3.789 3.698 3.752 3.818 3.832 3.821 3.834 3.869 3.869 3.775 3.586 3.356 3.151 2.993 2.853 2.685 2.476 2.269 2.137
+ 3.815 3.770 3.786 3.958 4.247 4.493 4.544 4.393 4.170 4.024 3.979 3.941 3.811 3.617 3.503 3.596 3.860 4.106 4.135 3.910 3.591 3.402 3.458 3.688 3.923 4.036 4.015 3.918 3.779 3.576 3.284 2.946 2.674 2.558 2.585 2.650
+ 5.799 5.191 4.441 4.094 4.327 4.816 5.018 4.618 3.780 3.002 2.735 3.067 3.716 4.276 4.486 4.338 3.989 3.604 3.285 3.084 3.036 3.148 3.365 3.582 3.707 3.737 3.750 3.820 3.928 3.963 3.812 3.468 3.046 2.691 2.482 2.400
+ 5.991 5.421 4.689 4.279 4.365 4.685 4.784 4.393 3.652 2.992 2.798 3.135 3.732 4.221 4.390 4.286 4.097 3.979 3.954 3.956 3.924 3.857 3.782 3.703 3.591 3.427 3.254 3.158 3.206 3.367 3.515 3.494 3.227 2.767 2.284 1.976
+ 5.096 4.759 4.387 4.316 4.609 4.977 4.993 4.456 3.587 2.909 2.875 3.531 4.476 5.138 5.167 4.648 3.994 3.626 3.687 3.998 4.244 4.230 3.983 3.677 3.456 3.337 3.250 3.158 3.110 3.177 3.342 3.451 3.319 2.887 2.319 1.917
+ 4.516 3.948 3.328 3.261 3.943 4.987 5.714 5.673 4.974 4.173 3.835 4.111 4.669 4.992 4.790 4.189 3.589 3.334 3.470 3.769 3.956 3.924 3.774 3.668 3.667 3.681 3.577 3.324 3.032 2.857 2.855 2.922 2.882 2.639 2.280 2.013
+ 3.573 3.132 2.626 2.515 2.982 3.786 4.428 4.514 4.018 3.284 2.772 2.757 3.196 3.823 4.354 4.641 4.682 4.531 4.222 3.790 3.324 2.984 2.917 3.130 3.448 3.610 3.450 3.033 2.616 2.465 2.656 3.023 3.291 3.289 3.072 2.867
+ 4.180 4.174 4.233 4.436 4.775 5.114 5.234 4.969 4.339 3.590 3.064 2.996 3.347 3.833 4.125 4.070 3.779 3.502 3.408 3.459 3.473 3.316 3.042 2.857 2.940 3.284 3.684 3.898 3.818 3.525 3.191 2.938 2.773 2.639 2.511 2.422
+ 2.807 3.218 3.900 4.636 5.215 5.469 5.292 4.660 3.700 2.718 2.110 2.167 2.863 3.825 4.532 4.647 4.226 3.663 3.387 3.563 4.005 4.351 4.348 4.014 3.571 3.252 3.140 3.159 3.184 3.150 3.064 2.959 2.847 2.721 2.595 2.512
+ 2.510 3.014 3.726 4.293 4.558 4.598 4.542 4.400 4.077 3.573 3.106 3.004 3.421 4.162 4.800 5.010 4.807 4.477 4.271 4.179 4.003 3.644 3.283 3.243 3.640 4.191 4.395 3.969 3.127 2.415 2.239 2.504 2.718 2.465 1.812 1.252
+ 4.825 4.710 4.387 3.837 3.256 2.952 3.076 3.439 3.634 3.394 2.857 2.482 2.669 3.411 4.289 4.811 4.788 4.411 4.018 3.780 3.632 3.453 3.276 3.284 3.591 4.046 4.303 4.114 3.564 3.006 2.738 2.732 2.676 2.304 1.688 1.204
+ 5.905 5.570 5.127 4.864 4.919 5.159 5.267 4.971 4.256 3.417 2.872 2.884 3.372 3.972 4.303 4.226 3.923 3.718 3.803 4.100 4.343 4.315 4.030 3.705 3.568 3.668 3.847 3.887 3.690 3.333 2.986 2.766 2.672 2.630 2.587 2.550
+ 4.297 4.625 5.109 5.533 5.778 5.817 5.626 5.125 4.276 3.241 2.419 2.235 2.828 3.884 4.813 5.144 4.835 4.246 3.806 3.679 3.704 3.631 3.393 3.160 3.145 3.363 3.598 3.607 3.347 3.014 2.846 2.905 3.034 3.037 2.883 2.723
+ 4.846 4.996 5.207 5.357 5.367 5.243 5.059 4.907 4.837 4.837 4.862 4.869 4.862 4.896 5.056 5.407 5.943 6.554 7.049 7.225 6.970 6.340 5.552 4.904 4.636 4.821 5.341 5.960 6.436 6.627 6.517 6.192 5.777 5.382 5.087 4.930
+ 5.889 5.912 6.033 6.296 6.624 6.858 6.902 6.824 6.791 6.892 7.007 6.896 6.440 5.835 5.537 5.954 7.120 8.612 9.781 10.139 9.614 8.540 7.419 6.663 6.461 6.787 7.473 8.262 8.875 9.089 8.846 8.290 7.688 7.263 7.077 7.039
+ 3.477 3.491 3.619 3.922 4.294 4.490 4.316 3.823 3.310 3.120 3.384 3.923 4.400 4.602 4.610 4.733 5.242 6.127 7.049 7.545 7.311 6.394 5.182 4.195 3.833 4.199 5.067 6.002 6.568 6.523 5.917 5.038 4.241 3.750 3.570 3.552
+ 1.728 1.928 2.275 2.685 3.058 3.273 3.212 2.840 2.298 1.910 2.010 2.681 3.617 4.281 4.301 3.789 3.304 3.418 4.229 5.239 5.722 5.306 4.270 3.314 2.992 3.302 3.769 3.912 3.654 3.319 3.259 3.484 3.669 3.500 3.017 2.594
+ 3.350 3.351 3.327 3.261 3.169 3.091 3.056 3.064 3.107 3.215 3.451 3.852 4.354 4.782 4.952 4.800 4.454 4.156 4.096 4.282 4.547 4.683 4.589 4.325 4.038 3.848 3.793 3.851 3.991 4.184 4.370 4.447 4.311 3.955 3.512 3.206
+ 4.428 4.133 3.777 3.680 4.031 4.737 5.455 5.826 5.747 5.480 5.457 5.919 6.659 7.150 6.965 6.187 5.408 5.302 6.075 7.271 8.113 8.097 7.369 6.560 6.251 6.531 7.006 7.215 7.027 6.693 6.525 6.568 6.573 6.292 5.771 5.349
+ 2.877 3.222 3.700 4.118 4.504 5.050 5.856 6.753 7.413 7.660 7.640 7.660 7.854 8.034 7.932 7.589 7.472 8.101 9.492 10.960 11.563 10.863 9.334 8.011 7.666 8.212 8.868 8.899 8.256 7.521 7.269 7.475 7.560 7.004 5.933 5.064
+ 5.684 5.668 5.665 5.777 6.151 6.844 7.689 8.335 8.523 8.349 8.248 8.641 9.516 10.383 10.681 10.312 9.801 9.868 10.759 11.965 12.603 12.163 10.955 9.837 9.469 9.780 10.110 9.885 9.173 8.579 8.621 9.188 9.623 9.364 8.506 7.748
+ 7.932 7.993 8.006 7.900 7.772 7.853 8.314 9.110 9.998 10.721 11.183 11.446 11.599 11.653 11.578 11.446 11.462 11.827 12.510 13.185 13.443 13.111 12.400 11.728 11.351 11.159 10.828 10.186 9.441 9.043 9.269 9.942 10.552 10.679 10.350 9.984
+ 10.422 10.704 11.134 11.555 11.902 12.223 12.592 13.023 13.454 13.809 14.052 14.176 14.166 13.997 13.703 13.422 13.336 13.520 13.830 13.985 13.791 13.330 12.894 12.691 12.596 12.206 11.218 9.819 8.684 8.508 9.426 10.811 11.698 11.519 10.551 9.686
+ 12.183 12.317 12.542 12.815 13.152 13.616 14.253 15.014 15.738 16.215 16.303 16.018 15.539 15.126 14.996 15.209 15.641 16.040 16.159 15.888 15.314 14.650 14.082 13.630 13.143 12.442 11.517 10.615 10.099 10.172 10.665 11.085 10.937 10.086 8.908 8.065
+ 12.554 12.543 12.518 12.508 12.602 12.954 13.708 14.866 16.192 17.251 17.632 17.227 16.363 15.644 15.574 16.215 17.147 17.788 17.811 17.350 16.825 16.548 16.458 16.195 15.448 14.271 13.079 12.338 12.207 12.427 12.527 12.157 11.299 10.220 9.275 8.737
+ 11.909 11.931 11.988 12.107 12.333 12.760 13.515 14.651 16.013 17.198 17.738 17.430 16.551 15.755 15.639 16.313 17.310 17.950 17.863 17.242 16.612 16.332 16.277 15.985 15.124 13.846 12.693 12.142 12.201 12.407 12.236 11.517 10.525 9.688 9.230 9.080
+ 12.514 12.436 12.357 12.378 12.575 13.017 13.781 14.896 16.216 17.363 17.881 17.556 16.664 15.870 15.791 16.523 17.548 18.136 17.923 17.182 16.540 16.401 16.580 16.494 15.726 14.449 13.313 12.894 13.192 13.627 13.521 12.624 11.250 9.958 9.114 8.749
+ 12.505 12.606 12.738 12.844 12.990 13.365 14.167 15.397 16.761 17.766 18.018 17.520 16.723 16.252 16.470 17.202 17.867 17.923 17.297 16.436 15.933 16.025 16.397 16.445 15.795 14.637 13.591 13.218 13.575 14.167 14.313 13.615 12.178 10.478 9.049 8.256
+ 13.057 13.257 13.443 13.451 13.425 13.754 14.728 16.194 17.570 18.245 18.048 17.389 16.930 17.067 17.624 18.033 17.802 16.918 15.844 15.162 15.151 15.615 16.054 16.014 15.362 14.335 13.383 12.911 13.061 13.611 14.048 13.799 12.556 10.514 8.366 6.989
+ 13.588 13.674 13.799 13.970 14.319 15.005 16.014 17.058 17.714 17.745 17.308 16.862 16.797 17.105 17.365 17.084 16.122 14.837 13.851 13.610 14.082 14.808 15.219 14.975 14.116 12.969 11.952 11.390 11.388 11.783 12.171 12.064 11.147 9.525 7.756 6.600
+ 14.418 13.706 12.894 12.696 13.347 14.439 15.291 15.510 15.256 15.016 15.119 15.453 15.599 15.234 14.421 13.539 12.949 12.735 12.734 12.793 12.951 13.362 14.022 14.594 14.553 13.582 11.894 10.194 9.250 9.368 10.170 10.827 10.618 9.417 7.793 6.649
+ 14.067 13.920 13.634 13.190 12.546 11.735 10.973 10.634 11.028 12.120 13.427 14.258 14.163 13.261 12.163 11.524 11.569 11.979 12.233 12.110 11.912 12.181 13.138 14.322 14.799 13.838 11.549 8.966 7.426 7.669 9.297 11.010 11.483 10.283 8.169 6.564
+ 14.145 13.835 13.375 12.908 12.426 11.843 11.221 10.877 11.189 12.212 13.480 14.239 13.991 12.908 11.726 11.175 11.419 11.981 12.226 11.968 11.650 11.927 12.992 14.265 14.732 13.717 11.453 9.015 7.618 7.812 9.142 10.493 10.849 9.943 8.387 7.221
+ 13.936 13.722 13.415 13.066 12.542 11.689 10.651 9.975 10.263 11.612 13.350 14.415 14.141 12.797 11.390 10.854 11.317 12.088 12.347 11.926 11.452 11.730 12.918 14.259 14.624 13.433 11.166 9.056 8.212 8.869 10.299 11.375 11.325 10.162 8.576 7.477
+ 13.851 13.674 13.436 13.157 12.635 11.650 10.351 9.392 9.529 10.951 12.939 14.265 14.094 12.641 10.999 10.256 10.649 11.491 11.895 11.626 11.288 11.683 12.940 14.248 14.441 12.977 10.458 8.248 7.512 8.418 10.089 11.267 11.132 9.750 7.925 6.675
+ 13.791 13.674 13.465 13.121 12.498 11.539 10.498 9.937 10.358 11.716 13.277 14.055 13.532 12.069 10.637 10.052 10.379 11.004 11.283 11.162 11.177 11.845 13.028 13.887 13.526 11.779 9.452 7.788 7.592 8.684 10.082 10.706 10.052 8.402 6.561 5.380
+ 14.151 13.432 12.762 12.937 13.993 15.139 15.458 14.736 13.646 13.125 13.547 14.429 14.906 14.494 13.438 12.397 11.833 11.713 11.736 11.759 11.931 12.405 12.972 13.084 12.321 10.856 9.458 8.933 9.497 10.599 11.363 11.235 10.301 9.083 8.095 7.583
+ 13.551 13.131 12.765 13.011 14.053 15.517 16.715 17.114 16.686 15.894 15.351 15.420 16.014 16.695 16.968 16.561 15.556 14.332 13.370 13.026 13.348 14.030 14.554 14.460 13.624 12.355 11.236 10.784 11.129 11.927 12.550 12.444 11.431 9.798 8.148 7.122
+ 12.237 12.494 12.896 13.379 14.046 15.049 16.329 17.465 17.886 17.323 16.124 15.120 15.055 16.013 17.319 18.008 17.525 16.112 14.612 13.847 14.068 14.855 15.470 15.377 14.536 13.350 12.363 11.951 12.149 12.664 13.009 12.722 11.598 9.841 8.033 6.885
+ 12.956 12.875 12.854 13.110 13.825 15.003 16.379 17.469 17.784 17.130 15.810 14.538 14.078 14.764 16.249 17.665 18.153 17.420 15.931 14.594 14.141 14.633 15.458 15.800 15.222 13.945 12.638 11.905 11.879 12.203 12.347 11.999 11.216 10.301 9.561 9.168
+ 13.638 13.092 12.564 12.718 13.778 15.344 16.685 17.233 16.881 15.931 14.817 13.902 13.450 13.650 14.540 15.856 17.006 17.332 16.562 15.088 13.779 13.385 13.978 14.865 15.079 14.093 12.211 10.352 9.418 9.708 10.789 11.849 12.237 11.827 11.008 10.385
+ 13.051 12.787 12.589 12.806 13.477 14.272 14.747 14.673 14.137 13.377 12.547 11.668 10.792 10.178 10.213 11.107 12.616 14.084 14.843 14.669 13.920 13.240 13.065 13.327 13.573 13.367 12.638 11.708 11.011 10.776 10.903 11.091 11.078 10.808 10.427 10.158
+ 11.708 10.885 9.842 9.336 9.727 10.740 11.700 12.005 11.495 10.460 9.368 8.580 8.233 8.326 8.808 9.580 10.431 11.041 11.131 10.672 9.956 9.444 9.461 9.979 10.645 11.049 11.006 10.661 10.327 10.222 10.291 10.264 9.878 9.106 8.216 7.620
+ 8.322 8.447 8.546 8.515 8.478 8.735 9.484 10.541 11.353 11.348 10.383 8.930 7.814 7.664 8.482 9.647 10.359 10.185 9.330 8.434 8.106 8.508 9.300 9.919 9.962 9.400 8.514 7.652 7.025 6.652 6.458 6.383 6.426 6.582 6.791 6.941
+ 7.375 7.489 7.435 7.045 6.627 6.833 8.077 10.014 11.621 11.901 10.665 8.735 7.372 7.367 8.529 9.916 10.592 10.272 9.397 8.684 8.586 9.068 9.778 10.354 10.612 10.523 10.129 9.511 8.829 8.293 8.066 8.140 8.347 8.489 8.498 8.450
+ 7.246 6.998 6.636 6.403 6.567 7.286 8.474 9.752 10.586 10.556 9.633 8.251 7.112 6.781 7.348 8.361 9.114 9.103 8.349 7.366 6.807 7.030 7.873 8.792 9.230 8.957 8.164 7.284 6.704 6.566 6.758 7.061 7.297 7.407 7.423 7.409
+ 7.107 7.554 8.180 8.673 8.927 9.094 9.406 9.933 10.503 10.844 10.815 10.520 10.207 10.076 10.148 10.314 10.467 10.593 10.743 10.948 11.188 11.455 11.816 12.397 13.256 14.263 15.109 15.468 15.194 14.409 13.409 12.490 11.811 11.382 11.141 11.033
+ 6.122 6.758 7.710 8.567 9.095 9.341 9.516 9.774 10.090 10.318 10.347 10.202 10.008 9.873 9.811 9.775 9.753 9.820 10.089 10.611 11.325 12.111 12.883 13.636 14.397 15.132 15.702 15.927 15.711 15.120 14.359 13.666 13.195 12.969 12.911 12.917
+ 7.312 7.308 7.321 7.363 7.429 7.510 7.622 7.787 7.990 8.135 8.101 7.866 7.591 7.568 8.020 8.911 9.945 10.778 11.294 11.692 12.309 13.304 14.488 15.444 15.849 15.722 15.386 15.195 15.265 15.442 15.495 15.346 15.123 15.005 15.044 15.128
+ 7.998 7.997 8.250 8.958 9.970 10.822 11.102 10.804 10.343 10.186 10.460 10.885 11.093 11.008 10.938 11.280 12.132 13.186 13.985 14.308 14.323 14.377 14.658 15.041 15.250 15.150 14.887 14.735 14.840 15.100 15.285 15.265 15.106 14.973 14.949 14.982
+ 11.341 11.387 11.471 11.522 11.390 10.941 10.198 9.399 8.859 8.750 8.982 9.307 9.563 9.828 10.339 11.239 12.390 13.445 14.102 14.326 14.330 14.342 14.402 14.373 14.144 13.810 13.627 13.775 14.163 14.472 14.414 13.975 13.412 13.024 12.908 12.934
+ 14.284 14.704 15.002 14.547 13.157 11.275 9.656 8.847 8.875 9.351 9.852 10.227 10.612 11.202 12.022 12.895 13.579 13.932 13.943 13.678 13.216 12.654 12.137 11.826 11.801 11.976 12.147 12.138 11.946 11.737 11.698 11.884 12.182 12.427 12.539 12.559
+ 14.453 14.415 14.195 13.716 13.135 12.744 12.662 12.657 12.324 11.504 10.543 10.091 10.577 11.810 13.084 13.726 13.594 13.113 12.821 12.882 12.992 12.742 12.056 11.278 10.844 10.875 11.097 11.145 10.928 10.698 10.764 11.151 11.563 11.678 11.468 11.215
+ 17.038 16.669 15.951 14.993 14.028 13.313 12.944 12.764 12.482 11.932 11.263 10.861 11.047 11.791 12.682 13.211 13.125 12.592 12.036 11.799 11.902 12.085 12.044 11.674 11.110 10.594 10.283 10.176 10.168 10.161 10.122 10.073 10.034 10.010 9.992 9.981
+ 16.986 16.570 15.847 14.997 14.210 13.587 13.086 12.570 11.938 11.260 10.764 10.686 11.072 11.715 12.280 12.525 12.432 12.160 11.869 11.607 11.338 11.063 10.883 10.901 11.079 11.201 11.024 10.508 9.891 9.513 9.525 9.732 9.748 9.336 8.644 8.110
+ 17.500 16.798 15.754 14.824 14.249 13.943 13.659 13.234 12.710 12.245 11.937 11.745 11.577 11.432 11.419 11.630 11.986 12.229 12.102 11.568 10.866 10.357 10.257 10.497 10.797 10.896 10.725 10.409 10.120 9.928 9.765 9.513 9.119 8.639 8.204 7.946
+ 15.508 15.596 15.525 15.044 14.146 13.096 12.225 11.681 11.379 11.164 10.992 10.949 11.093 11.311 11.364 11.096 10.602 10.161 9.998 10.081 10.162 10.031 9.712 9.433 9.388 9.533 9.632 9.496 9.185 8.937 8.909 8.973 8.814 8.234 7.408 6.797
+ 14.223 13.870 13.293 12.627 11.898 11.042 10.069 9.189 8.776 9.112 10.128 11.342 12.108 12.021 11.184 10.140 9.508 9.573 10.133 10.682 10.792 10.387 9.745 9.254 9.129 9.292 9.489 9.505 9.298 8.985 8.702 8.491 8.298 8.066 7.815 7.645
+ 14.205 13.488 12.479 11.659 11.170 10.749 10.073 9.169 8.519 8.709 9.907 11.624 12.968 13.242 12.407 11.083 10.088 9.897 10.388 11.033 11.319 11.070 10.478 9.884 9.518 9.392 9.368 9.299 9.123 8.868 8.592 8.337 8.116 7.931 7.793 7.717
+ 10.845 10.535 10.187 10.038 9.993 9.677 8.822 7.642 6.820 7.054 8.516 10.660 12.550 13.434 13.142 12.062 10.789 9.774 9.193 9.020 9.144 9.409 9.617 9.591 9.292 8.882 8.616 8.625 8.778 8.777 8.417 7.784 7.193 6.925 6.990 7.145
+ 10.398 10.398 10.510 10.791 11.074 11.011 10.322 9.080 7.767 7.022 7.234 8.271 9.557 10.430 10.536 9.988 9.200 8.572 8.256 8.156 8.106 8.045 8.036 8.155 8.357 8.475 8.335 7.908 7.343 6.861 6.595 6.509 6.452 6.306 6.083 5.913
+ 7.112 7.319 7.665 8.038 8.310 8.338 7.995 7.232 6.190 5.231 4.823 5.270 6.470 7.889 8.832 8.856 8.039 6.902 6.056 5.812 6.048 6.379 6.480 6.285 5.962 5.717 5.631 5.639 5.638 5.587 5.520 5.487 5.493 5.508 5.508 5.498
+ 6.143 6.405 6.729 6.865 6.688 6.266 5.775 5.357 5.052 4.850 4.792 4.997 5.549 6.350 7.082 7.368 7.038 6.301 5.646 5.521 5.999 6.710 7.087 6.778 5.893 4.926 4.387 4.451 4.874 5.228 5.249 5.021 4.850 4.969 5.326 5.635
+ 4.691 4.899 5.267 5.657 5.851 5.665 5.113 4.447 4.010 3.993 4.316 4.735 5.081 5.402 5.859 6.495 7.112 7.410 7.268 6.894 6.670 6.824 7.227 7.511 7.411 7.002 6.604 6.452 6.449 6.259 5.658 4.794 4.101 3.923 4.204 4.535
+ 5.750 5.230 4.770 4.964 5.832 6.766 7.052 6.489 5.527 4.834 4.734 5.038 5.361 5.566 5.869 6.529 7.483 8.335 8.709 8.596 8.340 8.266 8.355 8.311 7.946 7.455 7.250 7.497 7.826 7.596 6.509 5.000 3.968 4.025 4.940 5.803
+ 5.873 5.138 4.357 4.319 5.241 6.600 7.572 7.681 7.104 6.419 6.099 6.206 6.495 6.747 6.964 7.281 7.748 8.244 8.613 8.832 9.014 9.240 9.429 9.414 9.170 8.912 8.918 9.198 9.373 8.947 7.786 6.356 5.438 5.506 6.311 7.058
+ 6.374 5.866 5.293 5.166 5.649 6.474 7.225 7.695 7.993 8.318 8.682 8.875 8.712 8.302 8.046 8.331 9.195 10.275 11.068 11.294 11.024 10.533 10.048 9.652 9.368 9.265 9.404 9.679 9.762 9.308 8.285 7.113 6.423 6.564 7.296 7.947
+ 8.907 8.636 8.358 8.383 8.824 9.514 10.148 10.497 10.536 10.382 10.156 9.900 9.635 9.460 9.561 10.090 10.996 11.982 12.647 12.722 12.226 11.433 10.675 10.156 9.885 9.765 9.713 9.719 9.796 9.907 9.930 9.726 9.236 8.547 7.872 7.455
+ 7.268 7.340 7.457 7.593 7.754 7.993 8.393 9.020 9.862 10.784 11.553 11.931 11.813 11.333 10.844 10.747 11.252 12.216 13.189 13.669 13.414 12.592 11.655 11.038 10.884 11.011 11.123 11.067 10.931 10.903 11.036 11.141 10.936 10.307 9.475 8.883
+ 8.361 8.050 7.649 7.451 7.640 8.211 9.033 9.981 11.006 12.076 13.049 13.641 13.583 12.872 11.922 11.411 11.859 13.225 14.843 15.802 15.545 14.246 12.678 11.655 11.482 11.811 12.004 11.685 11.009 10.475 10.452 10.860 11.265 11.290 10.947 10.600
+ 8.685 8.312 7.967 8.110 8.870 9.929 10.784 11.165 11.254 11.498 12.186 13.136 13.802 13.738 13.027 12.315 12.354 13.403 14.971 16.135 16.201 15.202 13.834 12.899 12.694 12.862 12.767 12.087 11.085 10.377 10.387 11.000 11.683 11.957 11.776 11.502
+ 8.392 8.822 9.358 9.630 9.542 9.348 9.447 10.068 11.108 12.233 13.104 13.564 13.649 13.507 13.323 13.288 13.558 14.167 14.944 15.554 15.686 15.282 14.577 13.922 13.493 13.174 12.715 12.032 11.350 11.040 11.276 11.830 12.220 12.112 11.605 11.149
+ 9.564 9.699 9.871 9.956 9.892 9.744 9.706 10.009 10.783 11.947 13.189 14.100 14.394 14.105 13.609 13.405 13.791 14.631 15.418 15.622 15.072 14.099 13.288 13.034 13.236 13.405 13.090 12.290 11.484 11.242 11.729 12.529 12.960 12.627 11.760 11.038
+ 11.267 11.479 11.821 12.176 12.459 12.674 12.916 13.307 13.888 14.548 15.044 15.146 14.808 14.256 13.886 14.023 14.677 15.499 15.983 15.800 15.027 14.090 13.445 13.243 13.237 13.011 12.370 11.554 11.085 11.342 12.198 13.035 13.160 12.336 11.002 10.006
+ 12.025 12.225 12.520 12.811 13.120 13.579 14.300 15.243 16.202 16.913 17.212 17.103 16.726 16.281 15.966 15.935 16.243 16.772 17.235 17.293 16.772 15.807 14.763 13.974 13.489 13.076 12.486 11.758 11.255 11.355 12.045 12.811 12.966 12.205 10.909 9.920
+ 12.034 12.338 12.700 12.892 12.972 13.271 14.107 15.451 16.868 17.795 17.934 17.443 16.796 16.446 16.567 17.040 17.617 18.089 18.335 18.283 17.894 17.191 16.292 15.365 14.535 13.832 13.253 12.861 12.789 13.096 13.583 13.797 13.297 12.019 10.441 9.353
+ 11.773 12.111 12.595 13.005 13.301 13.674 14.405 15.594 16.990 18.074 18.377 17.821 16.825 16.063 16.031 16.726 17.679 18.300 18.291 17.789 17.172 16.705 16.331 15.778 14.872 13.760 12.856 12.534 12.833 13.400 13.726 13.464 12.616 11.479 10.452 9.858
+ 12.288 12.679 13.191 13.543 13.724 14.030 14.804 16.080 17.450 18.295 18.214 17.342 16.285 15.726 15.982 16.830 17.710 18.137 17.995 17.538 17.113 16.862 16.620 16.088 15.118 13.903 12.907 12.586 13.078 14.072 14.935 15.044 14.124 12.420 10.598 9.432
+ 12.271 12.851 13.550 13.917 13.988 14.276 15.256 16.825 18.251 18.727 18.042 16.795 15.946 16.088 17.027 18.015 18.368 17.962 17.220 16.677 16.542 16.591 16.411 15.742 14.639 13.417 12.472 12.130 12.518 13.479 14.541 15.060 14.549 13.034 11.156 9.869
+ 12.311 13.077 13.987 14.452 14.532 14.885 16.040 17.726 18.951 18.840 17.469 15.909 15.381 16.261 17.795 18.760 18.465 17.226 15.981 15.462 15.676 16.061 16.040 15.423 14.378 13.164 12.000 11.148 10.970 11.712 13.114 14.314 14.314 12.760 10.384 8.625
+ 12.862 13.434 14.221 14.868 15.370 16.027 17.044 18.184 18.867 18.670 17.766 16.862 16.638 17.171 17.860 17.920 17.038 15.609 14.415 14.018 14.401 15.067 15.437 15.170 14.251 12.897 11.497 10.566 10.602 11.761 13.571 15.007 15.063 13.486 11.095 9.342
+ 13.335 13.596 14.194 15.172 16.403 17.555 18.225 18.182 17.564 16.842 16.541 16.871 17.551 17.978 17.641 16.482 14.934 13.614 12.927 12.881 13.205 13.610 13.930 14.055 13.823 13.075 11.889 10.749 10.371 11.195 12.918 14.521 14.892 13.653 11.532 9.925
+ 13.078 13.531 14.457 15.758 17.106 18.010 18.080 17.328 16.245 15.525 15.602 16.317 17.004 16.962 15.969 14.441 13.100 12.421 12.325 12.354 12.165 11.863 11.858 12.365 13.049 13.220 12.468 11.188 10.434 11.101 13.069 15.095 15.643 14.090 11.328 9.208
+ 12.630 13.484 14.941 16.522 17.646 17.862 17.130 15.904 14.928 14.782 15.481 16.434 16.821 16.160 14.634 12.940 11.770 11.337 11.308 11.200 10.854 10.578 10.817 11.630 12.494 12.660 11.823 10.518 9.842 10.617 12.657 14.752 15.488 14.313 12.020 10.233
+ 12.463 13.471 15.039 16.494 17.267 17.152 16.378 15.459 14.908 14.956 15.436 15.887 15.835 15.086 13.844 12.562 11.630 11.122 10.813 10.449 10.044 9.902 10.323 11.209 11.977 11.929 10.870 9.426 8.728 9.587 11.782 14.065 14.990 13.976 11.797 10.067
+ 12.446 13.588 15.213 16.445 16.740 16.161 15.231 14.527 14.338 14.586 14.975 15.197 15.059 14.508 13.618 12.559 11.533 10.692 10.078 9.666 9.468 9.578 10.054 10.728 11.146 10.820 9.666 8.267 7.621 8.449 10.553 12.792 13.809 13.025 11.120 9.573
+ 12.054 13.431 15.255 16.371 16.216 15.116 13.893 13.198 13.139 13.433 13.799 14.164 14.533 14.748 14.480 13.506 11.989 10.460 9.474 9.244 9.568 10.056 10.411 10.473 10.108 9.167 7.683 6.125 5.329 5.985 8.015 10.419 11.868 11.662 10.286 9.050
+ 11.819 13.269 15.151 16.207 15.849 14.489 13.082 12.327 12.227 12.309 12.206 12.031 12.201 12.924 13.866 14.335 13.837 12.515 11.094 10.364 10.625 11.496 12.208 12.102 10.998 9.234 7.437 6.215 5.922 6.558 7.793 9.110 10.041 10.383 10.281 10.087
+ 12.017 13.266 14.882 15.769 15.413 14.192 12.968 12.366 12.315 12.240 11.665 10.706 10.015 10.227 11.400 12.907 13.891 13.900 13.201 12.533 12.506 13.125 13.780 13.705 12.534 10.569 8.588 7.372 7.266 8.056 9.163 9.999 10.254 9.978 9.477 9.111
+ 11.946 12.925 14.191 14.882 14.582 13.551 12.436 11.727 11.446 11.266 10.900 10.383 10.015 10.045 10.436 10.915 11.249 11.477 11.881 12.708 13.890 15.007 15.510 15.052 13.692 11.861 10.142 9.024 8.725 9.146 9.936 10.656 10.968 10.800 10.364 10.012
+ 11.767 13.019 14.487 14.953 13.981 12.192 10.665 10.042 10.117 10.201 9.840 9.201 8.821 9.031 9.629 10.101 10.135 9.918 9.955 10.614 11.832 13.195 14.261 14.799 14.774 14.225 13.242 12.078 11.178 10.972 11.526 12.382 12.831 12.459 11.511 10.721
+ 11.936 12.924 14.065 14.377 13.520 12.017 10.756 10.250 10.290 10.255 9.732 8.880 8.232 8.173 8.596 9.039 9.134 8.950 8.917 9.437 10.536 11.843 12.861 13.280 13.100 12.544 11.912 11.482 11.457 11.892 12.605 13.206 13.293 12.743 11.855 11.191
+ 12.596 13.559 14.578 14.626 13.429 11.660 10.322 9.894 10.020 9.946 9.284 8.347 7.809 8.036 8.740 9.264 9.212 8.811 8.698 9.343 10.636 11.982 12.772 12.804 12.326 11.769 11.448 11.480 11.857 12.514 13.289 13.887 13.991 13.500 12.687 12.073
+ 13.158 13.884 14.646 14.654 13.687 12.248 11.110 10.666 10.671 10.554 9.984 9.155 8.561 8.521 8.889 9.236 9.269 9.117 9.202 9.855 11.015 12.267 13.147 13.440 13.257 12.904 12.704 12.890 13.550 14.576 15.617 16.161 15.800 14.549 12.955 11.851
+ 13.658 14.059 14.437 14.318 13.594 12.591 11.751 11.239 10.837 10.215 9.311 8.447 8.070 8.362 9.083 9.769 10.127 10.246 10.484 11.134 12.171 13.277 14.078 14.374 14.226 13.878 13.642 13.799 14.503 15.659 16.864 17.517 17.149 15.778 14.023 12.807
+ 13.660 14.156 14.644 14.553 13.723 12.516 11.483 10.899 10.596 10.212 9.585 8.924 8.596 8.754 9.171 9.449 9.398 9.246 9.469 10.396 11.910 13.495 14.567 14.832 14.427 13.802 13.472 13.786 14.797 16.225 17.527 18.096 17.562 16.060 14.255 13.037
+ 14.084 14.470 14.834 14.693 13.885 12.679 11.552 10.817 10.439 10.160 9.788 9.372 9.121 9.163 9.389 9.547 9.500 9.396 9.607 10.439 11.856 13.442 14.618 14.992 14.592 13.858 13.408 13.711 14.843 16.423 17.766 18.200 17.413 15.656 13.679 12.386
+ 14.149 14.471 14.771 14.640 13.927 12.855 11.841 11.180 10.856 10.616 10.227 9.682 9.187 8.969 9.075 9.348 9.592 9.773 10.071 10.734 11.834 13.142 14.213 14.661 14.417 13.817 13.427 13.726 14.809 16.302 17.515 17.799 16.887 15.073 13.100 11.829
+ 13.986 14.368 14.764 14.736 14.120 13.135 12.181 11.514 11.075 10.611 9.960 9.238 8.754 8.738 9.128 9.609 9.880 9.928 10.059 10.651 11.820 13.258 14.400 14.788 14.390 13.646 13.199 13.504 14.551 15.868 16.778 16.760 15.704 13.969 12.216 11.127
+ 13.719 14.187 14.753 14.951 14.534 13.613 12.522 11.552 10.791 10.166 9.621 9.228 9.130 9.371 9.788 10.101 10.133 9.991 10.033 10.620 11.827 13.331 14.567 15.063 14.736 13.961 13.365 13.474 14.404 15.770 16.864 17.018 15.960 13.995 11.893 10.549
+ 13.208 13.894 14.764 15.183 14.806 13.759 12.459 11.282 10.378 9.721 9.283 9.110 9.243 9.581 9.892 9.977 9.862 9.811 10.141 10.984 12.190 13.418 14.339 14.763 14.676 14.210 13.636 13.324 13.598 14.500 15.623 16.227 15.681 13.947 11.757 10.243
+ 12.931 13.730 14.781 15.365 15.059 13.941 12.447 11.038 9.960 9.247 8.856 8.768 8.953 9.295 9.606 9.751 9.779 9.916 10.401 11.305 12.480 13.656 14.589 15.140 15.260 14.972 14.408 13.846 13.631 13.958 14.659 15.216 15.085 14.113 12.737 11.743
+ 12.523 13.565 14.885 15.529 15.028 13.629 11.985 10.649 9.817 9.454 9.513 9.968 10.646 11.136 11.012 10.234 9.320 9.046 9.849 11.460 13.101 14.104 14.395 14.413 14.599 14.959 15.133 14.875 14.412 14.276 14.745 15.460 15.653 14.848 13.384 12.233
+ 12.311 13.437 14.807 15.381 14.768 13.425 12.148 11.381 10.980 10.567 10.045 9.706 9.868 10.440 10.936 10.934 10.538 10.343 10.905 12.207 13.641 14.525 14.655 14.392 14.226 14.295 14.332 14.071 13.643 13.512 14.002 14.886 15.503 15.345 14.553 13.834
+ 11.530 12.531 13.790 14.435 14.119 13.185 12.239 11.601 11.158 10.667 10.122 9.775 9.808 10.072 10.222 10.133 10.135 10.743 12.094 13.668 14.634 14.578 13.902 13.491 13.890 14.780 15.253 14.685 13.372 12.320 12.366 13.434 14.630 15.074 14.671 14.110
+ 11.024 12.296 13.912 14.761 14.393 13.239 12.100 11.441 11.146 10.845 10.413 10.080 10.098 10.389 10.589 10.479 10.321 10.671 11.813 13.357 14.465 14.553 13.814 13.056 12.968 13.509 13.999 13.819 13.048 12.421 12.633 13.682 14.872 15.459 15.316 14.963
+ 10.810 12.063 13.743 14.791 14.625 13.451 11.986 10.903 10.453 10.475 10.667 10.813 10.821 10.664 10.373 10.116 10.190 10.842 12.009 13.251 14.005 14.000 13.481 13.007 12.989 13.372 13.747 13.787 13.583 13.566 14.070 14.983 15.811 16.114 15.898 15.583
+ 11.597 12.744 14.213 15.001 14.670 13.576 12.455 11.807 11.603 11.513 11.307 11.035 10.850 10.761 10.631 10.428 10.407 10.955 12.170 13.624 14.586 14.597 13.871 13.130 12.999 13.487 14.035 14.079 13.596 13.122 13.252 14.095 15.202 15.995 16.262 16.237
+ 11.492 12.847 14.576 15.497 15.104 13.828 12.536 11.786 11.520 11.359 11.099 10.887 10.946 11.223 11.404 11.285 11.090 11.340 12.330 13.738 14.792 14.898 14.162 13.296 12.990 13.337 13.839 13.969 13.723 13.597 14.045 14.961 15.719 15.766 15.164 14.555
+ 12.614 13.667 14.940 15.456 14.851 13.567 12.372 11.702 11.428 11.181 10.822 10.560 10.638 10.975 11.193 11.041 10.742 10.884 11.867 13.462 14.902 15.492 15.173 14.524 14.212 14.415 14.759 14.785 14.453 14.180 14.387 15.028 15.599 15.617 15.112 14.605
+ 12.573 13.797 15.306 15.977 15.357 13.920 12.569 11.878 11.745 11.686 11.389 10.984 10.806 10.975 11.251 11.320 11.197 11.290 12.027 13.385 14.799 15.562 15.378 14.578 13.826 13.600 13.894 14.364 14.692 14.819 14.860 14.870 14.753 14.404 13.905 13.529
+ 13.303 14.313 15.520 15.959 15.261 13.882 12.643 12.043 11.933 11.796 11.293 10.570 10.057 10.015 10.295 10.530 10.549 10.603 11.149 12.407 14.083 15.520 16.149 15.870 15.064 14.293 13.945 14.090 14.555 15.093 15.477 15.530 15.160 14.435 13.618 13.076
+ 13.724 14.550 15.500 15.742 14.968 13.582 12.319 11.643 11.465 11.357 11.007 10.480 10.075 9.992 10.146 10.313 10.416 10.650 11.309 12.488 13.945 15.239 16.015 16.179 15.870 15.317 14.758 14.433 14.552 15.147 15.906 16.219 15.527 13.785 11.655 10.193
+ 13.871 14.530 15.270 15.401 14.652 13.347 12.096 11.315 10.975 10.757 10.415 9.995 9.736 9.800 10.109 10.444 10.687 10.958 11.513 12.502 13.804 15.078 15.952 16.213 15.873 15.141 14.355 13.902 14.073 14.867 15.872 16.395 15.861 14.247 12.227 10.835
+ 14.107 14.506 14.919 14.882 14.223 13.175 12.164 11.479 11.101 10.808 10.431 10.013 9.747 9.776 10.060 10.433 10.776 11.144 11.721 12.645 13.852 15.057 15.880 16.030 15.452 14.376 13.264 12.646 12.877 13.903 15.201 15.991 15.676 14.252 12.393 11.099
+ 14.265 14.493 14.678 14.505 13.870 12.960 12.092 11.470 11.077 10.750 10.377 9.996 9.751 9.753 9.997 10.400 10.900 11.520 12.316 13.286 14.301 15.137 15.555 15.393 14.639 13.485 12.329 11.680 11.926 13.059 14.551 15.554 15.376 13.966 12.030 10.660
+ 14.258 14.315 14.316 14.112 13.615 12.871 12.040 11.305 10.770 10.410 10.128 9.861 9.659 9.665 10.001 10.660 11.486 12.284 12.946 13.509 14.055 14.562 14.818 14.535 13.584 12.197 10.952 10.491 11.142 12.667 14.332 15.284 15.015 13.657 11.927 10.747
+ 14.177 14.073 13.934 13.774 13.465 12.831 11.853 10.782 9.988 9.682 9.742 9.854 9.833 9.811 10.107 10.872 11.869 12.631 12.865 12.731 12.690 13.038 13.550 13.599 12.702 11.035 9.444 8.907 9.847 11.809 13.755 14.706 14.293 12.867 11.219 10.155
+ 13.993 13.825 13.642 13.523 13.294 12.662 11.546 10.280 9.412 9.256 9.617 9.992 10.065 10.014 10.302 11.138 12.151 12.653 12.286 11.444 10.996 11.508 12.650 13.375 12.775 10.904 8.849 7.956 8.844 10.978 13.100 14.098 13.647 12.222 10.662 9.691
+ 13.722 13.709 13.670 13.525 13.111 12.318 11.242 10.206 9.555 9.391 9.510 9.630 9.703 9.977 10.715 11.797 12.655 12.678 11.783 10.615 10.116 10.744 12.021 12.831 12.291 10.500 8.539 7.703 8.580 10.662 12.746 13.744 13.302 11.854 10.232 9.207
+ 13.574 13.668 13.732 13.579 13.080 12.252 11.285 10.433 9.861 9.553 9.390 9.322 9.471 10.035 11.029 12.113 12.716 12.443 11.440 10.385 10.033 10.629 11.658 12.190 11.580 10.001 8.387 7.810 8.747 10.767 12.823 13.902 13.586 12.196 10.533 9.441
+ 13.493 13.708 13.927 13.864 13.343 12.429 11.395 10.553 10.059 9.837 9.708 9.604 9.675 10.165 11.130 12.253 12.964 12.841 11.982 11.016 10.680 11.240 12.229 12.735 12.079 10.375 8.550 7.762 8.636 10.833 13.233 14.596 14.262 12.485 10.253 8.748
+ 13.590 13.834 14.105 14.102 13.638 12.764 11.752 10.922 10.436 10.209 10.033 9.803 9.662 9.910 10.719 11.886 12.872 13.153 12.627 11.748 11.222 11.463 12.231 12.757 12.315 10.819 8.995 7.966 8.511 10.513 12.962 14.533 14.366 12.567 10.155 8.483
+ 13.704 13.938 14.220 14.276 13.897 13.088 12.087 11.235 10.744 10.560 10.427 10.147 9.808 9.768 10.352 11.514 12.763 13.464 13.327 12.651 12.118 12.237 12.899 13.412 13.036 11.605 9.762 8.587 8.868 10.534 12.651 13.968 13.676 11.882 9.550 7.947
+ 13.560 13.917 14.338 14.433 13.971 13.038 11.979 11.170 10.779 10.677 10.575 10.277 9.867 9.672 10.019 10.961 12.188 13.198 13.631 13.502 13.157 12.982 13.070 13.127 12.700 11.582 10.076 8.894 8.712 9.683 11.250 12.438 12.446 11.180 9.347 8.033
+ 13.590 13.854 14.149 14.164 13.704 12.830 11.827 11.027 10.594 10.428 10.272 9.943 9.515 9.299 9.622 10.549 11.796 12.890 13.491 13.605 13.533 13.570 13.715 13.633 12.925 11.517 9.850 8.698 8.689 9.865 11.579 12.844 12.914 11.746 10.039 8.819
+ 13.576 13.736 13.909 13.875 13.464 12.683 11.743 10.955 10.530 10.429 10.397 10.185 9.776 9.434 9.502 10.115 11.075 11.998 12.625 12.999 13.363 13.834 14.183 13.940 12.785 10.923 9.108 8.241 8.795 10.479 12.372 13.440 13.114 11.586 9.678 8.391
+ 13.232 13.532 13.801 13.663 13.017 12.108 11.313 10.835 10.590 10.347 9.970 9.541 9.255 9.249 9.500 9.904 10.392 10.976 11.684 12.470 13.199 13.698 13.805 13.374 12.299 10.638 8.787 7.476 7.462 8.986 11.403 13.375 13.650 11.938 9.231 7.231
+ 12.835 13.133 13.422 13.324 12.673 11.647 10.644 10.012 9.831 9.900 9.918 9.713 9.346 9.049 9.046 9.417 10.073 10.852 11.630 12.355 12.997 13.458 13.536 13.015 11.833 10.224 8.721 7.940 8.260 9.551 11.169 12.252 12.192 11.007 9.363 8.204
+ 12.940 13.210 13.501 13.452 12.826 11.705 10.511 9.762 9.702 10.086 10.333 9.995 9.162 8.442 8.489 9.446 10.798 11.781 12.013 11.785 11.735 12.205 12.859 12.945 11.985 10.280 8.780 8.382 9.260 10.769 11.963 12.260 11.739 10.900 10.208 9.860
+ 13.039 13.748 14.508 14.532 13.529 11.959 10.682 10.298 10.682 11.113 10.885 9.928 8.909 8.710 9.697 11.366 12.689 12.895 12.059 11.021 10.679 11.249 12.092 12.249 11.258 9.558 8.182 7.980 9.013 10.562 11.701 11.923 11.358 10.512 9.829 9.487
+ 14.213 14.218 14.088 13.660 12.913 12.037 11.341 11.027 11.007 10.940 10.523 9.822 9.325 9.597 10.752 12.215 13.044 12.642 11.297 10.030 9.816 10.766 11.972 12.202 10.900 8.680 6.894 6.615 7.871 9.721 11.039 11.327 10.893 10.386 10.179 10.191
+ 15.143 14.464 13.545 12.912 12.771 12.899 12.875 12.442 11.680 10.894 10.383 10.288 10.595 11.182 11.823 12.185 11.941 11.023 9.801 8.951 8.994 9.835 10.722 10.757 9.613 7.861 6.607 6.691 8.085 9.956 11.321 11.717 11.384 10.884 10.592 10.516
+ 13.506 13.786 14.217 14.570 14.602 14.184 13.406 12.543 11.890 11.588 11.579 11.728 11.955 12.234 12.470 12.407 11.774 10.577 9.273 8.555 8.830 9.794 10.536 10.189 8.649 6.752 5.705 6.200 7.901 9.753 10.800 10.859 10.488 10.362 10.665 11.033
+ 14.450 14.060 13.666 13.654 14.016 14.338 14.170 13.457 12.607 12.156 12.334 12.923 13.470 13.627 13.311 12.607 11.628 10.511 9.519 9.024 9.266 10.043 10.704 10.553 9.412 7.848 6.790 6.824 7.750 8.782 9.232 9.058 8.797 8.993 9.647 10.236
+ 14.238 13.844 13.521 13.721 14.403 15.027 15.039 14.380 13.542 13.111 13.259 13.634 13.723 13.306 12.565 11.809 11.158 10.518 9.858 9.398 9.463 10.087 10.815 10.986 10.294 9.098 8.150 7.937 8.267 8.509 8.267 7.853 8.034 9.275 11.153 12.562
+ 14.291 13.686 13.170 13.438 14.476 15.539 15.830 15.229 14.371 14.015 14.325 14.759 14.623 13.735 12.542 11.632 11.164 10.811 10.233 9.540 9.227 9.629 10.467 11.013 10.744 9.855 9.095 9.038 9.528 9.843 9.461 8.657 8.314 9.072 10.630 11.894
+ 14.287 13.643 13.049 13.224 14.218 15.355 15.863 15.569 15.002 14.817 15.128 15.384 14.917 13.604 12.010 10.882 10.504 10.528 10.403 9.957 9.548 9.655 10.357 11.218 11.685 11.583 11.208 10.951 10.869 10.656 10.050 9.222 8.714 8.939 9.733 10.431
+ 13.944 13.302 12.643 12.658 13.502 14.681 15.521 15.732 15.557 15.405 15.373 15.135 14.309 12.909 11.425 10.439 10.154 10.268 10.307 10.075 9.789 9.811 10.267 10.939 11.496 11.787 11.884 11.858 11.594 10.894 9.814 8.838 8.623 9.456 10.895 11.999
+ 13.561 13.148 12.677 12.596 13.121 14.098 15.123 15.822 16.037 15.831 15.341 14.639 13.730 12.645 11.531 10.618 10.087 9.952 10.041 10.110 10.006 9.762 9.584 9.714 10.265 11.099 11.836 12.009 11.329 9.899 8.259 7.148 7.106 8.120 9.587 10.635
+ 13.604 13.161 12.659 12.579 13.148 14.188 15.258 15.971 16.217 16.143 15.943 15.653 15.133 14.238 13.014 11.737 10.754 10.252 10.137 10.129 9.997 9.736 9.567 9.753 10.371 11.218 11.908 12.092 11.657 10.769 9.766 8.978 8.575 8.530 8.676 8.813
+ 13.686 13.207 12.607 12.384 12.848 13.917 15.151 16.035 16.310 16.123 15.864 15.814 15.888 15.692 14.872 13.454 11.888 10.737 10.266 10.287 10.382 10.298 10.168 10.341 10.993 11.890 12.511 12.457 11.758 10.831 10.125 9.782 9.606 9.337 8.939 8.624
+ 13.535 13.261 12.842 12.554 12.740 13.584 14.880 16.074 16.620 16.404 15.846 15.531 15.673 15.894 15.557 14.378 12.732 11.373 10.792 10.824 10.870 10.522 9.975 9.818 10.405 11.415 12.063 11.795 10.792 9.816 9.506 9.806 10.051 9.651 8.687 7.869
+ 13.382 13.275 12.985 12.603 12.525 13.183 14.562 16.018 16.691 16.242 15.205 14.568 14.892 15.785 16.224 15.483 13.783 12.085 11.214 11.187 11.352 11.175 10.832 10.982 11.961 13.221 13.682 12.715 10.823 9.296 9.102 10.033 10.909 10.700 9.478 8.340
+ 13.142 13.162 13.009 12.656 12.479 13.002 14.315 15.781 16.445 15.863 14.582 13.738 14.075 15.268 16.190 15.907 14.470 12.797 11.794 11.587 11.597 11.304 10.879 10.981 11.938 13.176 13.568 12.464 10.394 8.708 8.407 9.244 9.970 9.514 8.010 6.678
+ 13.028 12.971 12.760 12.464 12.462 13.166 14.530 15.856 16.251 15.396 13.934 13.021 13.372 14.648 15.747 15.753 14.668 13.281 12.359 11.972 11.611 10.913 10.187 10.150 11.107 12.433 12.985 12.120 10.363 9.002 8.935 9.820 10.383 9.620 7.793 6.258
+ 13.131 12.847 12.397 11.993 11.853 12.062 12.461 12.716 12.551 11.982 11.343 11.045 11.259 11.795 12.276 12.435 12.261 11.877 11.333 10.560 9.577 8.699 8.456 9.173 10.567 11.791 11.998 11.013 9.523 8.547 8.601 9.271 9.581 8.874 7.429 6.262
+ 13.528 13.347 13.069 12.829 12.740 12.809 12.902 12.810 12.399 11.725 11.020 10.541 10.403 10.531 10.758 10.956 11.071 11.046 10.775 10.191 9.433 8.907 9.064 10.016 11.305 12.103 11.792 10.479 8.981 8.234 8.549 9.351 9.642 8.845 7.323 6.120
+ 13.518 13.264 12.930 12.733 12.762 12.912 12.957 12.720 12.196 11.550 10.997 10.670 10.577 10.648 10.827 11.075 11.325 11.437 11.261 10.788 10.251 10.047 10.462 11.390 12.303 12.549 11.821 10.421 9.101 8.536 8.835 9.455 9.626 8.962 7.780 6.865
+ 13.673 13.286 12.748 12.444 12.726 13.653 14.855 15.672 15.565 14.527 13.153 12.261 12.343 13.256 14.400 15.201 15.485 15.450 15.353 15.253 15.041 14.670 14.270 13.987 13.733 13.189 12.152 10.912 10.223 10.721 12.244 13.703 13.775 11.956 9.115 7.001
+ 13.339 13.150 12.879 12.758 13.071 13.951 15.164 16.133 16.275 15.439 14.084 13.011 12.817 13.507 14.557 15.350 15.585 15.366 14.957 14.521 14.076 13.648 13.355 13.285 13.299 13.045 12.283 11.237 10.574 10.881 12.041 13.101 12.893 10.993 8.223 6.198
+ 13.376 13.087 12.704 12.549 12.922 13.898 15.193 16.247 16.525 15.864 14.602 13.387 12.777 12.934 13.605 14.351 14.825 14.883 14.542 13.906 13.154 12.554 12.364 12.641 13.112 13.295 12.874 12.006 11.274 11.215 11.790 12.285 11.814 10.072 7.726 6.051
+ 13.540 13.104 12.576 12.430 12.968 14.113 15.418 16.305 16.391 15.682 14.548 13.483 12.853 12.775 13.159 13.822 14.543 15.064 15.126 14.586 13.587 12.566 12.033 12.214 12.839 13.307 13.140 12.372 11.532 11.183 11.386 11.574 10.986 9.346 7.224 5.726
+ 13.730 13.181 12.574 12.522 13.297 14.617 15.824 16.302 15.847 14.724 13.453 12.499 12.085 12.200 12.704 13.400 14.050 14.381 14.184 13.457 12.481 11.712 11.511 11.898 12.519 12.884 12.707 12.096 11.435 11.053 10.932 10.708 9.969 8.637 7.123 6.107
+ 13.384 13.228 13.118 13.309 13.898 14.713 15.379 15.516 14.961 13.867 12.642 11.745 11.475 11.854 12.632 13.422 13.865 13.779 13.222 12.457 11.824 11.564 11.689 11.969 12.066 11.759 11.100 10.405 10.035 10.122 10.428 10.467 9.834 8.524 7.010 5.997
+ 13.214 13.525 13.719 13.389 12.591 11.827 11.567 11.764 11.850 11.265 10.026 8.807 8.418 9.120 10.389 11.318 11.325 10.551 9.660 9.254 9.425 9.775 9.828 9.407 8.714 8.093 7.766 7.756 7.968 8.294 8.613 8.753 8.545 7.959 7.214 6.691
+ 13.193 13.448 13.630 13.359 12.542 11.490 10.701 10.476 10.659 10.753 10.330 9.434 8.607 8.484 9.261 10.469 11.292 11.195 10.347 9.480 9.271 9.762 10.318 10.186 9.170 7.846 7.110 7.444 8.511 9.437 9.516 8.737 7.708 7.081 7.021 7.189
+ 13.285 13.292 13.214 12.930 12.395 11.722 11.149 10.868 10.831 10.724 10.207 9.261 8.329 8.051 8.730 9.991 10.986 11.050 10.280 9.484 9.491 10.376 11.304 11.198 9.691 7.540 6.097 6.258 7.771 9.469 10.219 9.752 8.707 7.935 7.768 7.901
+ 13.264 13.217 13.061 12.721 12.179 11.545 11.023 10.770 10.725 10.594 10.068 9.140 8.242 7.983 8.653 9.895 10.891 10.987 10.251 9.456 9.429 10.296 11.293 11.362 10.059 8.007 6.472 6.394 7.680 9.330 10.248 10.040 9.143 8.298 7.901 7.837
+ 13.365 13.174 12.878 12.536 12.112 11.555 10.954 10.521 10.378 10.341 10.007 9.159 8.117 7.613 8.191 9.612 10.895 11.071 10.054 8.805 8.555 9.685 11.293 11.884 10.652 8.236 6.256 6.009 7.453 9.336 10.303 9.972 9.056 8.528 8.702 9.093
+ 13.529 13.277 12.888 12.468 12.018 11.484 10.896 10.404 10.134 10.013 9.793 9.311 8.754 8.590 9.156 10.235 11.092 11.043 10.090 9.042 8.884 9.903 11.335 11.904 10.873 8.700 6.739 6.203 7.270 9.033 10.297 10.469 9.837 9.098 8.700 8.609
+ 14.271 13.583 12.790 12.544 13.002 13.721 14.078 13.794 13.086 12.372 11.871 11.502 11.148 10.935 11.191 12.078 13.292 14.189 14.278 13.644 12.877 12.551 12.714 12.878 12.506 11.562 10.592 10.271 10.822 11.817 12.526 12.465 11.691 10.643 9.774 9.314
+ 13.722 12.998 12.287 12.411 13.548 15.052 15.954 15.710 14.541 13.167 12.198 11.762 11.604 11.474 11.389 11.541 12.025 12.692 13.281 13.665 13.930 14.193 14.389 14.270 13.656 12.715 11.940 11.810 12.403 13.298 13.861 13.676 12.782 11.573 10.514 9.919
+ 13.618 13.061 12.508 12.618 13.598 15.006 16.052 16.149 15.278 13.927 12.700 11.943 11.636 11.564 11.556 11.589 11.717 11.968 12.323 12.774 13.356 14.080 14.815 15.273 15.166 14.456 13.474 12.777 12.800 13.521 14.409 14.715 13.942 12.198 10.189 8.858
+ 13.355 13.001 12.682 12.879 13.779 15.090 16.171 16.431 15.688 14.279 12.831 11.873 11.555 11.655 11.821 11.853 11.812 11.914 12.331 13.064 13.957 14.800 15.405 15.626 15.369 14.665 13.754 13.075 13.051 13.767 14.789 15.318 14.684 12.856 10.589 9.033
+ 13.245 13.015 12.848 13.119 13.983 15.201 16.210 16.447 15.707 14.293 12.839 11.903 11.643 11.803 11.988 12.003 11.958 12.099 12.538 13.159 13.757 14.238 14.656 15.043 15.246 15.014 14.312 13.556 13.442 14.377 15.962 17.040 16.444 13.931 10.576 8.204
+ 13.211 12.975 12.841 13.206 14.172 15.392 16.247 16.233 15.294 13.855 12.546 11.807 11.662 11.799 11.861 11.712 11.480 11.399 11.613 12.104 12.768 13.513 14.259 14.862 15.099 14.809 14.120 13.515 13.577 14.527 15.902 16.710 16.062 13.868 11.060 9.111
+ 13.219 13.019 12.937 13.336 14.281 15.405 16.102 15.914 14.840 13.343 12.050 11.362 11.261 11.411 11.466 11.318 11.121 11.109 11.404 11.957 12.645 13.382 14.115 14.737 15.053 14.903 14.381 13.908 14.013 14.901 16.150 16.850 16.186 14.084 11.425 9.584
+ 13.178 13.101 13.184 13.669 14.529 15.402 15.790 15.387 14.293 12.942 11.823 11.195 11.000 10.992 10.955 10.837 10.720 10.713 10.879 11.250 11.861 12.735 13.784 14.751 15.295 15.212 14.656 14.120 14.147 14.911 15.999 16.593 16.011 14.223 11.988 10.453
+ 13.037 13.097 13.359 13.919 14.633 15.127 15.028 14.238 13.022 11.834 11.023 10.651 10.542 10.487 10.401 10.325 10.316 10.361 10.428 10.572 10.969 11.777 12.937 14.092 14.768 14.697 14.070 13.467 13.475 14.251 15.336 15.913 15.342 13.634 11.528 10.091
+ 12.074 12.564 13.316 13.996 14.330 14.212 13.704 12.954 12.109 11.271 10.514 9.903 9.494 9.298 9.252 9.242 9.170 9.041 9.005 9.299 10.107 11.404 12.890 14.082 14.555 14.206 13.369 12.668 12.651 13.421 14.506 15.110 14.614 13.021 11.032 9.668
+ 11.268 11.036 10.843 10.938 11.269 11.486 11.243 10.509 9.584 8.818 8.315 7.913 7.433 6.929 6.666 6.842 7.339 7.805 7.989 8.034 8.385 9.377 10.848 12.172 12.713 12.332 11.520 11.022 11.279 12.119 12.922 13.089 12.426 11.211 9.976 9.217
+ 9.987 10.150 10.121 9.580 8.629 7.783 7.540 7.917 8.396 8.344 7.540 6.363 5.464 5.244 5.580 6.002 6.127 5.953 5.780 5.906 6.388 7.058 7.725 8.311 8.813 9.178 9.280 9.038 8.563 8.144 8.055 8.346 8.820 9.212 9.395 9.432
+ 8.609 8.924 9.270 9.339 9.054 8.564 8.018 7.371 6.472 5.334 4.288 3.801 4.074 4.808 5.396 5.411 4.948 4.505 4.513 4.952 5.424 5.590 5.539 5.703 6.401 7.452 8.254 8.295 7.614 6.800 6.513 6.971 7.840 8.598 8.973 9.061
+ 6.003 6.521 7.331 8.119 8.647 8.816 8.616 8.046 7.116 5.926 4.734 3.901 3.697 4.118 4.843 5.411 5.487 5.060 4.421 3.967 3.957 4.375 4.971 5.419 5.505 5.240 4.858 4.686 4.957 5.644 6.426 6.839 6.548 5.584 4.383 3.562
+ 6.139 6.452 6.982 7.593 8.150 8.503 8.464 7.865 6.718 5.330 4.218 3.811 4.144 4.808 5.235 5.123 4.636 4.226 4.237 4.628 5.060 5.232 5.134 4.992 4.996 5.105 5.139 5.045 5.033 5.382 6.084 6.685 6.573 5.509 3.947 2.799
+ 5.593 5.897 6.440 7.101 7.709 8.077 8.056 7.619 6.910 6.209 5.786 5.736 5.910 6.033 5.923 5.641 5.437 5.522 5.863 6.208 6.316 6.201 6.151 6.474 7.193 7.969 8.349 8.136 7.553 7.042 6.876 6.921 6.782 6.198 5.333 4.685
+ 8.196 8.210 8.122 7.906 7.771 8.045 8.848 9.878 10.576 10.561 9.975 9.393 9.362 9.968 10.799 11.328 11.351 11.097 10.945 11.073 11.361 11.614 11.831 12.215 12.908 13.744 14.300 14.232 13.589 12.785 12.256 12.103 12.075 11.867 11.453 11.104
+ 6.444 7.385 8.720 9.775 10.224 10.257 10.323 10.700 11.276 11.691 11.699 11.391 11.115 11.174 11.590 12.115 12.462 12.529 12.442 12.418 12.601 12.999 13.548 14.181 14.842 15.443 15.847 15.933 15.678 15.185 14.623 14.122 13.720 13.399 13.152 13.009
+ 11.344 11.771 12.433 13.030 13.288 13.081 12.486 11.727 11.054 10.621 10.440 10.423 10.467 10.500 10.477 10.356 10.109 9.777 9.510 9.520 9.946 10.734 11.637 12.362 12.769 12.971 13.232 13.753 14.503 15.218 15.577 15.408 14.786 13.966 13.241 12.826
+ 12.477 12.855 13.565 14.433 15.126 15.271 14.680 13.512 12.206 11.204 10.673 10.441 10.191 9.744 9.207 8.869 8.962 9.485 10.227 10.926 11.424 11.695 11.774 11.699 11.524 11.378 11.465 11.956 12.839 13.855 14.592 14.697 14.076 12.957 11.793 11.062
+ 12.667 12.985 13.597 14.409 15.219 15.716 15.590 14.723 13.333 11.927 11.018 10.778 10.905 10.860 10.330 9.552 9.180 9.761 11.229 12.859 13.764 13.544 12.558 11.596 11.247 11.512 11.954 12.202 12.294 12.534 13.038 13.447 13.161 11.917 10.175 8.910
+ 12.056 12.455 13.134 13.928 14.674 15.194 15.266 14.709 13.567 12.219 11.218 10.906 11.127 11.336 11.097 10.525 10.262 10.899 12.362 13.827 14.332 13.582 12.226 11.325 11.458 12.266 12.859 12.683 12.042 11.753 12.268 13.112 13.233 11.991 9.872 8.233
+ 11.177 11.666 12.553 13.653 14.694 15.338 15.288 14.453 13.084 11.720 10.900 10.802 11.111 11.276 11.002 10.552 10.558 11.436 12.912 14.123 14.270 13.304 12.008 11.384 11.824 12.819 13.454 13.258 12.604 12.301 12.730 13.370 13.200 11.663 9.324 7.574
+ 11.401 11.840 12.548 13.276 13.795 13.950 13.661 12.953 12.002 11.117 10.605 10.563 10.788 10.939 10.864 10.788 11.148 12.148 13.442 14.287 14.114 13.051 11.904 11.532 12.138 13.097 13.521 13.059 12.216 11.850 12.309 12.992 12.813 11.203 8.765 6.947
+ 9.453 9.057 8.753 9.036 9.885 10.681 10.672 9.594 7.911 6.471 5.865 6.025 6.392 6.478 6.316 6.406 7.205 8.624 9.985 10.498 9.878 8.590 7.523 7.350 8.083 9.144 9.863 9.975 9.724 9.543 9.609 9.671 9.301 8.320 7.056 6.162
+ 10.924 9.964 8.743 8.084 8.281 8.898 9.170 8.637 7.477 6.293 5.595 5.452 5.568 5.662 5.749 6.081 6.823 7.814 8.627 8.887 8.555 7.944 7.470 7.376 7.637 8.077 8.543 8.973 9.331 9.518 9.378 8.795 7.810 6.642 5.610 5.007
+ 8.248 7.756 7.157 6.916 7.214 7.801 8.180 7.988 7.267 6.432 5.966 6.074 6.582 7.116 7.412 7.494 7.577 7.821 8.151 8.312 8.106 7.591 7.051 6.768 6.783 6.877 6.785 6.445 6.064 5.911 6.038 6.177 5.945 5.184 4.164 3.434
+ 4.519 5.496 7.015 8.446 9.306 9.484 9.245 9.014 9.096 9.527 10.115 10.625 10.948 11.146 11.345 11.600 11.835 11.912 11.744 11.367 10.900 10.447 10.033 9.622 9.195 8.795 8.496 8.318 8.185 7.969 7.590 7.090 6.605 6.263 6.099 6.052
+ 5.168 5.942 7.068 7.984 8.342 8.200 7.917 7.853 8.107 8.490 8.726 8.719 8.635 8.754 9.209 9.850 10.354 10.486 10.286 10.010 9.886 9.908 9.859 9.560 9.100 8.822 9.043 9.744 10.514 10.839 10.502 9.767 9.169 9.088 9.450 9.826
+ 6.553 6.777 7.188 7.701 8.193 8.559 8.763 8.853 8.905 8.944 8.916 8.756 8.482 8.219 8.125 8.254 8.506 8.701 8.729 8.644 8.608 8.731 8.963 9.133 9.116 8.964 8.890 9.098 9.606 10.212 10.623 10.647 10.302 9.770 9.279 8.994
+ 8.608 8.323 7.967 7.806 7.960 8.333 8.721 8.981 9.127 9.261 9.442 9.601 9.614 9.445 9.240 9.248 9.628 10.297 10.955 11.289 11.198 10.868 10.624 10.683 11.002 11.336 11.452 11.318 11.113 11.051 11.181 11.330 11.246 10.824 10.229 9.797
+ 9.560 9.737 9.909 9.885 9.656 9.445 9.549 10.100 10.929 11.655 11.931 11.682 11.159 10.776 10.848 11.411 12.221 12.930 13.289 13.267 13.029 12.797 12.714 12.779 12.884 12.914 12.830 12.691 12.595 12.592 12.627 12.573 12.321 11.874 11.381 11.057
+ 12.448 12.154 11.640 11.050 10.568 10.366 10.520 10.956 11.457 11.764 11.735 11.454 11.196 11.260 11.751 12.485 13.098 13.294 13.049 12.618 12.341 12.383 12.638 12.839 12.794 12.538 12.285 12.233 12.393 12.591 12.619 12.400 12.033 11.683 11.459 11.366
+ 13.972 14.116 14.242 14.144 13.729 13.098 12.500 12.151 12.078 12.087 11.928 11.530 11.111 11.053 11.599 12.615 13.623 14.108 13.874 13.172 12.494 12.211 12.328 12.561 12.613 12.426 12.176 12.063 12.115 12.175 12.081 11.845 11.642 11.640 11.825 12.008
+ 14.825 15.765 16.802 16.985 16.058 14.631 13.585 13.286 13.331 13.019 12.082 10.993 10.560 11.209 12.599 13.899 14.445 14.190 13.611 13.217 13.158 13.241 13.244 13.166 13.189 13.415 13.714 13.826 13.607 13.164 12.738 12.487 12.366 12.239 12.055 11.906
+ 14.776 15.089 15.298 14.951 13.975 12.767 11.886 11.603 11.716 11.771 11.491 11.027 10.833 11.263 12.261 13.373 14.072 14.112 13.650 13.069 12.691 12.603 12.692 12.805 12.884 12.962 13.092 13.267 13.412 13.432 13.262 12.895 12.379 11.812 11.321 11.035
+ 13.285 13.877 14.594 14.842 14.326 13.231 12.054 11.225 10.839 10.690 10.554 10.442 10.604 11.261 12.333 13.401 13.974 13.857 13.294 12.759 12.566 12.627 12.567 12.113 11.392 10.877 10.985 11.682 12.444 12.630 11.994 10.888 9.992 9.772 10.137 10.559
+ 12.139 12.506 13.154 13.922 14.609 15.026 15.050 14.684 14.070 13.456 13.102 13.169 13.639 14.325 14.948 15.275 15.205 14.786 14.147 13.409 12.630 11.829 11.045 10.383 9.985 9.948 10.235 10.662 10.975 10.974 10.617 10.026 9.401 8.911 8.617 8.492
+ 14.044 13.962 14.016 14.401 15.031 15.527 15.478 14.774 13.725 12.863 12.593 12.961 13.687 14.411 14.901 15.095 14.985 14.519 13.632 12.374 10.987 9.834 9.195 9.104 9.344 9.603 9.659 9.477 9.149 8.780 8.398 7.966 7.454 6.898 6.408 6.117
+ 14.766 14.698 14.596 14.491 14.357 14.122 13.724 13.177 12.598 12.162 12.012 12.188 12.603 13.081 13.424 13.475 13.152 12.466 11.499 10.384 9.259 8.251 7.468 6.999 6.895 7.135 7.582 7.996 8.127 7.842 7.221 6.523 6.036 5.902 6.031 6.191
+ 14.552 13.680 12.424 11.426 11.066 11.244 11.512 11.431 10.880 10.098 9.462 9.196 9.236 9.326 9.240 8.941 8.552 8.197 7.871 7.455 6.853 6.119 5.455 5.075 5.042 5.229 5.423 5.483 5.426 5.367 5.382 5.426 5.378 5.165 4.856 4.628
+ 10.827 10.053 8.983 8.205 7.977 8.062 7.969 7.374 6.403 5.536 5.250 5.672 6.505 7.261 7.571 7.373 6.847 6.232 5.663 5.162 4.723 4.382 4.205 4.223 4.377 4.547 4.628 4.596 4.503 4.412 4.341 4.248 4.082 3.837 3.579 3.411
+ 8.464 7.956 7.280 6.859 6.882 7.171 7.326 7.043 6.356 5.624 5.273 5.490 6.095 6.674 6.875 6.614 6.083 5.560 5.195 4.954 4.714 4.429 4.182 4.106 4.241 4.469 4.596 4.499 4.223 3.931 3.765 3.739 3.749 3.688 3.553 3.437
+ 6.698 5.993 5.273 5.309 6.257 7.496 8.118 7.644 6.361 5.053 4.394 4.529 5.124 5.738 6.127 6.274 6.213 5.926 5.415 4.826 4.429 4.406 4.669 4.896 4.813 4.439 4.075 4.021 4.288 4.587 4.590 4.230 3.743 3.429 3.383 3.454
+ 5.957 5.790 5.656 5.767 6.130 6.504 6.565 6.152 5.394 4.635 4.205 4.239 4.638 5.174 5.629 5.877 5.884 5.677 5.322 4.912 4.541 4.262 4.075 3.943 3.852 3.836 3.942 4.159 4.389 4.496 4.414 4.204 4.014 3.961 4.038 4.130
+ 5.912 6.005 6.182 6.406 6.597 6.641 6.444 5.995 5.402 4.865 4.588 4.683 5.102 5.664 6.127 6.301 6.112 5.621 4.998 4.450 4.158 4.197 4.495 4.840 4.980 4.761 4.249 3.714 3.482 3.711 4.261 4.758 4.835 4.389 3.676 3.147
+ 7.351 7.060 6.797 6.866 7.217 7.462 7.227 6.514 5.722 5.304 5.392 5.741 6.012 6.110 6.234 6.624 7.276 7.930 8.319 8.415 8.413 8.474 8.536 8.403 8.041 7.736 7.905 8.674 9.664 10.221 9.955 9.094 8.315 8.169 8.620 9.111
+ 14.532 14.689 14.955 15.197 15.221 14.885 14.242 13.560 13.153 13.129 13.284 13.250 12.793 12.002 11.215 10.749 10.682 10.868 11.130 11.425 11.799 12.227 12.529 12.497 12.132 11.726 11.657 12.046 12.603 12.836 12.468 11.702 11.068 10.971 11.353 11.756
+ 18.701 18.400 17.989 17.655 17.387 17.002 16.361 15.566 14.931 14.710 14.849 14.983 14.709 13.906 12.833 11.929 11.508 11.597 12.018 12.591 13.235 13.909 14.491 14.769 14.573 13.929 13.070 12.271 11.672 11.232 10.853 10.524 10.346 10.404 10.633 10.836
+ 16.487 16.092 15.564 15.190 15.039 14.926 14.625 14.086 13.466 12.941 12.509 11.990 11.229 10.308 9.527 9.171 9.282 9.642 9.996 10.297 10.715 11.420 12.328 13.078 13.275 12.794 11.884 10.977 10.387 10.143 10.065 9.971 9.818 9.676 9.602 9.586
+ 12.660 12.964 13.336 13.439 13.028 12.100 10.894 9.774 9.038 8.777 8.850 8.991 8.964 8.683 8.238 7.822 7.625 7.767 8.274 9.102 10.153 11.276 12.260 12.865 12.913 12.390 11.494 10.582 10.010 9.956 10.336 10.868 11.248 11.329 11.186 11.028
+ 11.383 12.119 13.163 13.926 14.004 13.389 12.413 11.500 10.909 10.636 10.503 10.328 10.054 9.744 9.500 9.378 9.382 9.498 9.745 10.161 10.756 11.461 12.138 12.636 12.869 12.847 12.657 12.403 12.153 11.921 11.686 11.428 11.153 10.892 10.688 10.575
+ 13.260 13.672 14.272 14.709 14.677 14.067 13.032 11.900 11.000 10.477 10.256 10.142 9.984 9.776 9.624 9.639 9.863 10.292 10.935 11.815 12.883 13.922 14.582 14.564 13.857 12.815 11.980 11.760 12.170 12.842 13.276 13.151 12.480 11.543 10.693 10.202
+ 13.239 13.791 14.541 14.994 14.796 13.921 12.662 11.443 10.590 10.203 10.164 10.268 10.347 10.336 10.255 10.164 10.134 10.247 10.608 11.305 12.334 13.529 14.565 15.076 14.854 14.003 12.953 12.260 12.305 13.042 13.986 14.463 14.011 12.688 11.080 9.991
+ 13.138 13.686 14.414 14.802 14.488 13.476 12.119 10.899 10.154 9.924 9.994 10.091 10.057 9.893 9.682 9.490 9.367 9.418 9.849 10.863 12.454 14.253 15.612 15.936 15.070 13.456 11.919 11.202 11.549 12.601 13.651 14.069 13.629 12.565 11.394 10.647
+ 12.060 12.778 13.750 14.313 13.990 12.770 11.118 9.700 9.003 9.076 9.557 9.957 9.984 9.693 9.375 9.323 9.662 10.354 11.315 12.475 13.717 14.764 15.191 14.638 13.110 11.119 9.502 8.979 9.734 11.293 12.790 13.439 12.936 11.565 10.007 8.998
+ 13.995 13.899 13.641 13.144 12.395 11.479 10.554 9.775 9.219 8.871 8.661 8.528 8.460 8.482 8.615 8.863 9.235 9.780 10.556 11.542 12.531 13.127 12.902 11.669 9.683 7.626 6.318 6.302 7.546 9.434 11.074 11.730 11.162 9.699 8.057 6.996
+ 12.773 11.950 10.703 9.564 8.859 8.564 8.424 8.196 7.826 7.429 7.155 7.072 7.144 7.285 7.404 7.420 7.285 7.027 6.784 6.757 7.046 7.520 7.832 7.645 6.913 5.983 5.403 5.557 6.394 7.467 8.246 8.450 8.158 7.666 7.248 7.030
+ 10.945 10.627 10.086 9.436 8.730 8.001 7.348 6.958 6.976 7.326 7.664 7.585 6.970 6.175 5.859 6.520 8.083 9.882 11.079 11.234 10.585 9.832 9.599 9.997 10.598 10.826 10.430 9.678 9.152 9.315 10.191 11.375 12.333 12.759 12.730 12.574
+ 9.771 9.559 9.200 8.744 8.187 7.518 6.834 6.374 6.380 6.875 7.549 7.915 7.673 7.000 6.498 6.791 8.037 9.760 11.138 11.574 11.114 10.394 10.155 10.693 11.658 12.343 12.232 11.390 10.397 9.924 10.261 11.157 12.066 12.560 12.606 12.487
+ 8.393 8.218 7.950 7.641 7.246 6.700 6.085 5.689 5.829 6.552 7.490 8.060 7.908 7.225 6.650 6.800 7.780 9.093 10.013 10.130 9.630 9.103 9.067 9.594 10.318 10.759 10.678 10.198 9.647 9.313 9.289 9.503 9.817 10.123 10.358 10.485
+ 13.892 13.199 12.267 11.626 11.459 11.512 11.389 10.944 10.420 10.208 10.476 11.004 11.386 11.382 11.111 10.915 11.040 11.440 11.846 12.040 12.034 12.029 12.200 12.530 12.840 12.968 12.910 12.805 12.790 12.882 12.981 12.976 12.840 12.638 12.458 12.358
+ 17.330 16.334 15.174 14.754 15.247 15.989 16.148 15.513 14.649 14.299 14.628 15.047 14.783 13.632 12.184 11.304 11.374 12.001 12.428 12.221 11.594 11.110 11.101 11.397 11.571 11.413 11.126 11.071 11.356 11.705 11.743 11.380 10.903 10.677 10.788 10.986
+ 16.578 16.356 16.167 16.217 16.397 16.336 15.771 14.844 14.036 13.744 13.910 14.062 13.736 12.904 11.995 11.503 11.543 11.788 11.795 11.430 10.957 10.751 10.934 11.286 11.503 11.515 11.525 11.746 12.120 12.320 12.063 11.405 10.727 10.407 10.489 10.682
+ 17.446 16.924 16.213 15.679 15.417 15.228 14.885 14.410 14.059 14.035 14.225 14.233 13.719 12.715 11.626 10.898 10.654 10.639 10.495 10.102 9.660 9.472 9.662 10.100 10.584 11.037 11.518 12.026 12.361 12.227 11.531 10.568 9.867 9.785 10.208 10.641
+ 14.948 14.880 14.936 15.240 15.626 15.725 15.329 14.646 14.172 14.240 14.671 14.864 14.281 12.903 11.243 9.928 9.229 8.956 8.765 8.527 8.418 8.671 9.289 10.040 10.700 11.267 11.879 12.523 12.878 12.538 11.465 10.196 9.547 9.966 11.113 12.072
+ 15.245 14.538 13.829 13.839 14.595 15.391 15.462 14.714 13.804 13.503 13.937 14.443 14.172 12.858 11.046 9.591 8.926 8.776 8.543 7.932 7.214 6.921 7.316 8.179 9.075 9.762 10.319 10.879 11.335 11.375 10.862 10.130 9.825 10.356 11.465 12.361
+ 12.650 12.711 12.887 13.200 13.552 13.743 13.613 13.193 12.731 12.530 12.689 12.964 12.894 12.129 10.737 9.218 8.180 7.912 8.177 8.423 8.246 7.730 7.381 7.691 8.701 9.939 10.791 10.998 10.837 10.851 11.346 12.113 12.619 12.492 11.876 11.323
+ 12.449 11.974 11.297 10.735 10.406 10.192 9.929 9.623 9.460 9.596 9.920 10.049 9.600 8.523 7.201 6.198 5.855 6.060 6.378 6.432 6.208 6.037 6.276 6.973 7.806 8.341 8.387 8.159 8.101 8.512 9.281 9.941 10.010 9.361 8.355 7.615
+ 10.420 10.064 9.531 9.051 8.743 8.558 8.342 7.971 7.439 6.834 6.260 5.766 5.358 5.047 4.872 4.870 5.002 5.149 5.182 5.080 4.981 5.100 5.563 6.275 6.942 7.254 7.101 6.656 6.267 6.217 6.528 6.961 7.201 7.092 6.749 6.460
+ 9.420 8.934 8.303 7.911 7.857 7.875 7.588 6.863 5.957 5.329 5.261 5.624 5.982 5.947 5.487 4.930 4.668 4.826 5.168 5.326 5.132 4.787 4.695 5.119 5.937 6.697 6.952 6.582 5.876 5.313 5.217 5.570 6.081 6.453 6.586 6.584
+ 9.164 8.895 8.433 7.950 7.679 7.805 8.316 8.946 9.294 9.076 8.339 7.466 6.952 7.091 7.804 8.711 9.395 9.655 9.577 9.414 9.387 9.563 9.884 10.263 10.671 11.129 11.638 12.119 12.433 12.450 12.132 11.557 10.880 10.258 9.804 9.569
+ 10.424 10.221 9.830 9.374 9.114 9.317 10.019 10.896 11.417 11.207 10.351 9.376 8.900 9.206 10.075 10.982 11.484 11.490 11.235 11.038 11.068 11.296 11.617 11.982 12.418 12.953 13.534 14.048 14.384 14.501 14.406 14.116 13.647 13.058 12.491 12.137
+ 9.228 10.132 11.386 12.292 12.486 12.082 11.435 10.793 10.180 9.556 9.024 8.807 9.010 9.433 9.670 9.445 8.872 8.369 8.293 8.638 9.082 9.328 9.406 9.622 10.218 11.096 11.887 12.311 12.447 12.635 13.083 13.585 13.658 13.015 11.924 11.082
+ 14.094 13.913 13.696 13.590 13.575 13.421 12.840 11.761 10.506 9.688 9.825 10.928 12.383 13.280 13.004 11.658 9.990 8.861 8.667 9.151 9.726 10.004 10.069 10.291 10.888 11.664 12.178 12.162 11.788 11.506 11.612 11.944 12.029 11.538 10.650 9.950
+ 13.785 13.217 12.488 12.074 12.108 12.243 11.915 10.827 9.285 8.076 7.946 9.030 10.682 11.856 11.787 10.476 8.643 7.173 6.524 6.507 6.597 6.440 6.152 6.158 6.759 7.826 8.879 9.459 9.470 9.186 8.965 8.946 8.994 8.913 8.676 8.463
+ 10.280 10.417 10.431 10.025 9.130 7.980 6.962 6.354 6.188 6.312 6.565 6.889 7.272 7.610 7.666 7.204 6.219 5.048 4.221 4.133 4.760 5.662 6.278 6.307 5.883 5.435 5.331 5.604 5.962 6.045 5.735 5.247 4.943 5.038 5.424 5.761
+ 11.274 10.921 10.315 9.563 8.704 7.742 6.768 6.023 5.801 6.218 7.056 7.820 8.019 7.466 6.385 5.236 4.410 4.033 3.974 4.029 4.091 4.175 4.329 4.539 4.728 4.831 4.860 4.896 5.013 5.218 5.454 5.657 5.802 5.899 5.966 6.005
+ 10.854 10.518 9.973 9.357 8.715 8.019 7.287 6.665 6.361 6.466 6.843 7.192 7.263 7.010 6.572 6.104 5.643 5.139 4.603 4.192 4.107 4.394 4.837 5.099 4.995 4.659 4.426 4.537 4.921 5.262 5.297 5.058 4.830 4.875 5.179 5.465
+ 11.305 10.626 9.673 8.915 8.509 8.230 7.759 7.039 6.385 6.210 6.632 7.309 7.659 7.290 6.288 5.136 4.356 4.177 4.462 4.898 5.252 5.474 5.626 5.745 5.796 5.729 5.553 5.349 5.200 5.125 5.074 4.988 4.854 4.706 4.590 4.530
+ 10.408 9.830 8.825 7.677 6.726 6.210 6.119 6.206 6.164 5.870 5.463 5.197 5.178 5.248 5.132 4.714 4.192 3.935 4.160 4.732 5.263 5.435 5.253 4.993 4.916 5.019 5.072 4.878 4.509 4.257 4.361 4.765 5.151 5.229 5.004 4.753
+ 9.782 9.121 8.079 7.052 6.327 5.968 5.848 5.790 5.683 5.512 5.306 5.094 4.893 4.739 4.687 4.761 4.905 4.979 4.850 4.498 4.064 3.772 3.768 4.014 4.299 4.396 4.227 3.927 3.747 3.865 4.259 4.713 4.978 4.939 4.699 4.486
+ 9.777 9.199 8.128 6.763 5.404 4.364 3.824 3.744 3.911 4.099 4.218 4.344 4.593 4.964 5.295 5.364 5.082 4.587 4.173 4.083 4.333 4.699 4.872 4.668 4.141 3.538 3.136 3.081 3.334 3.724 4.063 4.234 4.224 4.099 3.949 3.853
+ 13.999 13.979 13.937 13.827 13.543 12.966 12.079 11.028 10.079 9.478 9.309 9.453 9.686 9.819 9.790 9.656 9.518 9.451 9.472 9.546 9.599 9.546 9.339 9.026 8.770 8.778 9.160 9.815 10.453 10.770 10.656 10.273 9.932 9.856 10.019 10.203
+ 17.232 17.300 17.352 17.244 16.835 16.083 15.112 14.175 13.505 13.156 12.969 12.696 12.204 11.575 11.032 10.754 10.742 10.845 10.898 10.833 10.670 10.428 10.092 9.687 9.369 9.394 9.928 10.846 11.720 12.083 11.773 11.078 10.529 10.489 10.877 11.264
+ 17.017 16.473 15.658 14.921 14.452 14.177 13.854 13.275 12.427 11.488 10.706 10.244 10.107 10.169 10.250 10.208 9.989 9.633 9.249 8.940 8.745 8.616 8.479 8.336 8.308 8.576 9.220 10.092 10.847 11.150 10.904 10.331 9.817 9.631 9.753 9.931
+ 13.890 13.559 12.992 12.360 11.839 11.530 11.386 11.219 10.813 10.082 9.159 8.348 7.928 7.963 8.244 8.428 8.274 7.819 7.341 7.153 7.367 7.818 8.191 8.268 8.090 7.923 8.052 8.562 9.275 9.874 10.115 9.968 9.596 9.215 8.958 8.845
+ 9.567 10.610 12.040 13.053 13.280 12.960 12.608 12.510 12.497 12.170 11.306 10.077 8.893 8.067 7.608 7.308 6.973 6.568 6.171 5.848 5.622 5.534 5.693 6.178 6.890 7.535 7.844 7.851 7.938 8.536 9.682 10.858 11.325 10.732 9.477 8.474
+ 10.393 11.348 12.646 13.546 13.722 13.427 13.154 13.147 13.197 12.868 11.919 10.534 9.180 8.257 7.857 7.783 7.754 7.581 7.207 6.684 6.164 5.904 6.179 7.084 8.361 9.485 10.017 9.973 9.858 10.247 11.244 12.282 12.533 11.611 9.994 8.751
+ 9.769 10.941 12.514 13.549 13.630 13.100 12.675 12.804 13.331 13.680 13.357 12.310 10.882 9.492 8.354 7.465 6.776 6.325 6.185 6.339 6.641 6.950 7.273 7.768 8.568 9.595 10.567 11.205 11.450 11.477 11.512 11.611 11.645 11.474 11.140 10.868
+ 9.948 11.253 13.021 14.187 14.203 13.366 12.500 12.294 12.816 13.540 13.797 13.263 12.132 10.911 10.052 9.709 9.731 9.830 9.762 9.451 9.012 8.712 8.851 9.600 10.856 12.233 13.230 13.501 13.046 12.183 11.337 10.788 10.569 10.547 10.577 10.595
+ 12.232 12.815 13.670 14.343 14.478 13.999 13.142 12.306 11.837 11.852 12.211 12.650 12.951 13.051 13.008 12.876 12.605 12.059 11.164 10.064 9.142 8.861 9.484 10.870 12.486 13.664 13.937 13.273 12.048 10.808 9.968 9.649 9.707 9.903 10.066 10.144
+ 13.139 13.570 14.230 14.796 14.969 14.611 13.804 12.805 11.907 11.308 11.053 11.088 11.354 11.834 12.499 13.232 13.805 13.983 13.683 13.072 12.501 12.304 12.598 13.214 13.809 14.062 13.826 13.157 12.228 11.230 10.311 9.565 9.040 8.735 8.602 8.563
+ 13.096 13.581 14.336 14.998 15.201 14.749 13.743 12.535 11.523 10.915 10.631 10.445 10.221 10.066 10.240 10.906 11.938 12.978 13.682 13.973 14.061 14.228 14.564 14.883 14.892 14.450 13.700 12.963 12.489 12.278 12.100 11.683 10.911 9.911 8.973 8.409
+ 12.693 13.477 14.470 14.965 14.628 13.668 12.565 11.668 10.998 10.398 9.800 9.326 9.148 9.289 9.590 9.884 10.169 10.599 11.307 12.250 13.239 14.104 14.781 15.216 15.229 14.559 13.160 11.480 10.353 10.451 11.680 13.072 13.413 12.174 10.010 8.350
+ 12.891 13.474 14.145 14.314 13.752 12.710 11.649 10.846 10.247 9.645 8.989 8.484 8.400 8.798 9.438 9.975 10.234 10.333 10.545 11.054 11.829 12.683 13.405 13.832 13.847 13.390 12.572 11.759 11.459 11.984 13.112 14.097 14.119 12.916 11.081 9.728
+ 12.934 13.374 13.839 13.841 13.209 12.182 11.166 10.392 9.803 9.231 8.650 8.246 8.226 8.574 9.015 9.247 9.212 9.173 9.495 10.347 11.557 12.749 13.592 13.964 13.922 13.590 13.093 12.585 12.255 12.220 12.373 12.359 11.797 10.607 9.184 8.210
+ 13.147 13.301 13.480 13.475 13.096 12.275 11.124 9.904 8.916 8.356 8.238 8.412 8.671 8.855 8.905 8.850 8.778 8.815 9.111 9.798 10.896 12.221 13.400 14.009 13.812 12.932 11.832 11.080 11.031 11.614 12.376 12.742 12.359 11.304 10.051 9.214
+ 13.040 13.152 13.249 13.148 12.724 11.986 11.075 10.188 9.480 8.993 8.678 8.460 8.311 8.262 8.362 8.614 8.976 9.416 9.967 10.731 11.767 12.971 14.028 14.535 14.244 13.272 12.117 11.424 11.608 12.585 13.768 14.385 13.936 12.504 10.753 9.569
+ 12.482 12.648 12.766 12.598 12.075 11.336 10.578 9.885 9.214 8.524 7.917 7.612 7.765 8.292 8.893 9.278 9.415 9.582 10.170 11.368 12.988 14.527 15.427 15.338 14.278 12.627 11.004 10.052 10.158 11.223 12.605 13.386 12.877 11.091 8.829 7.271
+ 11.118 11.586 11.941 11.549 10.302 8.753 7.679 7.478 7.905 8.340 8.315 7.831 7.240 6.881 6.824 6.938 7.151 7.593 8.471 9.801 11.264 12.338 12.586 11.890 10.484 8.829 7.458 6.840 7.229 8.490 10.010 10.892 10.425 8.596 6.230 4.585
+ 11.316 10.837 9.996 8.964 7.904 6.960 6.281 6.002 6.163 6.619 7.057 7.146 6.742 5.983 5.182 4.617 4.366 4.347 4.470 4.757 5.281 6.005 6.672 6.916 6.525 5.643 4.727 4.258 4.422 4.999 5.535 5.643 5.221 4.460 3.695 3.229
+ 10.245 9.838 9.111 8.235 7.439 6.923 6.746 6.780 6.783 6.560 6.099 5.573 5.199 5.049 4.995 4.816 4.426 4.004 3.924 4.493 5.682 7.064 8.021 8.100 7.276 5.963 4.750 4.070 3.994 4.272 4.547 4.573 4.322 3.924 3.554 3.340
+ 9.661 9.060 8.176 7.395 6.884 6.522 6.074 5.447 4.794 4.375 4.328 4.553 4.797 4.858 4.711 4.474 4.291 4.246 4.380 4.740 5.353 6.126 6.780 6.942 6.379 5.215 3.930 3.106 3.081 3.740 4.599 5.102 4.941 4.203 3.287 2.671
+ 6.508 6.571 6.667 6.720 6.605 6.209 5.530 4.725 4.061 3.772 3.911 4.319 4.722 4.900 4.808 4.568 4.364 4.330 4.495 4.819 5.234 5.659 5.977 6.039 5.722 5.038 4.190 3.513 3.298 3.598 4.172 4.598 4.538 3.951 3.137 2.561
+ 5.681 5.330 4.888 4.663 4.754 4.955 4.914 4.428 3.649 3.020 2.977 3.612 4.573 5.288 5.350 4.790 4.034 3.588 3.699 4.233 4.842 5.226 5.296 5.115 4.749 4.197 3.481 2.766 2.355 2.478 3.059 3.679 3.834 3.317 2.411 1.718
+ 7.814 7.583 7.215 6.833 6.512 6.250 6.005 5.767 5.595 5.586 5.787 6.133 6.467 6.643 6.632 6.557 6.597 6.855 7.269 7.651 7.829 7.773 7.617 7.548 7.661 7.904 8.127 8.221 8.190 8.129 8.121 8.160 8.166 8.073 7.910 7.780
+ 16.145 16.190 16.090 15.709 15.188 14.875 15.001 15.407 15.615 15.202 14.172 12.965 12.117 11.867 12.048 12.322 12.488 12.576 12.678 12.743 12.587 12.115 11.507 11.131 11.229 11.676 12.062 12.046 11.655 11.248 11.165 11.413 11.675 11.633 11.288 10.958
+ 18.063 17.829 17.381 16.809 16.284 15.973 15.907 15.916 15.729 15.171 14.300 13.372 12.661 12.301 12.256 12.420 12.706 13.035 13.274 13.241 12.829 12.154 11.553 11.371 11.692 12.232 12.541 12.349 11.770 11.197 10.956 11.048 11.192 11.110 10.798 10.513
+ 17.745 17.228 16.329 15.290 14.394 13.835 13.614 13.535 13.339 12.873 12.167 11.374 10.633 10.005 9.519 9.256 9.329 9.755 10.335 10.719 10.652 10.207 9.781 9.797 10.347 11.091 11.524 11.401 10.941 10.625 10.761 11.200 11.480 11.255 10.634 10.105
+ 16.414 15.305 13.583 11.946 10.889 10.469 10.370 10.203 9.791 9.257 8.848 8.689 8.667 8.552 8.244 7.904 7.844 8.253 8.992 9.669 9.933 9.761 9.482 9.496 9.941 10.572 10.968 10.891 10.480 10.119 10.106 10.414 10.744 10.817 10.624 10.406
+ 12.015 11.456 10.525 9.507 8.666 8.141 7.923 7.905 7.971 8.045 8.091 8.074 7.948 7.688 7.354 7.098 7.088 7.386 7.878 8.330 8.551 8.535 8.463 8.564 8.929 9.446 9.902 10.152 10.225 10.264 10.366 10.484 10.471 10.240 9.877 9.602
+ 9.955 9.545 8.960 8.473 8.191 8.015 7.782 7.442 7.078 6.784 6.543 6.252 5.892 5.644 5.805 6.532 7.648 8.692 9.224 9.135 8.713 8.407 8.492 8.907 9.362 9.610 9.624 9.565 9.607 9.798 10.059 10.300 10.490 10.654 10.802 10.898
+ 11.151 10.720 10.096 9.551 9.175 8.869 8.525 8.192 8.050 8.190 8.453 8.514 8.166 7.567 7.167 7.368 8.180 9.183 9.840 9.898 9.544 9.211 9.215 9.537 9.915 10.108 10.090 10.022 10.062 10.224 10.398 10.476 10.451 10.393 10.363 10.362
+ 12.629 12.251 11.674 11.107 10.642 10.251 9.907 9.694 9.747 10.077 10.446 10.479 9.956 9.061 8.330 8.308 9.132 10.398 11.409 11.647 11.112 10.282 9.758 9.855 10.447 11.119 11.483 11.417 11.076 10.733 10.592 10.692 10.943 11.219 11.428 11.535
+ 10.315 10.278 10.175 10.000 9.806 9.672 9.620 9.571 9.397 9.028 8.523 8.036 7.713 7.630 7.800 8.211 8.816 9.470 9.921 9.928 9.477 8.881 8.628 9.024 9.907 10.719 10.917 10.432 9.758 9.561 10.122 11.074 11.694 11.512 10.721 10.019
+ 9.745 9.962 10.379 10.951 11.586 12.138 12.424 12.293 11.708 10.792 9.794 8.987 8.559 8.563 8.934 9.544 10.232 10.815 11.133 11.131 10.939 10.831 11.053 11.606 12.173 12.311 11.796 10.852 10.049 9.887 10.379 10.996 11.046 10.231 8.926 7.948
+ 12.278 11.991 11.720 11.847 12.540 13.600 14.563 14.985 14.702 13.896 12.922 12.075 11.472 11.130 11.113 11.547 12.460 13.583 14.374 14.339 13.433 12.194 11.403 11.497 12.200 12.740 12.506 11.614 10.858 11.024 12.117 13.207 13.090 11.302 8.631 6.665
+ 13.058 12.499 11.830 11.671 12.401 13.868 15.411 16.233 15.898 14.603 13.017 11.809 11.239 11.136 11.235 11.520 12.197 13.332 14.521 15.015 14.293 12.591 10.872 10.145 10.692 11.862 12.668 12.655 12.251 12.270 12.999 13.756 13.399 11.396 8.504 6.383
+ 13.341 12.896 12.276 11.931 12.259 13.317 14.663 15.540 15.363 14.163 12.589 11.433 11.035 11.113 11.148 10.960 10.898 11.438 12.570 13.626 13.784 12.846 11.519 10.895 11.524 12.939 14.075 14.212 13.576 13.005 13.032 13.257 12.682 10.734 8.015 6.025
+ 13.401 13.157 12.753 12.436 12.570 13.366 14.582 15.529 15.517 14.424 12.855 11.698 11.410 11.691 11.860 11.577 11.203 11.427 12.497 13.821 14.390 13.669 12.130 10.891 10.779 11.673 12.731 13.260 13.341 13.591 14.312 14.923 14.341 12.054 8.869 6.553
+ 13.588 13.334 12.916 12.570 12.623 13.268 14.297 15.102 15.054 14.004 12.467 11.271 10.927 11.255 11.611 11.511 11.085 10.936 11.549 12.784 13.950 14.369 13.930 13.126 12.594 12.609 12.988 13.425 13.829 14.304 14.809 14.921 14.075 12.132 9.745 8.089
+ 13.544 13.233 12.757 12.388 12.431 13.012 13.904 14.568 14.477 13.511 12.095 10.931 10.494 10.699 11.024 10.978 10.528 10.105 10.215 10.997 12.108 13.014 13.399 13.349 13.199 13.225 13.476 13.838 14.197 14.487 14.604 14.335 13.469 12.046 10.492 9.467
+ 13.408 12.794 12.002 11.588 11.833 12.573 13.334 13.661 13.366 12.574 11.580 10.681 10.075 9.829 9.875 10.037 10.096 9.938 9.675 9.623 10.101 11.165 12.501 13.583 14.017 13.805 13.319 13.015 13.098 13.402 13.551 13.249 12.475 11.468 10.565 10.043
+ 13.176 12.626 11.930 11.564 11.707 12.150 12.516 12.569 12.321 11.902 11.376 10.722 9.984 9.372 9.165 9.457 10.023 10.458 10.520 10.341 10.294 10.628 11.205 11.605 11.519 11.059 10.682 10.789 11.372 12.024 12.311 12.142 11.805 11.658 11.791 11.984
+ 13.515 12.961 12.259 11.870 11.938 12.226 12.387 12.274 11.988 11.669 11.293 10.716 9.933 9.219 8.970 9.346 10.076 10.657 10.796 10.651 10.640 10.957 11.303 11.119 10.153 8.808 7.925 8.122 9.287 10.669 11.498 11.570 11.296 11.220 11.496 11.817
+ 13.455 12.996 12.411 12.080 12.122 12.346 12.478 12.399 12.177 11.893 11.496 10.878 10.088 9.420 9.224 9.582 10.186 10.582 10.582 10.442 10.586 11.111 11.565 11.268 9.952 8.138 6.867 6.953 8.369 10.280 11.676 12.069 11.689 11.117 10.757 10.642
+ 13.325 12.928 12.435 12.162 12.158 12.204 12.081 11.796 11.541 11.422 11.285 10.855 10.075 9.268 8.917 9.225 9.897 10.387 10.409 10.211 10.305 10.885 11.497 11.345 10.017 7.985 6.390 6.225 7.605 9.703 11.399 12.053 11.803 11.226 10.792 10.615
+ 12.802 12.434 11.979 11.722 11.700 11.715 11.598 11.401 11.303 11.333 11.231 10.659 9.589 8.443 7.796 7.873 8.342 8.645 8.573 8.511 9.061 10.341 11.666 11.984 10.763 8.546 6.639 6.143 7.158 8.804 10.020 10.379 10.255 10.272 10.641 11.035
+ 12.203 11.892 11.546 11.421 11.489 11.483 11.212 10.783 10.481 10.405 10.273 9.658 8.455 7.118 6.363 6.578 7.486 8.413 8.912 9.149 9.646 10.623 11.598 11.702 10.471 8.385 6.610 6.126 6.986 8.366 9.326 9.568 9.532 9.809 10.489 11.090
+ 12.418 11.835 11.097 10.697 10.798 11.161 11.417 11.369 11.053 10.543 9.806 8.795 7.688 6.948 7.028 7.956 9.211 10.094 10.312 10.210 10.413 11.155 11.954 11.980 10.832 9.002 7.567 7.327 8.168 9.195 9.526 9.013 8.259 7.967 8.271 8.690
+ 11.245 11.167 11.170 11.380 11.714 11.916 11.767 11.265 10.590 9.917 9.295 8.733 8.374 8.523 9.395 10.805 12.141 12.730 12.364 11.489 10.859 10.904 11.360 11.515 10.852 9.538 8.306 7.850 8.266 9.030 9.497 9.443 9.156 9.062 9.280 9.545
+ 10.455 10.409 10.455 10.705 11.102 11.437 11.521 11.331 10.971 10.521 9.949 9.216 8.469 8.098 8.499 9.713 11.269 12.421 12.649 12.015 11.089 10.484 10.405 10.569 10.534 10.111 9.512 9.120 9.153 9.515 9.949 10.295 10.593 10.953 11.361 11.651
+ 9.094 9.010 8.999 9.186 9.499 9.711 9.658 9.406 9.172 9.071 8.961 8.577 7.853 7.108 6.876 7.479 8.711 9.948 10.601 10.540 10.122 9.836 9.890 10.107 10.185 10.033 9.845 9.888 10.216 10.635 10.929 11.099 11.367 11.912 12.627 13.147
+ 8.325 8.057 7.873 8.090 8.616 8.971 8.721 7.902 7.016 6.604 6.782 7.189 7.377 7.268 7.220 7.650 8.588 9.585 10.093 9.934 9.447 9.168 9.369 9.873 10.286 10.394 10.332 10.400 10.745 11.235 11.629 11.844 12.025 12.349 12.801 13.143
+ 7.500 7.570 7.687 7.817 7.927 8.001 8.041 8.069 8.118 8.214 8.358 8.517 8.648 8.736 8.826 9.002 9.317 9.727 10.081 10.209 10.044 9.690 9.368 9.268 9.424 9.708 9.955 10.123 10.327 10.739 11.419 12.232 12.930 13.328 13.434 13.410
+ 6.472 6.779 7.143 7.304 7.232 7.150 7.302 7.709 8.133 8.296 8.143 7.905 7.896 8.252 8.824 9.332 9.598 9.665 9.698 9.800 9.933 9.991 9.950 9.906 9.980 10.198 10.479 10.745 11.035 11.475 12.136 12.913 13.563 13.892 13.916 13.834
+ 7.525 7.227 6.853 6.682 6.854 7.296 7.805 8.202 8.437 8.563 8.652 8.744 8.857 9.029 9.316 9.731 10.199 10.577 10.750 10.723 10.615 10.564 10.623 10.733 10.804 10.811 10.831 10.983 11.328 11.836 12.420 13.009 13.574 14.099 14.532 14.784
+ 9.769 9.568 9.310 9.167 9.206 9.342 9.412 9.297 9.002 8.635 8.326 8.163 8.192 8.449 8.970 9.736 10.617 11.373 11.759 11.676 11.255 10.797 10.597 10.771 11.203 11.647 11.908 11.971 11.989 12.152 12.548 13.104 13.653 14.052 14.260 14.333
+ 10.296 10.691 11.318 11.958 12.447 12.717 12.734 12.450 11.831 10.944 10.017 9.365 9.229 9.620 10.317 11.001 11.433 11.552 11.449 11.282 11.203 11.309 11.621 12.037 12.350 12.343 11.959 11.411 11.107 11.386 12.251 13.316 14.048 14.154 13.784 13.402
+ 12.135 11.956 11.996 12.647 13.853 15.064 15.620 15.254 14.266 13.236 12.546 12.154 11.777 11.289 10.916 11.021 11.693 12.531 12.890 12.410 11.377 10.565 10.661 11.694 12.969 13.550 12.955 11.516 10.133 9.627 10.168 11.212 11.948 11.910 11.286 10.705
+ 13.063 12.538 12.084 12.371 13.551 15.088 16.155 16.239 15.459 14.380 13.521 13.022 12.720 12.478 12.409 12.745 13.495 14.258 14.435 13.722 12.434 11.366 11.214 12.018 13.078 13.452 12.652 11.029 9.515 8.950 9.479 10.485 11.087 10.808 9.909 9.146
+ 13.027 12.540 12.062 12.172 13.064 14.389 15.530 16.039 15.879 15.322 14.656 14.006 13.400 12.945 12.871 13.357 14.283 15.189 15.540 15.105 14.149 13.248 12.874 13.063 13.433 13.510 13.095 12.387 11.791 11.586 11.724 11.890 11.758 11.240 10.553 10.070
+ 12.816 12.333 11.851 11.952 12.857 14.255 15.536 16.210 16.176 15.659 14.942 14.169 13.374 12.679 12.375 12.770 13.882 15.280 16.272 16.343 15.521 14.372 13.586 13.485 13.816 14.004 13.651 12.864 12.168 12.047 12.519 13.077 13.076 12.258 10.997 10.062
+ 12.396 12.096 11.780 11.835 12.504 13.705 15.052 16.051 16.360 15.940 15.012 13.890 12.842 12.066 11.742 12.025 12.917 14.124 15.092 15.304 14.656 13.599 12.845 12.822 13.320 13.659 13.291 12.344 11.583 11.768 12.918 14.138 14.248 12.759 10.377 8.591
+ 12.283 12.149 12.042 12.203 12.826 13.916 15.226 16.338 16.854 16.600 15.704 14.524 13.476 12.888 12.932 13.596 14.661 15.702 16.201 15.797 14.550 13.003 11.900 11.718 12.331 13.121 13.465 13.226 12.827 12.824 13.327 13.814 13.525 12.152 10.224 8.826
+ 12.231 12.072 11.948 12.123 12.769 13.843 15.093 16.164 16.742 16.673 16.008 14.989 13.969 13.308 13.246 13.805 14.750 15.672 16.157 15.983 15.219 14.173 13.207 12.552 12.232 12.131 12.146 12.272 12.563 12.996 13.374 13.387 12.807 11.700 10.463 9.648
+ 12.126 11.952 11.788 11.890 12.433 13.413 14.639 15.803 16.583 16.739 16.205 15.151 13.972 13.162 13.091 13.793 14.912 15.885 16.258 15.945 15.253 14.642 14.394 14.440 14.456 14.159 13.562 12.984 12.808 13.158 13.747 14.032 13.577 12.379 10.930 9.948
+ 11.802 11.696 11.623 11.791 12.369 13.381 14.660 15.876 16.643 16.687 15.983 14.815 13.684 13.096 13.307 14.175 15.214 15.853 15.752 14.993 14.003 13.265 13.002 13.049 13.024 12.659 12.050 11.629 11.832 12.709 13.771 14.225 13.479 11.592 9.344 7.829
+ 11.711 11.676 11.673 11.832 12.313 13.220 14.493 15.849 16.851 17.098 16.459 15.193 13.871 13.105 13.232 14.132 15.301 16.148 16.318 15.871 15.190 14.695 14.557 14.606 14.494 13.989 13.192 12.502 12.330 12.780 13.503 13.881 13.423 12.125 10.532 9.446
+ 11.687 11.701 11.754 11.930 12.376 13.221 14.447 15.792 16.798 17.034 16.364 15.086 13.817 13.169 13.396 14.260 15.197 15.676 15.520 14.967 14.451 14.268 14.368 14.420 14.096 13.353 12.503 12.018 12.196 12.918 13.672 13.836 13.058 11.492 9.756 8.625
+ 12.013 12.009 12.056 12.257 12.726 13.542 14.666 15.882 16.825 17.116 16.588 15.457 14.277 13.667 13.931 14.847 15.799 16.194 15.866 15.164 14.654 14.653 14.970 15.069 14.521 13.395 12.261 11.800 12.310 13.466 14.508 14.695 13.740 11.954 10.068 8.876
+ 11.889 11.772 11.712 11.925 12.522 13.454 14.563 15.644 16.464 16.777 16.415 15.453 14.306 13.576 13.696 14.592 15.676 16.240 15.964 15.143 14.416 14.226 14.459 14.576 14.126 13.185 12.340 12.216 12.952 14.053 14.728 14.419 13.126 11.337 9.708 8.762
+ 11.737 11.652 11.615 11.803 12.324 13.176 14.261 15.402 16.349 16.801 16.539 15.612 14.436 13.639 13.688 14.547 15.650 16.274 16.044 15.184 14.302 13.881 13.896 13.881 13.382 12.397 11.440 11.143 11.750 12.888 13.791 13.787 12.701 10.914 9.131 8.038
+ 11.350 11.421 11.552 11.758 12.125 12.793 13.860 15.222 16.499 17.157 16.832 15.646 14.255 13.490 13.797 14.890 15.920 16.094 15.272 14.059 13.302 13.386 13.918 14.073 13.312 11.875 10.623 10.372 11.266 12.674 13.671 13.669 12.725 11.360 10.160 9.492
+ 11.439 11.554 11.745 11.988 12.347 12.972 13.996 15.345 16.639 17.305 16.945 15.702 14.310 13.686 14.290 15.730 16.987 17.144 16.085 14.573 13.632 13.708 14.313 14.464 13.544 11.867 10.467 10.280 11.407 13.043 14.080 13.869 12.557 10.820 9.355 8.561
+ 11.621 11.760 11.974 12.217 12.553 13.151 14.141 15.424 16.596 17.125 16.719 15.627 14.597 14.418 15.340 16.802 17.768 17.460 15.952 14.142 13.077 13.153 13.831 14.101 13.326 11.779 10.437 10.211 11.243 12.809 13.853 13.704 12.421 10.622 9.024 8.121
+ 11.456 11.668 11.945 12.184 12.492 13.140 14.291 15.734 16.906 17.237 16.597 15.465 14.657 14.768 15.738 16.884 17.377 16.830 15.550 14.294 13.710 13.888 14.345 14.416 13.752 12.555 11.405 10.838 10.993 11.554 11.989 11.888 11.175 10.096 9.057 8.431
+ 11.144 11.355 11.642 11.909 12.259 12.949 14.124 15.571 16.728 17.030 16.356 15.201 14.402 14.547 15.520 16.547 16.736 15.738 14.017 12.520 11.981 12.394 13.054 13.120 12.265 10.914 9.907 9.862 10.745 11.921 12.620 12.430 11.475 10.220 9.149 8.558
+ 11.016 11.212 11.468 11.708 12.088 12.894 14.232 15.769 16.836 16.883 15.952 14.737 14.137 14.598 15.747 16.638 16.431 15.011 13.069 11.608 11.241 11.796 12.504 12.582 11.788 10.550 9.640 9.638 10.565 11.894 12.885 12.992 12.121 10.628 9.122 8.192
+ 11.461 11.605 11.820 12.112 12.647 13.628 15.012 16.363 17.053 16.728 15.657 14.628 14.401 15.124 16.186 16.644 15.927 14.253 12.475 11.467 11.532 12.258 12.870 12.787 11.979 10.925 10.256 10.369 11.215 12.354 13.180 13.207 12.291 10.710 9.062 8.019
+ 11.784 11.804 11.890 12.164 12.802 13.881 15.208 16.311 16.696 16.212 15.242 14.500 14.527 15.273 16.102 16.242 15.362 13.811 12.360 11.632 11.678 11.996 11.946 11.235 10.113 9.174 8.945 9.571 10.748 11.929 12.595 12.477 11.628 10.369 9.157 8.421
+ 11.415 11.452 11.564 11.870 12.549 13.669 14.991 15.989 16.163 15.462 14.420 13.835 14.158 15.106 15.823 15.525 14.109 12.236 10.839 10.445 10.853 11.382 11.421 10.846 10.002 9.370 9.237 9.594 10.249 10.970 11.533 11.717 11.370 10.543 9.557 8.887
+ 11.065 11.104 11.252 11.668 12.525 13.823 15.222 16.122 16.034 15.015 13.752 13.147 13.641 14.829 15.700 15.388 13.824 11.805 10.396 10.172 10.872 11.687 11.904 11.365 10.458 9.729 9.508 9.791 10.370 10.997 11.449 11.519 11.070 10.161 9.117 8.417
+ 11.232 11.271 11.474 12.021 13.009 14.302 15.490 16.057 15.708 14.644 13.529 13.096 13.635 14.738 15.540 15.309 13.973 12.180 10.854 10.577 11.232 12.160 12.644 12.372 11.558 10.719 10.313 10.496 11.098 11.759 12.103 11.882 11.058 9.840 8.631 7.879
+ 10.182 10.516 11.204 12.242 13.531 14.822 15.744 15.958 15.374 14.284 13.277 12.915 13.380 14.327 15.076 15.050 14.135 12.741 11.508 10.900 10.953 11.334 11.623 11.575 11.219 10.754 10.382 10.208 10.228 10.375 10.562 10.699 10.719 10.611 10.439 10.311
+ 9.227 9.093 9.226 10.061 11.637 13.427 14.610 14.586 13.390 11.696 10.429 10.220 11.063 12.356 13.288 13.297 12.337 10.844 9.448 8.623 8.481 8.784 9.147 9.274 9.101 8.773 8.489 8.359 8.355 8.387 8.417 8.510 8.771 9.219 9.723 10.062
+ 8.956 9.310 10.063 11.191 12.480 13.531 13.929 13.482 12.378 11.127 10.316 10.297 11.020 12.067 12.892 13.086 12.546 11.470 10.206 9.079 8.276 7.831 7.672 7.694 7.797 7.902 7.953 7.929 7.864 7.841 7.972 8.337 8.937 9.663 10.323 10.717
+ 6.075 5.945 6.019 6.703 8.123 9.911 11.307 11.556 10.387 8.258 6.171 5.139 5.606 7.189 8.922 9.833 9.484 8.160 6.609 5.556 5.326 5.753 6.389 6.805 6.786 6.372 5.761 5.201 4.890 4.934 5.315 5.909 6.536 7.046 7.368 7.514
+ 5.861 5.896 6.008 6.306 6.931 7.909 8.993 9.686 9.512 8.391 6.809 5.591 5.385 6.226 7.520 8.452 8.523 7.823 6.864 6.178 5.979 6.122 6.306 6.299 6.038 5.591 5.082 4.661 4.480 4.626 5.034 5.465 5.633 5.411 4.946 4.576
+ 6.616 6.156 5.624 5.548 6.238 7.556 8.949 9.749 9.559 8.491 7.104 6.085 5.854 6.345 7.092 7.539 7.375 6.682 5.836 5.239 5.087 5.286 5.554 5.616 5.351 4.838 4.287 3.913 3.829 3.999 4.258 4.406 4.310 3.983 3.576 3.299
+ 4.799 4.525 4.295 4.529 5.448 6.878 8.305 9.130 9.003 8.019 6.666 5.562 5.129 5.393 6.024 6.558 6.664 6.300 5.676 5.089 4.733 4.622 4.623 4.589 4.452 4.257 4.104 4.064 4.130 4.227 4.259 4.172 3.972 3.719 3.493 3.361
+ 5.209 4.850 4.402 4.282 4.825 6.043 7.532 8.620 8.743 7.806 6.278 4.924 4.339 4.612 5.345 5.979 6.163 5.886 5.359 4.786 4.252 3.776 3.408 3.229 3.264 3.412 3.512 3.495 3.462 3.586 3.907 4.220 4.213 3.739 3.000 2.446
+ 2.922 3.366 4.086 4.916 5.822 6.830 7.812 8.385 8.111 6.880 5.135 3.674 3.139 3.575 4.444 5.054 5.066 4.656 4.253 4.135 4.246 4.338 4.255 4.052 3.874 3.772 3.662 3.479 3.312 3.342 3.622 3.924 3.871 3.273 2.361 1.679
+ 5.768 5.173 4.406 4.036 4.412 5.436 6.628 7.414 7.458 6.824 5.886 5.085 4.695 4.739 5.051 5.410 5.640 5.637 5.364 4.858 4.244 3.710 3.421 3.410 3.539 3.590 3.428 3.120 2.893 2.942 3.250 3.558 3.550 3.109 2.439 1.944
+ 5.529 5.467 5.367 5.357 5.655 6.379 7.312 7.908 7.643 6.479 5.022 4.146 4.341 5.334 6.303 6.528 5.918 4.980 4.307 4.090 4.068 3.918 3.621 3.452 3.607 3.918 3.969 3.542 2.907 2.625 3.003 3.727 4.070 3.545 2.394 1.453
+ 4.497 4.438 4.267 4.042 4.026 4.494 5.391 6.226 6.394 5.718 4.688 4.130 4.518 5.554 6.411 6.426 5.636 4.678 4.170 4.189 4.324 4.194 3.873 3.785 4.165 4.695 4.731 3.944 2.749 2.020 2.322 3.356 4.178 4.043 3.079 2.180
+ 5.602 5.991 6.620 7.312 7.978 8.610 9.164 9.496 9.444 9.002 8.415 8.056 8.157 8.630 9.135 9.358 9.247 9.008 8.879 8.899 8.896 8.683 8.279 7.922 7.866 8.157 8.597 8.921 9.022 9.010 9.064 9.249 9.460 9.552 9.497 9.407
+ 7.363 7.553 7.844 8.168 8.553 9.057 9.608 9.948 9.794 9.108 8.224 7.666 7.769 8.420 9.161 9.551 9.493 9.239 9.092 9.107 9.066 8.750 8.204 7.757 7.736 8.177 8.786 9.196 9.270 9.187 9.230 9.520 9.924 10.223 10.321 10.306
+ 5.040 5.327 5.760 6.163 6.438 6.599 6.703 6.754 6.686 6.455 6.140 5.958 6.131 6.705 7.463 8.046 8.192 7.931 7.568 7.456 7.723 8.180 8.482 8.416 8.085 7.834 7.982 8.568 9.322 9.891 10.118 10.158 10.320 10.784 11.423 11.889
+ 5.959 5.812 5.651 5.607 5.678 5.753 5.758 5.777 6.004 6.559 7.336 8.050 8.459 8.555 8.569 8.758 9.186 9.686 10.024 10.106 10.031 9.972 10.001 10.050 10.020 9.920 9.885 10.052 10.424 10.880 11.298 11.689 12.167 12.800 13.472 13.917
+ 7.799 7.006 6.030 5.600 6.008 6.936 7.772 8.123 8.053 7.923 8.016 8.330 8.683 8.964 9.256 9.707 10.310 10.853 11.092 10.988 10.757 10.672 10.822 11.045 11.115 10.976 10.808 10.855 11.194 11.681 12.103 12.386 12.632 12.970 13.379 13.673
+ 6.834 6.881 7.111 7.610 8.250 8.717 8.754 8.386 7.929 7.752 7.998 8.506 8.987 9.285 9.484 9.777 10.241 10.739 11.031 10.994 10.726 10.471 10.418 10.580 10.834 11.054 11.215 11.372 11.575 11.818 12.074 12.360 12.727 13.192 13.664 13.971
+ 8.121 8.241 8.351 8.301 8.052 7.730 7.544 7.649 8.033 8.534 8.949 9.168 9.235 9.296 9.491 9.855 10.304 10.693 10.911 10.943 10.867 10.799 10.819 10.932 11.076 11.170 11.184 11.160 11.201 11.408 11.824 12.404 13.041 13.610 14.024 14.237
+ 8.559 8.435 8.278 8.218 8.339 8.626 8.975 9.259 9.410 9.449 9.449 9.459 9.467 9.437 9.392 9.437 9.695 10.183 10.735 11.084 11.045 10.661 10.193 9.928 9.980 10.233 10.490 10.678 10.925 11.429 12.233 13.119 13.740 13.886 13.661 13.404
+ 8.791 8.129 7.339 7.048 7.495 8.384 9.185 9.561 9.555 9.412 9.283 9.129 8.883 8.667 8.780 9.424 10.437 11.318 11.584 11.157 10.435 9.978 10.077 10.563 11.017 11.150 11.029 10.965 11.212 11.766 12.406 12.907 13.198 13.350 13.447 13.507
+ 7.389 7.276 7.176 7.258 7.625 8.240 8.943 9.523 9.826 9.813 9.554 9.196 8.906 8.844 9.115 9.712 10.471 11.098 11.303 10.997 10.396 9.935 9.983 10.571 11.325 11.723 11.495 10.874 10.463 10.791 11.886 13.212 14.041 13.992 13.318 12.700
+ 8.964 9.460 10.313 11.282 12.098 12.549 12.553 12.155 11.464 10.588 9.625 8.722 8.109 8.038 8.611 9.630 10.610 11.022 10.626 9.663 8.733 8.421 8.918 9.904 10.779 11.070 10.737 10.164 9.869 10.156 10.930 11.808 12.385 12.494 12.278 12.048
+ 11.283 11.220 11.438 12.243 13.506 14.635 14.959 14.235 12.824 11.422 10.577 10.400 10.646 11.029 11.429 11.837 12.141 12.053 11.301 9.939 8.469 7.603 7.806 8.966 10.451 11.507 11.716 11.186 10.397 9.844 9.759 10.065 10.514 10.888 11.102 11.182
+ 11.541 11.508 11.743 12.537 13.815 15.068 15.640 15.172 13.861 12.329 11.232 10.901 11.253 11.972 12.737 13.315 13.490 13.016 11.739 9.836 7.936 6.903 7.329 9.079 11.266 12.761 12.917 11.984 10.895 10.554 11.159 12.081 12.394 11.638 10.216 9.105
+ 11.936 11.902 12.109 12.826 14.007 15.223 15.905 15.718 14.757 13.456 12.303 11.603 11.433 11.742 12.417 13.241 13.836 13.744 12.708 10.960 9.250 8.481 9.128 10.858 12.680 13.560 13.115 11.865 10.849 10.865 11.888 13.104 13.526 12.748 11.260 10.104
+ 11.565 11.577 11.803 12.458 13.531 14.714 15.541 15.655 15.008 13.868 12.665 11.786 11.461 11.738 12.502 13.478 14.251 14.382 13.630 12.170 10.613 9.737 10.025 11.319 12.861 13.753 13.540 12.513 11.487 11.206 11.814 12.768 13.282 12.940 12.017 11.249
+ 11.279 11.080 11.065 11.652 12.907 14.417 15.545 15.835 15.258 14.147 12.947 11.988 11.458 11.459 12.025 13.015 14.030 14.514 14.083 12.837 11.405 10.602 10.898 12.091 13.421 14.085 13.758 12.778 11.863 11.593 12.035 12.751 13.170 13.005 12.444 11.967
+ 11.453 11.226 11.154 11.669 12.862 14.358 15.537 15.922 15.429 14.337 13.066 11.986 11.352 11.324 11.933 12.981 14.001 14.420 13.899 12.623 11.272 10.627 11.062 12.273 13.482 13.959 13.509 12.559 11.819 11.765 12.325 12.974 13.141 12.629 11.745 11.077
+ 11.621 11.513 11.558 12.044 13.025 14.238 15.261 15.749 15.572 14.811 13.681 12.495 11.644 11.491 12.160 13.347 14.377 14.571 13.709 12.244 11.042 10.813 11.628 12.904 13.848 14.006 13.509 12.874 12.556 12.640 12.867 12.899 12.581 12.017 11.446 11.098
+ 11.381 11.280 11.318 11.767 12.685 13.846 14.869 15.433 15.403 14.828 13.891 12.884 12.186 12.154 12.908 14.146 15.201 15.403 14.529 13.012 11.702 11.313 11.957 13.109 14.014 14.204 13.747 13.079 12.616 12.475 12.481 12.392 12.102 11.687 11.307 11.087
+ 11.104 10.833 10.663 11.031 12.076 13.509 14.791 15.456 15.330 14.549 13.431 12.362 11.720 11.784 12.579 13.755 14.649 14.619 13.466 11.637 9.996 9.298 9.721 10.799 11.800 12.231 12.103 11.788 11.646 11.744 11.858 11.705 11.176 10.405 9.666 9.222
+ 11.227 11.055 11.004 11.416 12.399 13.724 14.961 15.717 15.797 15.229 14.224 13.132 12.395 12.390 13.198 14.443 15.407 15.442 14.420 12.873 11.661 11.392 12.024 12.953 13.509 13.434 12.976 12.586 12.501 12.593 12.563 12.248 11.751 11.306 11.059 10.980
+ 11.589 11.484 11.515 11.947 12.836 13.972 15.015 15.685 15.833 15.429 14.547 13.436 12.551 12.389 13.148 14.449 15.447 15.357 14.039 12.184 10.859 10.756 11.715 12.898 13.472 13.211 12.542 12.079 12.069 12.264 12.247 11.869 11.357 11.052 11.058 11.180
+ 11.461 11.485 11.631 12.028 12.742 13.708 14.720 15.481 15.711 15.276 14.306 13.204 12.502 12.582 13.409 14.488 15.103 14.759 13.506 11.929 10.773 10.471 10.901 11.546 11.897 11.802 11.481 11.266 11.295 11.420 11.366 10.973 10.316 9.618 9.084 8.810
+ 11.233 11.131 11.149 11.552 12.426 13.596 14.714 15.433 15.534 14.991 13.989 12.913 12.265 12.435 13.426 14.719 15.482 15.065 13.470 11.415 9.897 9.540 10.213 11.200 11.767 11.663 11.188 10.818 10.768 10.861 10.768 10.339 9.727 9.212 8.945 8.870
+ 11.395 11.256 11.232 11.624 12.538 13.785 14.975 15.716 15.778 15.164 14.115 13.060 12.497 12.772 13.833 15.147 15.924 15.587 14.183 12.406 11.161 10.968 11.645 12.510 12.917 12.693 12.144 11.684 11.460 11.292 10.936 10.384 9.889 9.710 9.850 10.050
+ 11.669 11.571 11.589 11.976 12.813 13.924 14.969 15.618 15.690 15.198 14.340 13.463 12.969 13.140 13.942 14.952 15.534 15.229 14.084 12.661 11.674 11.507 11.984 12.568 12.803 12.633 12.346 12.221 12.246 12.143 11.679 10.931 10.250 9.953 10.045 10.237
+ 11.623 11.568 11.602 11.907 12.573 13.518 14.503 15.230 15.463 15.136 14.398 13.590 13.107 13.202 13.820 14.576 14.947 14.589 13.581 12.402 11.652 11.667 12.322 13.139 13.614 13.520 12.980 12.293 11.695 11.240 10.854 10.473 10.119 9.861 9.729 9.689
+ 11.394 11.157 10.929 11.033 11.647 12.687 13.851 14.770 15.169 14.972 14.330 13.577 13.108 13.188 13.786 14.530 14.894 14.529 13.515 12.354 11.650 11.717 12.390 13.179 13.624 13.563 13.130 12.531 11.847 11.046 10.155 9.388 9.045 9.259 9.821 10.284
+ 11.091 11.089 11.060 11.066 11.307 12.006 13.161 14.416 15.210 15.151 14.341 13.351 12.847 13.126 13.930 14.658 14.798 14.256 13.350 12.544 12.153 12.229 12.638 13.197 13.727 14.048 13.971 13.382 12.343 11.132 10.131 9.642 9.738 10.245 10.848 11.240
+ 11.808 11.475 10.962 10.581 10.709 11.556 12.930 14.230 14.775 14.281 13.103 12.024 11.717 12.291 13.272 14.005 14.123 13.717 13.127 12.618 12.235 11.937 11.783 11.930 12.431 13.049 13.329 12.921 11.875 10.649 9.797 9.595 9.921 10.424 10.817 11.004
+ 10.844 11.102 11.307 11.233 11.076 11.319 12.197 13.324 13.919 13.487 12.343 11.425 11.522 12.601 13.834 14.318 13.813 12.835 12.095 11.837 11.734 11.385 10.852 10.666 11.259 12.398 13.227 12.927 11.432 9.525 8.245 8.124 8.908 9.917 10.631 10.938
+ 10.006 10.616 11.191 11.134 10.562 10.236 10.795 12.045 13.045 12.962 11.885 10.813 10.771 11.890 13.280 13.823 13.128 11.786 10.732 10.387 10.387 10.116 9.449 8.922 9.174 10.212 11.263 11.383 10.273 8.551 7.250 7.030 7.778 8.873 9.743 10.171
+ 10.082 10.331 10.402 9.973 9.294 9.057 9.718 10.962 11.873 11.741 10.739 9.816 9.860 10.886 12.011 12.248 11.364 10.031 9.151 9.039 9.230 9.058 8.400 7.836 8.056 9.115 10.258 10.514 9.520 7.829 6.461 6.132 6.821 7.959 8.944 9.468
+ 9.232 9.434 9.496 9.117 8.417 7.893 7.980 8.628 9.328 9.561 9.257 8.826 8.745 9.107 9.564 9.692 9.394 8.946 8.657 8.528 8.279 7.723 7.076 6.853 7.387 8.431 9.255 9.207 8.249 6.998 6.229 6.299 6.966 7.705 8.164 8.329
+ 8.254 8.123 7.641 6.707 5.641 5.087 5.540 6.891 8.445 9.415 9.504 9.069 8.751 8.920 9.404 9.711 9.497 8.833 8.087 7.566 7.295 7.102 6.879 6.723 6.825 7.228 7.732 8.038 7.999 7.732 7.492 7.441 7.542 7.649 7.673 7.647
+ 7.188 7.075 6.692 6.002 5.315 5.151 5.807 7.014 8.053 8.288 7.672 6.781 6.351 6.696 7.518 8.211 8.358 7.976 7.363 6.768 6.233 5.722 5.330 5.295 5.768 6.591 7.332 7.615 7.420 7.088 7.006 7.269 7.640 7.811 7.713 7.547
+ 4.346 4.366 4.460 4.702 5.131 5.710 6.322 6.811 7.057 7.040 6.862 6.690 6.662 6.802 7.001 7.084 6.936 6.580 6.171 5.896 5.844 5.946 6.033 5.959 5.717 5.448 5.342 5.510 5.909 6.377 6.747 6.936 6.969 6.929 6.886 6.865
+ 4.372 4.540 4.845 5.231 5.639 6.028 6.375 6.655 6.806 6.735 6.390 5.840 5.300 5.021 5.114 5.441 5.687 5.591 5.163 4.705 4.589 4.964 5.618 6.129 6.180 5.795 5.308 5.098 5.321 5.824 6.308 6.551 6.536 6.390 6.250 6.177
+ 4.331 4.539 4.891 5.314 5.767 6.209 6.527 6.545 6.145 5.416 4.686 4.347 4.590 5.268 5.998 6.439 6.499 6.331 6.141 6.009 5.881 5.708 5.546 5.505 5.602 5.687 5.560 5.190 4.799 4.708 5.033 5.540 5.795 5.534 4.912 4.399
+ 5.761 5.468 5.142 5.106 5.499 6.160 6.723 6.846 6.411 5.581 4.700 4.122 4.067 4.558 5.423 6.366 7.068 7.313 7.093 6.603 6.135 5.902 5.905 5.955 5.829 5.454 4.995 4.750 4.958 5.616 6.466 7.137 7.365 7.134 6.679 6.333
+ 4.812 4.588 4.314 4.207 4.380 4.768 5.178 5.406 5.331 4.951 4.392 3.889 3.741 4.200 5.301 6.756 8.014 8.528 8.082 6.948 5.746 5.062 5.095 5.569 5.975 5.952 5.532 5.080 5.003 5.454 6.229 6.922 7.198 6.992 6.532 6.173
+ 5.089 4.668 4.143 3.891 4.052 4.452 4.779 4.842 4.683 4.474 4.346 4.325 4.414 4.690 5.265 6.128 7.031 7.575 7.483 6.825 5.990 5.409 5.238 5.280 5.197 4.829 4.350 4.125 4.412 5.153 6.005 6.580 6.679 6.374 5.923 5.611
+ 4.546 4.158 3.641 3.330 3.415 3.825 4.299 4.563 4.492 4.161 3.777 3.569 3.677 4.094 4.661 5.136 5.307 5.126 4.756 4.478 4.501 4.801 5.113 5.128 4.721 4.065 3.503 3.305 3.481 3.807 4.019 4.012 3.872 3.754 3.731 3.756
+ 5.325 5.095 4.871 4.892 5.177 5.503 5.629 5.509 5.309 5.213 5.234 5.239 5.140 5.062 5.260 5.859 6.665 7.252 7.294 6.831 6.235 5.900 5.931 6.115 6.178 6.061 5.962 6.101 6.467 6.807 6.847 6.556 6.165 5.946 5.968 6.072
+ 7.658 7.813 8.112 8.492 8.824 8.974 8.911 8.742 8.629 8.652 8.743 8.782 8.757 8.832 9.229 10.001 10.912 11.551 11.612 11.116 10.383 9.798 9.555 9.588 9.726 9.872 10.063 10.358 10.703 10.928 10.887 10.600 10.249 10.029 9.992 10.034
+ 5.766 6.104 6.583 6.931 6.966 6.708 6.356 6.141 6.155 6.289 6.333 6.176 5.943 5.944 6.449 7.456 8.629 9.482 9.671 9.203 8.396 7.656 7.243 7.182 7.349 7.618 7.930 8.257 8.537 8.668 8.588 8.342 8.065 7.888 7.841 7.858
+ 5.260 6.149 7.341 8.028 7.699 6.480 5.073 4.303 4.569 5.576 6.562 6.865 6.421 5.807 5.777 6.665 8.103 9.302 9.638 9.099 8.234 7.686 7.718 8.092 8.362 8.284 7.984 7.785 7.889 8.212 8.487 8.511 8.285 7.968 7.716 7.592
+ 5.819 6.021 6.295 6.489 6.551 6.545 6.568 6.656 6.761 6.820 6.830 6.855 6.970 7.210 7.579 8.071 8.667 9.271 9.676 9.652 9.125 8.312 7.650 7.518 7.955 8.616 9.028 8.960 8.588 8.316 8.401 8.725 8.907 8.670 8.114 7.652
+ 4.677 5.094 5.788 6.521 7.050 7.214 7.011 6.606 6.259 6.197 6.491 7.028 7.589 7.997 8.236 8.441 8.771 9.256 9.741 9.987 9.854 9.420 8.937 8.653 8.637 8.759 8.822 8.747 8.634 8.653 8.867 9.145 9.260 9.084 8.716 8.420
+ 5.530 6.119 6.833 7.122 6.798 6.172 5.780 5.944 6.528 7.082 7.240 7.024 6.825 7.080 7.930 9.116 10.166 10.711 10.697 10.349 9.989 9.819 9.837 9.890 9.805 9.516 9.114 8.807 8.794 9.136 9.680 10.128 10.205 9.853 9.286 8.865
+ 6.414 5.972 5.519 5.517 6.028 6.661 6.951 6.793 6.549 6.697 7.375 8.228 8.725 8.641 8.286 8.241 8.854 9.927 10.866 11.155 10.751 10.072 9.632 9.642 9.909 10.078 9.971 9.725 9.640 9.890 10.352 10.684 10.585 10.019 9.263 8.735
+ 4.643 5.125 5.978 6.961 7.733 7.997 7.687 7.063 6.589 6.645 7.260 8.085 8.654 8.744 8.559 8.574 9.153 10.229 11.318 11.851 11.594 10.810 10.051 9.747 9.918 10.225 10.305 10.087 9.832 9.866 10.244 10.659 10.669 10.085 9.169 8.485
+ 5.230 5.537 6.113 6.841 7.508 7.881 7.839 7.481 7.097 6.984 7.246 7.715 8.093 8.200 8.152 8.286 8.887 9.911 10.959 11.530 11.384 10.725 10.052 9.779 9.940 10.211 10.225 9.908 9.552 9.546 10.009 10.647 10.971 10.706 10.038 9.486
+ 4.830 5.583 6.653 7.469 7.694 7.392 6.904 6.567 6.511 6.650 6.816 6.907 6.939 7.032 7.351 8.041 9.123 10.407 11.497 11.971 11.661 10.823 10.021 9.754 10.089 10.615 10.791 10.399 9.732 9.336 9.523 10.085 10.475 10.292 9.653 9.092
+ 6.630 6.702 6.903 7.265 7.712 8.072 8.197 8.088 7.919 7.911 8.148 8.487 8.668 8.544 8.262 8.208 8.725 9.812 11.045 11.819 11.757 10.979 10.026 9.480 9.573 10.077 10.536 10.645 10.448 10.240 10.263 10.495 10.692 10.642 10.372 10.122
+ 7.022 6.653 6.313 6.405 6.925 7.454 7.566 7.262 6.995 7.249 8.059 8.927 9.254 8.895 8.337 8.321 9.218 10.698 11.967 12.367 11.844 10.925 10.271 10.207 10.582 10.998 11.162 11.057 10.856 10.727 10.705 10.720 10.697 10.624 10.537 10.481
+ 7.405 6.708 6.000 6.022 6.875 7.930 8.397 8.037 7.362 7.144 7.707 8.657 9.274 9.206 8.797 8.767 9.545 10.851 11.915 12.108 11.440 10.507 9.981 10.106 10.592 10.952 10.922 10.621 10.375 10.405 10.673 10.956 11.053 10.922 10.680 10.500
+ 7.098 6.762 6.438 6.547 7.234 8.210 8.927 8.961 8.327 7.480 7.008 7.217 7.957 8.785 9.342 9.614 9.867 10.335 10.948 11.364 11.278 10.730 10.117 9.863 10.065 10.406 10.465 10.126 9.709 9.695 10.249 11.015 11.367 10.944 9.997 9.227
+ 6.812 6.587 6.321 6.279 6.634 7.338 8.119 8.640 8.718 8.454 8.158 8.112 8.368 8.756 9.073 9.290 9.557 10.010 10.564 10.935 10.885 10.477 10.070 10.014 10.316 10.605 10.472 9.895 9.334 9.360 10.114 11.086 11.471 10.840 9.551 8.523
+ 5.843 5.850 6.089 6.790 7.922 9.135 9.948 10.071 9.588 8.880 8.350 8.175 8.268 8.461 8.703 9.104 9.770 10.613 11.310 11.512 11.121 10.413 9.863 9.801 10.178 10.628 10.788 10.606 10.368 10.418 10.812 11.220 11.174 10.480 9.436 8.665
+ 6.152 6.791 7.788 8.745 9.365 9.578 9.513 9.355 9.203 9.026 8.736 8.306 7.855 7.622 7.847 8.611 9.741 10.850 11.521 11.533 11.006 10.339 9.966 10.074 10.493 10.834 10.801 10.426 10.047 10.027 10.448 11.019 11.298 11.050 10.450 9.959
+ 5.443 6.106 7.121 8.078 8.723 9.070 9.293 9.522 9.697 9.620 9.141 8.334 7.523 7.136 7.476 8.540 10.000 11.340 12.101 12.107 11.554 10.893 10.566 10.737 11.196 11.523 11.404 10.872 10.284 10.039 10.254 10.664 10.835 10.524 9.891 9.386
+ 4.671 4.880 5.522 6.718 8.197 9.383 9.823 9.560 9.072 8.826 8.865 8.834 8.421 7.786 7.513 8.116 9.523 11.047 11.894 11.771 11.071 10.498 10.472 10.860 11.200 11.182 10.911 10.744 10.917 11.312 11.590 11.499 11.069 10.538 10.132 9.935
+ 5.799 6.067 6.556 7.170 7.791 8.322 8.734 9.064 9.345 9.540 9.543 9.275 8.813 8.408 8.369 8.850 9.724 10.637 11.217 11.303 11.006 10.592 10.292 10.174 10.178 10.235 10.352 10.592 10.979 11.426 11.757 11.805 11.524 11.019 10.496 10.170
+ 7.171 6.989 6.801 6.843 7.256 8.000 8.877 9.627 10.027 9.962 9.469 8.745 8.112 7.909 8.318 9.237 10.291 11.021 11.142 10.707 10.057 9.584 9.484 9.683 9.949 10.112 10.186 10.325 10.661 11.157 11.610 11.776 11.531 10.962 10.322 9.905
+ 5.701 6.039 6.658 7.444 8.236 8.872 9.256 9.386 9.328 9.155 8.889 8.533 8.143 7.899 8.054 8.784 10.001 11.314 12.185 12.242 11.519 10.463 9.676 9.545 10.027 10.724 11.190 11.238 11.019 10.843 10.904 11.133 11.288 11.191 10.896 10.641
+ 5.888 6.331 7.022 7.731 8.345 8.883 9.370 9.728 9.822 9.601 9.200 8.858 8.749 8.881 9.173 9.603 10.243 11.101 11.947 12.351 11.983 10.950 9.826 9.278 9.557 10.303 10.858 10.826 10.402 10.154 10.474 11.182 11.686 11.527 10.825 10.194
+ 9.306 8.800 8.173 7.914 8.262 9.073 9.960 10.578 10.798 10.687 10.364 9.917 9.437 9.106 9.167 9.762 10.754 11.729 12.224 12.036 11.365 10.667 10.331 10.416 10.673 10.793 10.695 10.588 10.786 11.400 12.189 12.674 12.466 11.558 10.381 9.565
+ 8.372 8.160 7.875 7.732 7.905 8.442 9.218 9.985 10.468 10.489 10.052 9.348 8.691 8.395 8.645 9.422 10.498 11.531 12.209 12.387 12.138 11.690 11.282 11.034 10.913 10.826 10.746 10.769 11.038 11.584 12.220 12.599 12.426 11.694 10.740 10.075
+ 4.452 5.459 6.983 8.394 9.323 9.787 9.987 10.030 9.853 9.376 8.700 8.097 7.828 7.965 8.423 9.119 10.072 11.273 12.490 13.254 13.149 12.189 10.914 10.045 9.943 10.369 10.755 10.765 10.608 10.802 11.590 12.590 13.042 12.486 11.241 10.226
+ 6.221 6.045 6.050 6.610 7.742 9.018 9.855 9.937 9.417 8.748 8.302 8.127 8.035 7.901 7.888 8.342 9.444 10.936 12.188 12.610 12.087 11.078 10.291 10.169 10.608 11.114 11.253 11.028 10.851 11.149 11.948 12.777 13.022 12.426 11.338 10.499
+ 6.610 6.260 6.075 6.614 7.943 9.497 10.464 10.378 9.434 8.295 7.573 7.436 7.629 7.841 8.049 8.515 9.467 10.771 11.916 12.365 11.968 11.093 10.356 10.163 10.438 10.760 10.758 10.443 10.180 10.347 10.969 11.644 11.842 11.338 10.423 9.718
+ 7.357 7.126 7.126 7.821 9.165 10.519 11.095 10.566 9.333 8.218 7.839 8.183 8.718 8.920 8.746 8.656 9.165 10.337 11.660 12.406 12.189 11.245 10.226 9.687 9.710 9.942 9.992 9.815 9.735 10.100 10.886 11.614 11.688 10.890 9.623 8.679
+ 6.976 6.311 5.843 6.487 8.315 10.360 11.328 10.618 8.796 7.143 6.658 7.361 8.432 9.011 8.932 8.788 9.304 10.615 12.083 12.800 12.327 11.043 9.821 9.340 9.597 10.028 10.056 9.608 9.146 9.221 9.946 10.857 11.267 10.831 9.851 9.060
+ 5.785 5.732 6.079 7.215 8.927 10.396 10.768 9.837 8.232 6.936 6.550 6.919 7.421 7.612 7.640 8.051 9.198 10.798 12.060 12.289 11.448 10.197 9.384 9.406 9.967 10.399 10.255 9.673 9.234 9.457 10.352 11.393 11.918 11.631 10.825 10.159
+ 6.930 6.754 6.897 7.817 9.375 10.787 11.177 10.261 8.579 7.073 6.391 6.490 6.858 7.074 7.207 7.682 8.796 10.334 11.657 12.173 11.775 10.892 10.119 9.774 9.744 9.712 9.506 9.279 9.352 9.903 10.762 11.494 11.699 11.292 10.574 10.034
+ 7.146 6.876 6.928 7.837 9.428 10.814 11.104 10.164 8.740 7.814 7.787 8.235 8.427 8.080 7.649 7.870 9.017 10.576 11.638 11.658 10.873 10.042 9.769 10.035 10.320 10.162 9.604 9.148 9.297 10.113 11.166 11.862 11.858 11.242 10.424 9.869
+ 6.493 6.588 7.113 8.283 9.766 10.767 10.628 9.413 7.910 7.027 7.076 7.591 7.831 7.496 7.022 7.174 8.331 10.091 11.549 11.981 11.360 10.279 9.426 9.081 9.050 9.000 8.851 8.844 9.277 10.177 11.203 11.862 11.837 11.195 10.329 9.733
+ 6.642 6.785 7.266 8.172 9.216 9.836 9.620 8.696 7.677 7.195 7.406 7.921 8.216 8.138 8.045 8.449 9.491 10.748 11.541 11.472 10.727 9.879 9.403 9.333 9.339 9.119 8.725 8.534 8.903 9.818 10.844 11.395 11.118 10.122 8.910 8.099
+ 9.361 8.469 7.502 7.389 8.369 9.764 10.521 10.053 8.678 7.331 6.820 7.265 8.150 8.862 9.203 9.444 9.936 10.672 11.240 11.172 10.390 9.317 8.567 8.483 8.909 9.377 9.525 9.385 9.313 9.629 10.293 10.895 10.961 10.341 9.364 8.640
+ 9.817 9.300 8.723 8.581 8.955 9.427 9.445 8.809 7.850 7.150 7.068 7.482 7.976 8.254 8.402 8.762 9.526 10.468 11.050 10.851 9.943 8.874 8.284 8.438 9.067 9.629 9.752 9.509 9.308 9.523 10.156 10.825 11.057 10.666 9.914 9.330
+ 7.229 7.039 7.131 7.909 9.174 10.142 10.057 8.852 7.259 6.240 6.237 6.904 7.512 7.647 7.557 7.854 8.877 10.314 11.408 11.553 10.746 9.535 8.560 8.115 8.076 8.169 8.273 8.482 8.926 9.568 10.189 10.547 10.556 10.316 10.018 9.827
+ 6.942 6.929 7.134 7.744 8.609 9.256 9.213 8.393 7.192 6.213 5.838 6.008 6.381 6.696 7.007 7.577 8.548 9.692 10.504 10.573 9.912 8.979 8.333 8.230 8.469 8.614 8.396 7.959 7.747 8.128 9.062 10.090 10.651 10.498 9.878 9.345
+ 8.201 8.038 7.983 8.257 8.729 8.958 8.583 7.701 6.849 6.572 6.949 7.516 7.693 7.332 6.910 7.143 8.355 10.122 11.520 11.789 10.885 9.473 8.413 8.142 8.446 8.754 8.657 8.231 7.928 8.162 8.949 9.887 10.459 10.420 9.960 9.543
+ 8.850 8.194 7.442 7.215 7.647 8.275 8.472 8.010 7.255 6.820 7.002 7.522 7.823 7.629 7.268 7.418 8.479 10.127 11.456 11.642 10.583 9.002 7.909 7.856 8.576 9.268 9.279 8.623 7.921 7.849 8.558 9.535 10.018 9.612 8.619 7.806
+ 9.864 9.207 8.284 7.610 7.477 7.778 8.111 8.091 7.634 6.991 6.537 6.476 6.726 7.053 7.333 7.675 8.285 9.179 10.034 10.364 9.902 8.882 7.925 7.600 7.989 8.643 8.975 8.761 8.314 8.175 8.590 9.245 9.517 9.032 8.034 7.233
+ 7.815 7.460 7.190 7.415 8.031 8.450 8.120 7.078 5.982 5.575 6.058 6.950 7.547 7.567 7.375 7.598 8.496 9.671 10.378 10.157 9.205 8.199 7.739 7.911 8.320 8.506 8.329 8.021 7.913 8.121 8.468 8.662 8.533 8.136 7.679 7.386
+ 7.723 7.688 7.763 8.020 8.275 8.176 7.516 6.499 5.662 5.472 5.939 6.586 6.852 6.584 6.193 6.331 7.322 8.843 10.112 10.442 9.723 8.470 7.423 7.037 7.242 7.606 7.717 7.473 7.083 6.836 6.863 7.064 7.228 7.216 7.061 6.916
+ 7.437 6.623 5.777 5.708 6.453 7.224 7.142 6.081 4.830 4.391 5.076 6.233 6.850 6.491 5.704 5.535 6.593 8.488 10.123 10.544 9.631 8.074 6.762 6.148 6.089 6.183 6.193 6.194 6.377 6.791 7.274 7.609 7.699 7.612 7.481 7.398
+ 11.575 11.654 11.853 12.181 12.544 12.767 12.708 12.353 11.818 11.253 10.723 10.194 9.616 9.032 8.586 8.425 8.572 8.891 9.180 9.310 9.293 9.223 9.146 8.990 8.624 7.993 7.217 6.559 6.268 6.416 6.853 7.294 7.496 7.395 7.122 6.903
+ 13.510 13.560 13.718 14.022 14.407 14.697 14.701 14.330 13.645 12.812 11.995 11.275 10.659 10.138 9.738 9.512 9.482 9.606 9.791 9.957 10.082 10.182 10.254 10.224 9.973 9.421 8.620 7.764 7.105 6.812 6.883 7.160 7.433 7.566 7.562 7.515
+ 9.332 9.392 9.851 10.947 12.407 13.516 13.650 12.794 11.543 10.571 10.056 9.597 8.697 7.333 6.072 5.597 6.088 7.034 7.650 7.513 6.869 6.337 6.338 6.745 7.057 6.876 6.248 5.576 5.252 5.359 5.681 5.958 6.085 6.122 6.153 6.186
+ 11.323 10.853 10.224 9.858 10.021 10.647 11.366 11.719 11.421 10.502 9.246 7.995 6.966 6.204 5.680 5.404 5.435 5.787 6.322 6.768 6.878 6.609 6.172 5.883 5.934 6.264 6.624 6.788 6.711 6.528 6.397 6.357 6.318 6.180 5.959 5.786
+ 10.674 10.374 10.014 9.871 10.021 10.267 10.290 9.905 9.208 8.485 7.970 7.645 7.264 6.590 5.646 4.765 4.371 4.661 5.433 6.202 6.538 6.345 5.897 5.596 5.665 6.013 6.351 6.450 6.311 6.121 6.055 6.127 6.196 6.129 5.937 5.768
+ 8.707 8.241 7.646 7.350 7.569 8.136 8.612 8.570 7.874 6.750 5.620 4.830 4.477 4.431 4.512 4.640 4.855 5.197 5.590 5.854 5.838 5.567 5.251 5.130 5.291 5.598 5.809 5.775 5.557 5.361 5.353 5.527 5.725 5.793 5.716 5.615
+ 7.804 7.766 7.650 7.431 7.144 6.865 6.645 6.462 6.252 5.991 5.735 5.571 5.525 5.519 5.436 5.243 5.041 4.984 5.131 5.359 5.445 5.248 4.830 4.418 4.224 4.293 4.500 4.690 4.808 4.906 5.028 5.114 5.030 4.708 4.259 3.933
+ 7.208 7.507 7.601 7.037 5.951 5.040 4.943 5.633 6.403 6.491 5.747 4.752 4.265 4.556 5.228 5.652 5.572 5.273 5.212 5.505 5.815 5.723 5.190 4.622 4.472 4.788 5.173 5.191 4.808 4.408 4.367 4.637 4.769 4.372 3.552 2.879
+ 8.134 8.098 7.911 7.504 6.984 6.573 6.390 6.314 6.086 5.580 4.975 4.632 4.764 5.217 5.587 5.568 5.230 4.947 5.044 5.494 5.943 6.038 5.726 5.259 4.917 4.757 4.624 4.411 4.243 4.376 4.879 5.439 5.542 4.919 3.853 3.033
+ 6.678 6.601 6.422 6.158 5.907 5.784 5.809 5.869 5.824 5.653 5.488 5.471 5.576 5.589 5.321 4.847 4.522 4.700 5.386 6.151 6.445 6.045 5.260 4.663 4.605 4.930 5.167 5.008 4.614 4.445 4.778 5.377 5.658 5.223 4.278 3.505
+ 6.590 6.228 5.816 5.705 5.977 6.369 6.487 6.144 5.507 4.961 4.781 4.921 5.074 4.959 4.577 4.224 4.240 4.730 5.458 6.025 6.154 5.868 5.429 5.108 4.991 4.971 4.904 4.768 4.683 4.776 5.022 5.210 5.098 4.614 3.959 3.491
+ 5.643 5.598 5.612 5.770 6.021 6.189 6.120 5.830 5.517 5.401 5.532 5.736 5.753 5.469 5.035 4.770 4.913 5.428 6.009 6.287 6.086 5.523 4.911 4.534 4.482 4.635 4.788 4.804 4.676 4.497 4.355 4.279 4.235 4.184 4.118 4.069
+ 7.997 7.487 6.954 6.917 7.441 8.072 8.250 7.791 7.008 6.375 6.089 5.948 5.645 5.145 4.765 4.868 5.475 6.191 6.520 6.277 5.715 5.254 5.102 5.116 5.014 4.696 4.347 4.232 4.411 4.669 4.729 4.529 4.269 4.194 4.346 4.528
+ 6.475 6.855 7.430 7.955 8.276 8.378 8.315 8.100 7.681 7.008 6.141 5.279 4.673 4.484 4.703 5.161 5.640 5.967 6.067 5.962 5.739 5.513 5.379 5.360 5.377 5.299 5.039 4.648 4.302 4.178 4.307 4.526 4.592 4.381 3.992 3.688
+ 7.636 7.463 7.322 7.422 7.760 8.090 8.107 7.695 7.022 6.400 6.036 5.897 5.789 5.584 5.362 5.347 5.682 6.247 6.704 6.738 6.302 5.659 5.178 5.048 5.149 5.180 4.942 4.519 4.222 4.315 4.767 5.235 5.307 4.829 4.053 3.470
+ 11.775 11.378 10.973 10.967 11.384 11.824 11.799 11.166 10.237 9.502 9.233 9.315 9.434 9.407 9.307 9.302 9.383 9.303 8.789 7.845 6.823 6.172 6.084 6.342 6.519 6.354 5.964 5.728 5.954 6.613 7.352 7.748 7.590 6.983 6.262 5.789
+ 11.791 11.530 11.099 10.637 10.274 10.057 9.914 9.694 9.264 8.620 7.921 7.412 7.275 7.507 7.901 8.159 8.058 7.570 6.871 6.240 5.911 5.964 6.296 6.676 6.866 6.740 6.356 5.925 5.691 5.777 6.096 6.397 6.432 6.125 5.645 5.289
+ 5.209 6.021 7.138 7.952 8.195 8.053 7.877 7.804 7.645 7.142 6.303 5.496 5.165 5.453 6.060 6.485 6.423 5.986 5.559 5.456 5.693 6.035 6.246 6.275 6.241 6.267 6.358 6.431 6.434 6.404 6.400 6.410 6.337 6.107 5.781 5.538
+ 5.417 6.291 7.564 8.608 9.043 8.912 8.533 8.196 7.953 7.669 7.233 6.725 6.377 6.382 6.719 7.159 7.435 7.430 7.236 7.056 7.040 7.195 7.417 7.587 7.658 7.661 7.656 7.688 7.757 7.834 7.872 7.830 7.689 7.472 7.247 7.103
+ 7.679 8.034 8.563 9.015 9.203 9.093 8.792 8.445 8.133 7.844 7.530 7.199 6.946 6.897 7.097 7.452 7.773 7.902 7.826 7.679 7.629 7.750 7.974 8.169 8.266 8.316 8.430 8.659 8.924 9.066 8.971 8.666 8.298 8.022 7.894 7.863
+ 7.869 7.585 7.344 7.517 8.179 9.010 9.499 9.306 8.488 7.451 6.669 6.406 6.622 7.080 7.524 7.802 7.877 7.782 7.595 7.425 7.390 7.547 7.835 8.078 8.097 7.836 7.432 7.138 7.156 7.495 7.957 8.258 8.205 7.813 7.296 6.938
+ 6.927 7.215 7.878 8.903 9.995 10.645 10.428 9.343 7.885 6.755 6.411 6.780 7.363 7.637 7.439 7.038 6.858 7.097 7.568 7.866 7.733 7.282 6.906 6.957 7.447 8.045 8.340 8.168 7.726 7.388 7.403 7.708 8.022 8.102 7.946 7.765
+ 9.568 9.880 10.441 11.089 11.570 11.624 11.120 10.163 9.051 8.117 7.555 7.344 7.330 7.363 7.391 7.448 7.567 7.725 7.858 7.925 7.956 8.023 8.175 8.397 8.624 8.806 8.937 9.050 9.167 9.262 9.280 9.182 8.978 8.728 8.509 8.384
+ 8.901 9.327 9.879 10.193 10.107 9.734 9.304 8.952 8.646 8.296 7.914 7.637 7.599 7.797 8.077 8.270 8.325 8.303 8.263 8.172 7.960 7.670 7.520 7.778 8.516 9.486 10.250 10.494 10.246 9.826 9.557 9.508 9.491 9.302 8.949 8.660
+ 10.545 10.626 10.697 10.643 10.416 10.069 9.714 9.420 9.149 8.787 8.266 7.687 7.316 7.424 8.067 8.976 9.674 9.766 9.200 8.311 7.603 7.423 7.768 8.349 8.838 9.084 9.158 9.208 9.302 9.385 9.365 9.236 9.091 9.036 9.084 9.153
+ 10.117 10.284 10.576 10.858 10.896 10.496 9.689 8.778 8.161 8.030 8.220 8.370 8.266 8.053 8.114 8.684 9.556 10.160 9.984 8.998 7.705 6.793 6.652 7.153 7.822 8.231 8.265 8.087 7.911 7.819 7.755 7.658 7.552 7.508 7.544 7.599
+ 8.712 9.184 9.814 10.169 9.964 9.239 8.319 7.595 7.276 7.283 7.367 7.348 7.273 7.368 7.796 8.443 8.924 8.837 8.086 6.999 6.140 5.924 6.333 6.940 7.229 6.955 6.291 5.667 5.451 5.705 6.185 6.536 6.529 6.181 5.706 5.378
+ 9.916 10.428 10.837 10.462 9.181 7.578 6.503 6.413 7.053 7.722 7.862 7.464 6.974 6.843 7.126 7.470 7.457 6.966 6.254 5.722 5.594 5.784 6.015 6.052 5.849 5.519 5.214 5.027 4.981 5.051 5.191 5.330 5.394 5.348 5.229 5.130
+ 7.889 7.664 7.183 6.461 5.619 4.867 4.398 4.267 4.365 4.503 4.550 4.509 4.485 4.582 4.818 5.111 5.346 5.448 5.419 5.316 5.212 5.160 5.177 5.237 5.280 5.238 5.079 4.843 4.632 4.556 4.656 4.872 5.083 5.196 5.203 5.173
+ 5.146 5.552 5.965 5.920 5.270 4.307 3.527 3.255 3.436 3.755 3.942 3.979 4.058 4.335 4.755 5.085 5.141 4.966 4.801 4.863 5.133 5.360 5.275 4.848 4.353 4.179 4.532 5.257 5.933 6.162 5.833 5.175 4.570 4.278 4.290 4.395
+ 5.634 5.672 5.668 5.521 5.180 4.714 4.299 4.120 4.249 4.579 4.880 4.967 4.824 4.612 4.527 4.640 4.855 5.010 5.038 5.020 5.084 5.258 5.414 5.385 5.144 4.863 4.790 5.023 5.397 5.604 5.439 4.970 4.482 4.234 4.253 4.359
+ 4.905 4.952 4.965 4.847 4.557 4.159 3.799 3.622 3.685 3.919 4.181 4.344 4.377 4.350 4.361 4.461 4.622 4.772 4.868 4.918 4.950 4.953 4.860 4.602 4.189 3.752 3.486 3.533 3.882 4.369 4.766 4.911 4.779 4.473 4.151 3.951
+ 7.412 7.055 6.533 6.078 5.795 5.617 5.408 5.119 4.827 4.658 4.648 4.696 4.662 4.495 4.300 4.246 4.418 4.736 5.013 5.107 5.027 4.904 4.866 4.923 4.962 4.860 4.600 4.291 4.080 4.031 4.061 3.999 3.713 3.213 2.668 2.313
+ 5.488 5.556 5.601 5.495 5.149 4.597 4.010 3.619 3.575 3.829 4.143 4.243 4.016 3.609 3.328 3.411 3.838 4.334 4.576 4.445 4.124 3.958 4.181 4.716 5.223 5.339 4.953 4.292 3.748 3.594 3.783 3.988 3.855 3.279 2.497 1.942
+ 6.546 5.991 5.260 4.764 4.592 4.465 4.065 3.397 2.848 2.856 3.487 4.319 4.755 4.513 3.864 3.396 3.517 4.118 4.679 4.721 4.215 3.594 3.383 3.758 4.412 4.819 4.662 4.076 3.519 3.392 3.724 4.161 4.258 3.830 3.103 2.552
+ 7.270 6.122 4.547 3.441 3.237 3.668 4.089 4.037 3.548 3.020 2.804 2.922 3.136 3.243 3.283 3.456 3.854 4.302 4.475 4.200 3.651 3.241 3.300 3.805 4.398 4.665 4.449 3.944 3.516 3.423 3.647 3.944 4.054 3.884 3.557 3.304
+ 5.814 5.629 5.273 4.804 4.332 3.988 3.859 3.924 4.059 4.113 4.006 3.783 3.582 3.534 3.675 3.921 4.124 4.170 4.052 3.867 3.750 3.779 3.919 4.042 4.010 3.780 3.456 3.240 3.309 3.676 4.148 4.420 4.257 3.664 2.912 2.394
+ 5.442 5.017 4.465 4.150 4.231 4.565 4.853 4.889 4.705 4.506 4.476 4.636 4.862 5.019 5.073 5.078 5.072 4.999 4.752 4.297 3.758 3.368 3.307 3.562 3.921 4.124 4.046 3.770 3.506 3.414 3.481 3.535 3.387 2.993 2.498 2.155
+ 4.807 4.616 4.365 4.218 4.246 4.372 4.426 4.291 4.023 3.840 3.965 4.441 5.053 5.454 5.411 4.980 4.470 4.211 4.309 4.579 4.724 4.582 4.250 3.983 3.958 4.135 4.309 4.315 4.163 4.002 3.936 3.901 3.718 3.283 2.717 2.311
+ 4.630 4.701 4.796 4.868 4.912 4.959 5.023 5.078 5.081 5.031 4.981 4.991 5.057 5.115 5.120 5.128 5.270 5.618 6.050 6.273 6.021 5.280 4.345 3.628 3.367 3.470 3.637 3.635 3.482 3.387 3.495 3.718 3.788 3.525 3.030 2.637
+ 6.306 5.956 5.547 5.397 5.575 5.863 5.985 5.865 5.673 5.616 5.698 5.713 5.462 5.014 4.709 4.895 5.603 6.472 6.995 6.879 6.234 5.434 4.815 4.460 4.244 4.034 3.851 3.823 4.029 4.375 4.642 4.641 4.344 3.879 3.442 3.185
+ 5.836 5.432 4.955 4.802 5.115 5.666 6.028 5.899 5.331 4.677 4.327 4.435 4.856 5.316 5.655 5.929 6.302 6.828 7.332 7.501 7.116 6.243 5.209 4.393 3.993 3.948 4.051 4.145 4.218 4.338 4.509 4.600 4.431 3.952 3.337 2.905
+ 5.578 4.950 4.307 4.316 5.082 6.039 6.441 6.005 5.133 4.531 4.596 5.113 5.526 5.488 5.187 5.146 5.714 6.707 7.530 7.651 7.005 6.006 5.182 4.788 4.699 4.624 4.403 4.121 3.984 4.100 4.379 4.614 4.638 4.440 4.152 3.949
+ 5.917 5.685 5.403 5.310 5.538 6.023 6.547 6.879 6.907 6.677 6.311 5.906 5.502 5.146 4.963 5.150 5.827 6.872 7.888 8.381 8.073 7.095 5.929 5.092 4.816 4.948 5.143 5.167 5.059 5.031 5.204 5.458 5.518 5.219 4.687 4.272
+ 6.834 6.628 6.363 6.210 6.226 6.310 6.312 6.164 5.940 5.778 5.747 5.780 5.754 5.637 5.582 5.843 6.565 7.609 8.570 8.992 8.654 7.712 6.589 5.710 5.262 5.153 5.159 5.134 5.097 5.153 5.344 5.563 5.629 5.450 5.118 4.859
+ 6.736 6.374 5.923 5.715 5.878 6.249 6.517 6.475 6.171 5.836 5.662 5.646 5.632 5.523 5.458 5.754 6.632 7.943 9.146 9.613 9.060 7.767 6.407 5.596 5.491 5.765 5.927 5.740 5.374 5.202 5.423 5.860 6.112 5.910 5.374 4.923
+ 5.677 5.441 5.199 5.211 5.544 6.020 6.368 6.441 6.306 6.147 6.079 6.069 6.012 5.894 5.864 6.137 6.807 7.720 8.528 8.880 8.616 7.833 6.814 5.884 5.295 5.153 5.413 5.902 6.374 6.612 6.526 6.187 5.774 5.454 5.289 5.237
+ 4.987 5.148 5.503 6.010 6.479 6.661 6.447 5.993 5.616 5.529 5.637 5.623 5.256 4.682 4.396 4.888 6.227 7.923 9.205 9.506 8.801 7.563 6.405 5.701 5.452 5.426 5.418 5.385 5.412 5.565 5.803 5.994 6.025 5.881 5.659 5.499
+ 5.140 4.708 4.289 4.392 5.143 6.138 6.725 6.501 5.625 4.698 4.315 4.637 5.329 5.892 6.107 6.216 6.681 7.730 9.070 10.024 9.994 8.905 7.275 5.866 5.191 5.247 5.631 5.916 5.947 5.860 5.862 6.003 6.150 6.147 5.991 5.835
+ 4.894 4.355 3.768 3.704 4.334 5.272 5.875 5.742 5.003 4.197 3.842 4.080 4.646 5.164 5.480 5.757 6.277 7.137 8.108 8.766 8.785 8.159 7.199 6.330 5.840 5.760 5.915 6.079 6.112 6.015 5.880 5.816 5.879 6.047 6.241 6.368
+ 5.050 4.926 4.795 4.786 4.928 5.106 5.136 4.919 4.537 4.222 4.204 4.545 5.093 5.609 5.959 6.226 6.632 7.319 8.165 8.806 8.855 8.188 7.063 5.983 5.393 5.426 5.872 6.363 6.621 6.600 6.445 6.335 6.361 6.499 6.660 6.762
+ 6.039 5.338 4.478 4.105 4.462 5.218 5.762 5.717 5.221 4.775 4.787 5.223 5.673 5.762 5.552 5.549 6.285 7.805 9.496 10.432 10.015 8.407 6.446 5.095 4.833 5.436 6.244 6.680 6.609 6.302 6.117 6.186 6.375 6.475 6.419 6.321
+ 5.546 4.992 4.352 4.169 4.614 5.354 5.848 5.800 5.389 5.084 5.222 5.714 6.146 6.175 5.871 5.714 6.211 7.453 8.967 9.985 9.950 8.882 7.347 6.094 5.602 5.853 6.440 6.879 6.900 6.550 6.077 5.743 5.672 5.825 6.058 6.220
+ 5.976 5.630 5.161 4.851 4.840 5.038 5.215 5.198 5.014 4.860 4.922 5.203 5.517 5.667 5.665 5.785 6.367 7.494 8.829 9.750 9.748 8.781 7.320 6.041 5.396 5.379 5.646 5.845 5.883 5.916 6.124 6.503 6.857 6.994 6.909 6.777
+ 5.989 5.565 4.832 4.044 3.552 3.651 4.370 5.392 6.209 6.439 6.072 5.463 5.079 5.201 5.803 6.661 7.558 8.373 9.022 9.362 9.202 8.463 7.333 6.247 5.661 5.770 6.393 7.105 7.511 7.464 7.084 6.609 6.232 6.015 5.925 5.899
+ 6.293 5.756 4.988 4.437 4.446 5.059 5.998 6.820 7.171 6.973 6.434 5.880 5.558 5.546 5.805 6.297 7.023 7.942 8.858 9.428 9.336 8.524 7.299 6.187 5.636 5.759 6.312 6.892 7.203 7.190 6.978 6.720 6.493 6.299 6.136 6.036
+ 5.358 5.169 4.923 4.768 4.753 4.804 4.830 4.824 4.873 5.055 5.337 5.594 5.732 5.823 6.086 6.717 7.682 8.664 9.227 9.090 8.321 7.303 6.494 6.174 6.315 6.668 6.947 6.991 6.809 6.521 6.255 6.088 6.029 6.045 6.090 6.124
+ 7.651 7.280 6.647 5.943 5.374 5.077 5.058 5.207 5.383 5.514 5.621 5.758 5.932 6.099 6.240 6.445 6.889 7.672 8.652 9.431 9.568 8.884 7.627 6.361 5.630 5.642 6.186 6.827 7.198 7.187 6.916 6.575 6.290 6.087 5.951 5.879
+ 5.934 5.867 5.787 5.765 5.831 5.949 6.031 5.998 5.839 5.625 5.463 5.433 5.553 5.809 6.208 6.793 7.589 8.496 9.252 9.524 9.104 8.077 6.829 5.858 5.496 5.745 6.304 6.792 6.973 6.852 6.603 6.408 6.348 6.397 6.478 6.533
+ 5.922 5.653 5.397 5.450 5.831 6.266 6.441 6.283 5.991 5.804 5.741 5.594 5.187 4.651 4.421 4.926 6.209 7.817 9.069 9.474 9.004 8.018 6.986 6.231 5.865 5.855 6.101 6.440 6.662 6.595 6.251 5.872 5.790 6.160 6.801 7.293
+ 6.431 6.438 6.460 6.483 6.454 6.299 5.986 5.580 5.226 5.052 5.056 5.082 4.943 4.618 4.364 4.603 5.613 7.234 8.850 9.703 9.383 8.119 6.652 5.744 5.693 6.191 6.625 6.567 6.060 5.505 5.281 5.434 5.700 5.785 5.636 5.452
+ 6.127 6.182 6.311 6.485 6.580 6.434 6.001 5.439 5.041 5.020 5.315 5.618 5.616 5.292 5.011 5.288 6.388 8.049 9.567 10.212 9.688 8.325 6.852 5.940 5.821 6.236 6.699 6.857 6.674 6.357 6.128 6.043 5.998 5.876 5.676 5.517
+ 5.981 5.981 5.892 5.682 5.491 5.551 5.961 6.525 6.837 6.586 5.807 4.883 4.284 4.285 4.870 5.859 7.059 8.285 9.283 9.712 9.319 8.182 6.788 5.783 5.553 5.971 6.533 6.775 6.615 6.335 6.245 6.371 6.451 6.234 5.763 5.370
+ 6.158 5.992 5.897 6.110 6.612 7.107 7.264 6.986 6.466 5.999 5.723 5.558 5.368 5.182 5.237 5.776 6.799 7.981 8.849 9.078 8.660 7.853 6.987 6.308 5.939 5.919 6.203 6.637 6.964 6.949 6.551 5.995 5.632 5.674 6.021 6.340
+ 10.763 10.024 9.021 8.347 8.272 8.547 8.600 7.975 6.678 5.179 4.101 3.807 4.228 4.992 5.745 6.390 7.056 7.872 8.730 9.277 9.132 8.189 6.754 5.408 4.689 4.796 5.504 6.338 6.852 6.858 6.463 5.943 5.553 5.398 5.422 5.487
+ 10.915 9.775 8.225 7.168 7.019 7.450 7.718 7.270 6.144 4.868 4.028 3.875 4.265 4.897 5.582 6.307 7.088 7.815 8.263 8.251 7.795 7.117 6.487 6.073 5.888 5.869 5.965 6.158 6.413 6.634 6.694 6.517 6.135 5.671 5.271 5.044
+ 6.977 6.810 6.560 6.355 6.287 6.351 6.437 6.405 6.186 5.841 5.500 5.250 5.065 4.886 4.766 4.943 5.702 7.087 8.710 9.874 9.987 8.982 7.416 6.121 5.657 5.983 6.563 6.826 6.571 6.034 5.606 5.491 5.598 5.705 5.696 5.636
+ 6.246 6.051 5.855 5.854 6.063 6.305 6.393 6.321 6.269 6.399 6.647 6.715 6.324 5.513 4.726 4.560 5.353 6.902 8.548 9.555 9.521 8.571 7.218 6.045 5.419 5.375 5.697 6.083 6.299 6.265 6.059 5.848 5.790 5.930 6.177 6.365
+ 4.317 4.838 5.590 6.182 6.360 6.154 5.834 5.704 5.891 6.262 6.519 6.411 5.914 5.274 4.871 5.008 5.737 6.822 7.858 8.462 8.444 7.875 7.027 6.238 5.764 5.686 5.907 6.229 6.456 6.484 6.329 6.096 5.901 5.807 5.801 5.824
+ 4.171 4.494 5.034 5.606 6.004 6.092 5.870 5.491 5.181 5.109 5.286 5.560 5.727 5.689 5.545 5.553 5.974 6.886 8.075 9.097 9.472 8.937 7.611 5.979 4.672 4.164 4.533 5.432 6.299 6.682 6.477 5.938 5.464 5.311 5.444 5.620
+ 4.530 4.532 4.713 5.215 5.936 6.536 6.683 6.330 5.771 5.406 5.424 5.664 5.796 5.656 5.442 5.584 6.381 7.698 8.978 9.579 9.180 7.981 6.545 5.446 4.959 4.996 5.280 5.566 5.771 5.921 6.044 6.094 5.992 5.720 5.378 5.140
+ 4.896 4.843 4.966 5.450 6.172 6.715 6.693 6.093 5.326 4.912 5.059 5.515 5.810 5.711 5.449 5.543 6.332 7.620 8.746 9.034 8.282 6.909 5.659 5.097 5.279 5.803 6.162 6.104 5.739 5.373 5.236 5.326 5.464 5.487 5.379 5.264
+ 4.605 4.732 5.002 5.414 5.916 6.387 6.671 6.655 6.341 5.863 5.411 5.126 5.035 5.089 5.260 5.598 6.182 6.983 7.772 8.196 7.989 7.186 6.142 5.333 5.056 5.264 5.648 5.888 5.867 5.689 5.525 5.439 5.362 5.202 4.971 4.795
+ 5.434 5.075 4.734 4.828 5.437 6.220 6.697 6.624 6.153 5.642 5.326 5.149 4.909 4.543 4.279 4.477 5.299 6.504 7.544 7.914 7.482 6.541 5.601 5.066 5.047 5.385 5.811 6.101 6.146 5.944 5.566 5.123 4.732 4.468 4.339 4.299
+ 4.113 4.285 4.730 5.447 6.173 6.513 6.276 5.705 5.322 5.487 6.054 6.467 6.248 5.451 4.662 4.527 5.209 6.245 6.924 6.852 6.215 5.561 5.323 5.511 5.807 5.914 5.805 5.679 5.712 5.869 5.952 5.794 5.407 4.949 4.588 4.402
+ 6.481 5.983 5.345 5.040 5.336 6.120 6.968 7.423 7.276 6.662 5.934 5.419 5.247 5.358 5.630 6.007 6.488 7.023 7.439 7.504 7.095 6.345 5.600 5.213 5.303 5.696 6.072 6.218 6.155 6.056 6.039 6.038 5.866 5.425 4.845 4.429
+ 6.415 6.432 6.353 6.095 5.740 5.507 5.576 5.907 6.250 6.324 6.033 5.526 5.078 4.903 5.059 5.481 6.060 6.671 7.141 7.266 6.924 6.207 5.440 5.008 5.092 5.545 6.005 6.180 6.053 5.837 5.734 5.732 5.637 5.294 4.786 4.403
+ 5.310 5.295 5.308 5.433 5.755 6.259 6.757 6.944 6.588 5.730 4.710 3.965 3.755 4.035 4.580 5.211 5.914 6.711 7.462 7.825 7.492 6.500 5.324 4.594 4.641 5.253 5.866 6.030 5.741 5.371 5.262 5.395 5.435 5.090 4.448 3.932
+ 6.061 5.912 5.753 5.685 5.623 5.343 4.729 3.957 3.425 3.442 3.947 4.526 4.751 4.550 4.293 4.499 5.387 6.659 7.683 7.926 7.311 6.230 5.253 4.768 4.816 5.178 5.580 5.844 5.913 5.802 5.555 5.232 4.910 4.660 4.512 4.450
+ 6.473 6.088 5.615 5.375 5.420 5.491 5.287 4.767 4.230 4.063 4.392 4.949 5.291 5.183 4.815 4.657 5.056 5.929 6.788 7.102 6.684 5.818 5.025 4.692 4.831 5.152 5.329 5.252 5.051 4.927 4.941 4.962 4.787 4.343 3.778 3.382
+ 6.918 6.819 6.480 5.836 5.082 4.605 4.678 5.213 5.796 6.006 5.734 5.213 4.784 4.624 4.688 4.870 5.154 5.578 6.070 6.365 6.183 5.513 4.711 4.263 4.372 4.772 4.962 4.674 4.135 3.856 4.120 4.658 4.845 4.276 3.186 2.318
+ 5.291 5.307 5.270 5.138 4.975 4.926 5.091 5.407 5.666 5.649 5.293 4.740 4.249 4.037 4.181 4.609 5.160 5.641 5.867 5.718 5.212 4.548 4.036 3.928 4.243 4.743 5.093 5.095 4.811 4.463 4.214 4.018 3.690 3.122 2.445 1.975
+ 6.209 6.114 6.006 6.000 6.175 6.501 6.827 6.927 6.626 5.900 4.920 3.987 3.404 3.348 3.809 4.610 5.480 6.148 6.425 6.271 5.807 5.269 4.888 4.767 4.824 4.865 4.739 4.463 4.210 4.157 4.321 4.514 4.482 4.118 3.573 3.172
+ 5.219 4.709 4.278 4.517 5.419 6.338 6.559 5.933 4.987 4.419 4.468 4.761 4.758 4.337 3.943 4.151 5.080 6.212 6.816 6.554 5.741 5.024 4.809 4.978 5.104 4.923 4.573 4.424 4.677 5.160 5.493 5.426 5.027 4.567 4.258 4.133
+ 6.227 6.438 6.744 6.961 6.918 6.568 6.033 5.543 5.287 5.277 5.347 5.305 5.113 4.924 4.942 5.210 5.539 5.647 5.409 4.986 4.713 4.821 5.246 5.682 5.844 5.704 5.497 5.502 5.798 6.202 6.432 6.328 5.956 5.517 5.183 5.018
+ 4.192 4.115 4.224 4.765 5.671 6.540 6.924 6.676 6.056 5.503 5.274 5.276 5.222 4.948 4.606 4.540 4.960 5.721 6.387 6.557 6.168 5.536 5.117 5.183 5.664 6.250 6.643 6.748 6.681 6.627 6.683 6.809 6.894 6.867 6.756 6.659
+ 5.961 5.617 5.315 5.476 6.146 6.911 7.193 6.708 5.697 4.746 4.362 4.619 5.168 5.537 5.485 5.131 4.799 4.742 4.979 5.330 5.590 5.675 5.651 5.649 5.769 6.030 6.383 6.746 7.026 7.147 7.069 6.806 6.429 6.040 5.730 5.562
+ 7.843 7.241 6.462 6.034 6.196 6.718 7.080 6.887 6.183 5.440 5.184 5.583 6.301 6.776 6.685 6.215 5.909 6.185 6.963 7.701 7.837 7.267 6.438 5.980 6.191 6.825 7.351 7.445 7.257 7.217 7.576 8.118 8.329 7.880 6.980 6.258
+ 8.869 8.708 8.380 7.945 7.568 7.433 7.588 7.865 7.993 7.818 7.443 7.145 7.137 7.386 7.658 7.740 7.622 7.474 7.452 7.528 7.529 7.328 7.000 6.772 6.810 7.065 7.332 7.468 7.547 7.769 8.218 8.698 8.855 8.494 7.804 7.258
+ 7.136 7.009 6.963 7.189 7.624 7.951 7.839 7.243 6.466 5.939 5.890 6.180 6.459 6.476 6.284 6.159 6.317 6.687 6.964 6.881 6.470 6.060 6.008 6.384 6.895 7.116 6.856 6.345 6.076 6.416 7.285 8.173 8.500 8.049 7.145 6.439
+ 6.332 6.382 6.518 6.757 7.032 7.181 7.016 6.450 5.597 4.748 4.215 4.135 4.383 4.679 4.805 4.772 4.792 5.065 5.578 6.083 6.295 6.138 5.823 5.682 5.902 6.385 6.858 7.119 7.196 7.267 7.438 7.597 7.501 7.026 6.341 5.838
+ 5.990 6.185 6.428 6.532 6.397 6.066 5.667 5.326 5.094 4.958 4.873 4.797 4.695 4.549 4.388 4.307 4.425 4.799 5.340 5.827 6.036 5.898 5.558 5.280 5.259 5.508 5.880 6.222 6.485 6.717 6.957 7.143 7.146 6.906 6.530 6.249
+ 5.085 5.242 5.614 6.202 6.850 7.294 7.332 6.985 6.488 6.108 5.942 5.873 5.716 5.428 5.168 5.163 5.489 5.970 6.293 6.258 5.934 5.608 5.547 5.797 6.160 6.374 6.339 6.195 6.200 6.508 7.029 7.475 7.568 7.242 6.705 6.306
+ 5.410 5.519 5.739 6.073 6.501 6.946 7.257 7.269 6.911 6.299 5.698 5.367 5.386 5.619 5.833 5.898 5.863 5.877 6.011 6.176 6.215 6.074 5.882 5.849 6.062 6.392 6.599 6.560 6.396 6.361 6.599 6.980 7.200 7.052 6.628 6.268
+ 7.000 7.281 7.556 7.525 7.152 6.681 6.389 6.330 6.338 6.239 6.049 5.931 5.963 6.006 5.829 5.396 4.985 4.970 5.444 6.056 6.276 5.870 5.158 4.755 5.042 5.822 6.528 6.762 6.677 6.792 7.442 8.368 8.898 8.561 7.581 6.744
+ 6.688 6.868 7.045 7.006 6.683 6.210 5.818 5.671 5.775 6.015 6.254 6.414 6.476 6.442 6.331 6.191 6.105 6.146 6.321 6.551 6.739 6.843 6.910 6.996 7.080 7.061 6.870 6.597 6.487 6.766 7.426 8.161 8.558 8.412 7.900 7.463
+ 7.202 7.147 7.141 7.285 7.563 7.843 7.988 7.964 7.847 7.734 7.651 7.567 7.473 7.433 7.523 7.722 7.876 7.801 7.463 7.053 6.861 7.050 7.507 7.931 8.068 7.899 7.617 7.429 7.374 7.342 7.239 7.136 7.226 7.620 8.186 8.604
+ 5.543 5.488 5.626 6.207 7.221 8.354 9.204 9.549 9.442 9.089 8.655 8.194 7.737 7.386 7.277 7.419 7.596 7.482 6.910 6.061 5.378 5.241 5.670 6.305 6.693 6.629 6.275 5.976 5.959 6.175 6.391 6.415 6.234 5.978 5.778 5.681
+ 5.755 6.186 6.919 7.747 8.474 9.010 9.392 9.700 9.910 9.845 9.302 8.294 7.206 6.642 7.016 8.178 9.404 9.825 9.034 7.387 5.772 4.992 5.245 6.065 6.748 6.882 6.571 6.232 6.198 6.470 6.784 6.874 6.676 6.320 5.991 5.806
+ 4.961 5.442 6.410 7.759 9.204 10.369 10.997 11.074 10.745 10.125 9.221 8.086 7.023 6.568 7.139 8.598 10.160 10.827 10.103 8.401 6.797 6.259 6.964 8.225 9.065 8.943 8.070 7.119 6.643 6.706 6.969 7.057 6.850 6.484 6.159 5.986
+ 5.257 5.427 6.000 7.187 8.898 10.660 11.834 11.966 11.046 9.505 7.986 7.056 6.990 7.701 8.805 9.787 10.215 9.947 9.208 8.470 8.169 8.428 8.989 9.416 9.409 9.002 8.485 8.142 8.032 7.986 7.812 7.485 7.164 7.023 7.079 7.184
+ 5.226 5.831 6.972 8.439 9.851 10.777 10.950 10.420 9.501 8.565 7.850 7.434 7.339 7.617 8.278 9.149 9.837 9.931 9.321 8.356 7.662 7.705 8.430 9.286 9.618 9.146 8.147 7.220 6.847 7.080 7.566 7.845 7.657 7.071 6.384 5.936
+ 6.371 6.598 7.291 8.547 9.998 10.937 10.847 9.836 8.554 7.636 7.210 6.934 6.512 6.131 6.349 7.487 9.121 10.242 10.029 8.583 6.937 6.274 6.990 8.388 9.264 8.870 7.468 6.055 5.562 6.182 7.340 8.200 8.255 7.572 6.634 5.994
+ 6.614 6.649 6.965 7.737 8.777 9.593 9.771 9.312 8.592 7.983 7.523 6.971 6.202 5.498 5.404 6.217 7.591 8.691 8.821 8.004 6.982 6.610 7.142 8.033 8.416 7.825 6.573 5.470 5.184 5.766 6.687 7.288 7.222 6.603 5.833 5.327
+ 7.222 7.266 7.379 7.558 7.743 7.856 7.879 7.863 7.845 7.745 7.390 6.688 5.808 5.170 5.182 5.907 6.938 7.648 7.636 7.021 6.334 6.089 6.382 6.851 7.000 6.624 5.957 5.464 5.462 5.898 6.431 6.705 6.589 6.197 5.765 5.496
+ 7.591 6.781 5.700 5.041 5.177 5.958 6.879 7.442 7.416 6.870 6.038 5.209 4.677 4.694 5.347 6.423 7.429 7.851 7.503 6.693 6.021 5.938 6.405 6.937 7.004 6.454 5.619 5.033 5.019 5.479 6.035 6.334 6.277 5.999 5.707 5.536
+ 6.754 6.701 6.568 6.376 6.248 6.353 6.765 7.327 7.686 7.500 6.702 5.609 4.772 4.632 5.221 6.134 6.796 6.848 6.373 5.812 5.624 5.954 6.542 6.928 6.789 6.156 5.373 4.848 4.786 5.099 5.506 5.736 5.679 5.405 5.082 4.874
+ 6.302 6.371 6.472 6.587 6.757 7.045 7.444 7.800 7.860 7.437 6.574 5.584 4.893 4.782 5.203 5.811 6.199 6.165 5.833 5.544 5.598 6.041 6.637 7.042 7.032 6.637 6.088 5.651 5.469 5.502 5.606 5.639 5.552 5.380 5.206 5.099
+ 6.483 6.172 5.903 6.030 6.546 7.062 7.149 6.723 6.108 5.719 5.690 5.794 5.715 5.405 5.145 5.263 5.774 6.314 6.453 6.105 5.646 5.608 6.209 7.129 7.736 7.579 6.724 5.690 5.060 5.077 5.543 6.027 6.187 5.963 5.553 5.249
+ 2.932 3.941 5.450 6.769 7.439 7.448 7.128 6.843 6.725 6.631 6.327 5.721 4.975 4.425 4.364 4.852 5.656 6.368 6.639 6.401 5.938 5.726 6.123 7.082 8.115 8.577 8.105 6.898 5.620 4.948 5.106 5.726 6.158 5.989 5.356 4.802
+ 6.127 5.926 5.574 5.188 4.933 4.953 5.272 5.740 6.091 6.091 5.699 5.108 4.640 4.552 4.876 5.404 5.817 5.884 5.598 5.190 4.991 5.251 5.988 6.964 7.795 8.147 7.908 7.245 6.501 5.996 5.855 5.973 6.126 6.148 6.035 5.917
+ 5.519 5.091 4.775 5.147 6.266 7.548 8.192 7.797 6.649 5.473 4.864 4.892 5.169 5.246 4.997 4.647 4.515 4.722 5.138 5.567 5.946 6.374 6.944 7.573 7.998 7.972 7.465 6.715 6.078 5.805 5.911 6.218 6.501 6.636 6.636 6.594
+ 6.672 6.343 6.180 6.696 7.892 9.158 9.702 9.146 7.801 6.394 5.521 5.270 5.298 5.229 4.989 4.798 4.890 5.260 5.684 5.969 6.172 6.559 7.335 8.386 9.283 9.565 9.068 8.053 7.030 6.423 6.337 6.557 6.756 6.739 6.543 6.362
+ 5.218 5.563 6.388 7.708 9.188 10.226 10.336 9.518 8.283 7.277 6.805 6.665 6.414 5.810 5.055 4.608 4.775 5.437 6.164 6.608 6.804 7.118 7.871 8.989 9.977 10.268 9.658 8.487 7.414 6.964 7.189 7.684 7.920 7.641 7.029 6.538
+ 3.671 3.905 4.699 6.274 8.323 10.021 10.539 9.660 7.976 6.472 5.837 6.032 6.446 6.469 5.991 5.423 5.299 5.814 6.708 7.541 8.086 8.476 9.006 9.780 10.550 10.887 10.536 9.645 8.683 8.104 8.030 8.198 8.202 7.826 7.214 6.750
+ 5.058 5.361 6.222 7.761 9.591 10.874 10.858 9.463 7.423 5.813 5.318 5.803 6.514 6.715 6.232 5.507 5.179 5.570 6.511 7.574 8.456 9.167 9.886 10.669 11.303 11.444 10.920 9.916 8.886 8.250 8.111 8.228 8.229 7.913 7.395 7.000
+ 6.198 6.369 7.047 8.424 10.097 11.137 10.726 8.845 6.403 4.652 4.316 5.142 6.196 6.624 6.265 5.637 5.420 5.896 6.831 7.792 8.564 9.267 10.120 11.098 11.848 11.939 11.225 10.007 8.853 8.215 8.154 8.356 8.407 8.105 7.585 7.188
+ 5.370 5.982 7.193 8.813 10.350 11.128 10.663 9.020 6.867 5.125 4.436 4.822 5.765 6.625 7.057 7.146 7.194 7.410 7.766 8.125 8.467 8.961 9.786 10.866 11.778 11.989 11.263 9.907 8.629 8.067 8.341 8.975 9.277 8.874 7.997 7.290
+ 4.808 5.706 7.302 9.170 10.696 11.270 10.581 8.849 6.777 5.218 4.700 5.148 5.985 6.556 6.578 6.266 6.089 6.352 6.972 7.607 8.023 8.323 8.838 9.745 10.787 11.384 11.084 9.990 8.763 8.147 8.381 9.003 9.225 8.595 7.400 6.458
+ 5.448 6.055 7.205 8.686 10.084 10.869 10.641 9.401 7.627 6.064 5.303 5.432 6.004 6.369 6.140 5.458 4.851 4.825 5.499 6.567 7.595 8.361 8.954 9.561 10.166 10.479 10.177 9.247 8.098 7.305 7.176 7.519 7.823 7.696 7.194 6.745
+ 9.209 9.583 10.158 10.663 10.844 10.539 9.728 8.541 7.247 6.184 5.607 5.543 5.746 5.843 5.596 5.091 4.688 4.750 5.361 6.278 7.146 7.784 8.273 8.778 9.275 9.484 9.104 8.149 7.057 6.412 6.503 7.081 7.562 7.512 7.005 6.527
+ 11.504 11.513 11.457 11.262 10.911 10.422 9.781 8.932 7.872 6.754 5.864 5.430 5.436 5.609 5.645 5.476 5.319 5.460 5.951 6.535 6.885 6.934 6.955 7.280 7.911 8.422 8.300 7.448 6.372 5.819 6.146 6.982 7.518 7.199 6.223 5.383
+ 10.189 10.184 10.086 9.800 9.297 8.619 7.822 6.945 6.047 5.261 4.764 4.659 4.839 5.017 4.926 4.544 4.152 4.128 4.653 5.567 6.501 7.167 7.529 7.731 7.863 7.842 7.523 6.946 6.423 6.332 6.770 7.395 7.653 7.232 6.362 5.664
+ 7.001 7.814 8.893 9.523 9.288 8.290 7.006 5.955 5.422 5.400 5.685 5.997 6.068 5.729 5.015 4.227 3.812 4.096 5.029 6.182 7.041 7.374 7.363 7.375 7.581 7.784 7.632 7.020 6.280 5.944 6.264 6.942 7.344 7.043 6.215 5.513
+ 8.745 8.909 8.997 8.737 8.062 7.176 6.412 6.003 5.959 6.115 6.273 6.306 6.165 5.853 5.418 4.978 4.708 4.757 5.130 5.673 6.173 6.523 6.778 7.053 7.347 7.491 7.282 6.709 6.036 5.638 5.707 6.085 6.389 6.333 5.971 5.637
+ 7.938 8.286 8.760 9.071 9.051 8.728 8.263 7.810 7.430 7.109 6.832 6.625 6.527 6.527 6.553 6.525 6.420 6.301 6.259 6.347 6.544 6.787 7.026 7.246 7.436 7.561 7.573 7.458 7.271 7.112 7.049 7.068 7.085 7.030 6.913 6.816
+ 12.756 13.096 13.508 13.650 13.343 12.676 11.914 11.294 10.876 10.556 10.195 9.743 9.264 8.853 8.535 8.253 7.929 7.557 7.227 7.067 7.140 7.388 7.649 7.756 7.628 7.320 6.988 6.811 6.892 7.193 7.553 7.763 7.682 7.326 6.870 6.557
+ 11.512 11.917 12.274 12.087 11.251 10.134 9.246 8.818 8.680 8.502 8.135 7.701 7.396 7.226 6.989 6.523 5.937 5.579 5.724 6.291 6.877 7.092 6.890 6.581 6.514 6.749 7.025 7.043 6.779 6.500 6.489 6.750 7.002 6.963 6.642 6.333
+ 8.398 8.866 9.429 9.668 9.473 9.100 8.905 9.006 9.193 9.140 8.703 8.022 7.354 6.847 6.467 6.127 5.842 5.727 5.833 6.041 6.135 6.033 5.904 6.033 6.529 7.161 7.520 7.382 6.938 6.642 6.812 7.332 7.752 7.702 7.242 6.808
+ 8.074 8.081 8.030 7.856 7.569 7.277 7.121 7.176 7.388 7.593 7.613 7.375 6.961 6.564 6.375 6.470 6.760 7.050 7.159 7.033 6.780 6.596 6.637 6.909 7.263 7.502 7.517 7.369 7.239 7.286 7.520 7.785 7.882 7.721 7.406 7.159
+ 9.422 9.255 9.115 9.196 9.485 9.709 9.525 8.800 7.753 6.836 6.402 6.451 6.655 6.658 6.408 6.214 6.458 7.195 8.009 8.299 7.785 6.813 6.138 6.338 7.318 8.343 8.617 7.926 6.815 6.130 6.307 7.014 7.459 7.096 6.114 5.281
+ 8.992 9.320 9.962 10.765 11.364 11.335 10.500 9.137 7.857 7.190 7.196 7.436 7.362 6.808 6.161 6.040 6.736 7.890 8.707 8.571 7.571 6.477 6.179 6.998 8.416 9.454 9.403 8.333 7.015 6.305 6.497 7.153 7.497 7.075 6.114 5.330
+ 10.183 9.999 10.006 10.513 11.321 11.783 11.330 10.006 8.489 7.547 7.431 7.732 7.849 7.585 7.329 7.627 8.571 9.586 9.854 9.012 7.515 6.318 6.147 6.962 8.040 8.571 8.265 7.493 6.909 6.907 7.350 7.731 7.591 6.852 5.869 5.184
+ 8.986 9.390 10.148 11.037 11.622 11.474 10.520 9.195 8.187 7.919 8.220 8.496 8.281 7.680 7.286 7.617 8.578 9.456 9.471 8.444 6.976 6.003 6.078 6.987 7.982 8.391 8.094 7.505 7.158 7.271 7.644 7.884 7.731 7.217 6.605 6.203
+ 10.200 10.607 11.219 11.710 11.765 11.243 10.269 9.187 8.374 8.024 8.045 8.159 8.133 7.969 7.890 8.111 8.599 9.012 8.916 8.125 6.910 5.869 5.550 6.067 7.015 7.745 7.817 7.280 6.597 6.270 6.458 6.889 7.104 6.843 6.256 5.779
+ 8.660 8.977 9.496 10.004 10.256 10.086 9.512 8.746 8.071 7.656 7.450 7.247 6.891 6.451 6.210 6.445 7.160 7.996 8.432 8.136 7.228 6.223 5.692 5.873 6.519 7.091 7.153 6.667 5.976 5.517 5.482 5.705 5.833 5.638 5.206 4.852
+ 8.750 8.838 8.986 9.145 9.239 9.187 8.930 8.466 7.864 7.243 6.725 6.380 6.215 6.201 6.310 6.528 6.809 7.050 7.109 6.904 6.507 6.142 6.046 6.287 6.676 6.889 6.713 6.236 5.799 5.730 6.060 6.467 6.511 5.997 5.165 4.538
+ 8.087 8.741 9.543 9.886 9.525 8.722 7.987 7.643 7.617 7.581 7.304 6.854 6.520 6.521 6.799 7.072 7.067 6.729 6.237 5.841 5.684 5.745 5.908 6.052 6.095 5.995 5.755 5.453 5.230 5.213 5.402 5.623 5.642 5.348 4.872 4.512
+ 9.859 9.774 9.562 9.173 8.614 7.976 7.429 7.143 7.184 7.459 7.752 7.852 7.685 7.357 7.066 6.948 6.978 6.998 6.856 6.537 6.186 5.996 6.052 6.252 6.381 6.264 5.892 5.428 5.088 4.992 5.089 5.211 5.190 4.980 4.681 4.467
+ 9.224 10.091 11.088 11.340 10.525 9.101 7.908 7.497 7.752 8.066 7.875 7.078 6.052 5.310 5.137 5.464 6.006 6.469 6.675 6.572 6.219 5.780 5.485 5.503 5.799 6.106 6.105 5.685 5.065 4.645 4.683 5.073 5.444 5.484 5.207 4.920
+ 11.324 11.432 11.419 11.033 10.225 9.224 8.384 7.936 7.836 7.816 7.589 7.050 6.322 5.658 5.271 5.220 5.413 5.678 5.862 5.901 5.836 5.771 5.799 5.923 6.033 5.966 5.626 5.083 4.554 4.273 4.327 4.593 4.834 4.879 4.746 4.602
+ 8.677 8.517 8.393 8.518 8.901 9.288 9.319 8.797 7.868 6.940 6.411 6.383 6.619 6.752 6.605 6.326 6.243 6.541 7.062 7.408 7.282 6.766 6.283 6.248 6.705 7.263 7.407 6.919 6.065 5.363 5.152 5.325 5.460 5.221 4.671 4.210
+ 9.275 8.869 8.584 8.971 10.037 11.121 11.355 10.360 8.608 7.111 6.676 7.293 8.175 8.412 7.721 6.667 6.174 6.735 7.978 8.969 8.992 8.150 7.271 7.193 8.046 9.133 9.524 8.844 7.575 6.621 6.527 7.031 7.337 6.863 5.784 4.889
+ 8.560 7.824 7.135 7.390 8.811 10.689 11.883 11.674 10.302 8.729 7.862 7.856 8.089 7.809 6.880 5.961 5.953 7.157 8.922 10.101 9.979 8.889 7.946 8.115 9.380 10.734 11.030 9.958 8.313 7.308 7.521 8.393 8.728 7.769 5.914 4.437
+ 7.537 7.394 7.564 8.506 10.155 11.788 12.453 11.665 9.815 7.946 7.016 7.209 7.857 8.054 7.461 6.625 6.517 7.648 9.540 11.035 11.225 10.219 9.064 8.853 9.783 10.974 11.237 10.132 8.373 7.220 7.376 8.371 8.988 8.364 6.783 5.453
+ 7.819 7.279 7.031 7.939 9.998 12.149 13.018 11.982 9.686 7.555 6.711 7.156 7.903 7.906 6.996 6.037 6.175 7.823 10.240 12.062 12.344 11.249 9.852 9.232 9.635 10.383 10.550 9.793 8.630 7.937 8.142 8.835 9.125 8.450 7.102 6.023
+ 6.758 6.793 7.264 8.543 10.477 12.276 12.950 12.006 9.882 7.726 6.617 6.813 7.613 7.984 7.459 6.555 6.341 7.480 9.560 11.336 11.708 10.641 9.217 8.738 9.637 11.124 11.885 11.209 9.585 8.231 8.010 8.700 9.264 8.850 7.595 6.500
+ 7.692 7.260 7.019 7.664 9.299 11.224 12.376 12.092 10.603 8.864 7.825 7.737 8.050 7.971 7.226 6.349 6.240 7.350 9.197 10.666 10.887 9.941 8.810 8.561 9.460 10.763 11.361 10.725 9.335 8.235 8.113 8.730 9.194 8.802 7.699 6.751
+ 7.472 7.446 7.542 7.987 8.913 10.163 11.236 11.529 10.769 9.307 7.948 7.366 7.580 7.958 7.826 7.133 6.566 6.931 8.344 9.995 10.763 10.181 8.865 7.994 8.264 9.287 9.973 9.555 8.307 7.284 7.330 8.287 9.158 9.062 8.066 7.113
+ 8.431 7.901 7.431 7.707 8.906 10.475 11.480 11.267 9.932 8.237 7.032 6.648 6.744 6.706 6.254 5.724 5.775 6.768 8.354 9.670 9.986 9.288 8.283 7.810 8.164 8.889 9.218 8.767 7.863 7.240 7.373 8.058 8.609 8.488 7.789 7.145
+ 9.800 9.554 9.322 9.432 10.009 10.820 11.355 11.160 10.192 8.913 7.996 7.834 8.235 8.582 8.371 7.663 7.051 7.136 7.956 8.902 9.215 8.656 7.733 7.260 7.634 8.474 8.962 8.585 7.599 6.786 6.736 7.313 7.801 7.592 6.769 6.027
+ 8.845 8.916 9.220 9.876 10.744 11.400 11.373 10.504 9.118 7.857 7.246 7.318 7.607 7.549 6.974 6.280 6.115 6.798 7.982 8.860 8.796 7.857 6.776 6.368 6.862 7.730 8.155 7.737 6.825 6.191 6.333 7.047 7.621 7.498 6.774 6.108
+ 9.255 9.579 10.017 10.279 10.160 9.647 8.909 8.202 7.748 7.633 7.760 7.887 7.741 7.207 6.445 5.846 5.796 6.384 7.290 7.971 8.047 7.579 7.019 6.824 7.080 7.441 7.458 7.010 6.444 6.287 6.757 7.530 7.978 7.709 6.916 6.240
+ 8.840 9.026 9.378 9.816 10.182 10.277 9.966 9.269 8.377 7.546 6.950 6.579 6.286 5.931 5.527 5.256 5.331 5.819 6.551 7.213 7.550 7.529 7.334 7.200 7.234 7.349 7.373 7.216 6.956 6.762 6.740 6.836 6.885 6.771 6.532 6.336
+ 8.863 8.534 8.300 8.593 9.403 10.192 10.283 9.415 7.982 6.752 6.268 6.439 6.658 6.357 5.538 4.807 4.874 5.924 7.384 8.315 8.126 7.029 5.881 5.515 6.119 7.141 7.782 7.640 6.989 6.482 6.563 7.107 7.580 7.546 7.057 6.589
+ 10.682 10.086 9.308 8.845 8.892 9.201 9.311 8.937 8.203 7.515 7.199 7.205 7.156 6.701 5.871 5.126 5.013 5.710 6.827 7.660 7.711 7.055 6.270 5.980 6.378 7.116 7.631 7.617 7.245 6.965 7.085 7.506 7.834 7.755 7.332 6.945
+ 11.384 11.307 11.118 10.782 10.304 9.734 9.147 8.625 8.257 8.123 8.246 8.535 8.790 8.818 8.581 8.270 8.178 8.465 8.992 9.397 9.378 8.957 8.471 8.281 8.442 8.632 8.434 7.729 6.851 6.343 6.507 7.141 7.706 7.780 7.405 7.014
+ 11.949 11.944 11.800 11.373 10.655 9.813 9.109 8.761 8.843 9.261 9.800 10.191 10.212 9.803 9.143 8.598 8.508 8.937 9.571 9.910 9.647 8.931 8.282 8.174 8.622 9.136 9.108 8.340 7.240 6.517 6.611 7.346 8.102 8.349 8.072 7.713
+ 10.081 9.725 9.378 9.407 9.802 10.157 10.031 9.357 8.508 7.966 7.893 8.004 7.847 7.228 6.380 5.751 5.616 5.884 6.239 6.457 6.572 6.765 7.099 7.398 7.397 7.012 6.462 6.132 6.273 6.826 7.483 7.929 8.035 7.889 7.668 7.523
+ 10.348 10.469 10.507 10.243 9.647 8.925 8.362 8.124 8.167 8.312 8.379 8.265 7.928 7.360 6.619 5.876 5.391 5.373 5.810 6.445 6.940 7.121 7.088 7.082 7.233 7.430 7.440 7.178 6.845 6.795 7.216 7.932 8.523 8.667 8.413 8.119
+ 9.328 9.046 8.708 8.564 8.652 8.761 8.615 8.123 7.481 7.017 6.911 7.043 7.098 6.846 6.366 5.993 6.043 6.527 7.122 7.426 7.287 6.935 6.782 7.055 7.585 7.933 7.762 7.153 6.578 6.534 7.134 7.995 8.526 8.389 7.772 7.229
+ 9.117 8.961 8.697 8.403 8.137 7.919 7.731 7.544 7.357 7.198 7.105 7.078 7.060 6.971 6.772 6.509 6.303 6.265 6.408 6.628 6.763 6.711 6.495 6.257 6.155 6.268 6.556 6.911 7.232 7.485 7.696 7.904 8.122 8.329 8.491 8.579
+ 8.183 8.486 8.925 9.236 9.187 8.699 7.908 7.096 6.533 6.323 6.365 6.464 6.490 6.469 6.518 6.709 6.974 7.155 7.142 6.979 6.825 6.818 6.952 7.090 7.093 6.940 6.746 6.655 6.730 6.931 7.197 7.525 7.960 8.509 9.059 9.413
+ 7.442 7.707 7.996 8.034 7.748 7.318 7.012 6.956 7.040 7.025 6.744 6.229 5.670 5.282 5.199 5.453 6.009 6.773 7.572 8.179 8.399 8.202 7.759 7.336 7.110 7.062 7.037 6.929 6.800 6.828 7.122 7.586 7.977 8.098 7.973 7.811
+ 10.865 11.146 11.401 11.311 10.862 10.365 10.174 10.357 10.627 10.593 10.083 9.257 8.450 7.911 7.702 7.804 8.237 9.047 10.134 11.158 11.684 11.502 10.834 10.207 10.049 10.342 10.628 10.395 9.506 8.326 7.462 7.340 7.956 8.952 9.881 10.417
+ 12.662 12.876 12.967 12.594 11.765 10.886 10.460 10.680 11.282 11.752 11.711 11.146 10.352 9.681 9.345 9.387 9.766 10.397 11.117 11.664 11.777 11.391 10.735 10.215 10.105 10.321 10.453 10.090 9.154 7.995 7.166 7.063 7.701 8.754 9.766 10.369
+ 13.087 13.453 13.731 13.433 12.492 11.371 10.715 10.856 11.565 12.248 12.389 11.877 10.996 10.161 9.653 9.547 9.795 10.317 10.990 11.598 11.858 11.565 10.739 9.631 8.567 7.751 7.199 6.827 6.606 6.592 6.838 7.279 7.729 8.012 8.091 8.070
+ 13.479 13.893 14.204 13.860 12.798 11.560 10.882 11.114 11.965 12.741 12.862 12.231 11.193 10.223 9.635 9.525 9.871 10.616 11.608 12.518 12.903 12.440 11.168 9.508 8.031 7.131 6.860 7.023 7.383 7.802 8.202 8.482 8.508 8.232 7.788 7.454
+ 14.320 14.173 13.925 13.662 13.474 13.418 13.488 13.608 13.675 13.597 13.333 12.890 12.321 11.718 11.221 10.997 11.170 11.729 12.467 13.037 13.110 12.554 11.516 10.345 9.403 8.888 8.783 8.924 9.127 9.277 9.330 9.273 9.109 8.865 8.611 8.447
+ 15.083 14.987 14.930 15.069 15.435 15.891 16.218 16.255 16.001 15.579 15.125 14.682 14.212 13.689 13.192 12.902 12.973 13.380 13.869 14.071 13.712 12.777 11.528 10.348 9.535 9.174 9.152 9.279 9.410 9.490 9.518 9.498 9.416 9.271 9.106 8.994
+ 15.264 14.664 14.234 14.747 16.186 17.696 18.330 17.890 17.063 16.721 17.069 17.444 16.964 15.416 13.541 12.450 12.682 13.759 14.592 14.355 13.055 11.365 9.980 9.111 8.520 7.954 7.462 7.319 7.664 8.278 8.715 8.655 8.124 7.419 6.845 6.547
+ 16.186 15.704 15.417 15.974 17.286 18.536 18.913 18.370 17.655 17.558 18.109 18.501 17.848 16.081 14.124 13.170 13.674 14.971 15.813 15.346 13.670 11.585 9.856 8.705 7.918 7.323 7.086 7.525 8.665 10.024 10.867 10.708 9.621 8.124 6.811 6.077
+ 16.574 15.958 15.500 15.958 17.282 18.619 19.102 18.660 18.037 17.998 18.522 18.787 18.000 16.250 14.548 13.969 14.678 15.753 15.962 14.776 12.710 10.748 9.465 8.687 7.924 7.066 6.578 7.020 8.372 9.877 10.580 10.055 8.669 7.189 6.177 5.732
+ 16.761 16.058 15.489 15.891 17.238 18.633 19.141 18.651 17.919 17.766 18.240 18.584 18.042 16.684 15.409 15.102 15.746 16.373 15.920 14.166 11.890 10.127 9.271 8.883 8.331 7.560 7.193 7.851 9.400 10.895 11.322 10.424 8.857 7.560 6.978 6.885
+ 16.800 16.164 15.656 16.051 17.347 18.723 19.263 18.774 17.914 17.531 17.865 18.372 18.311 17.502 16.499 16.029 16.251 16.565 16.151 14.719 12.760 11.083 10.119 9.647 9.165 8.499 8.013 8.232 9.261 10.571 11.363 11.172 10.151 8.866 7.845 7.322
+ 16.704 16.142 15.712 16.129 17.409 18.794 19.388 18.917 17.927 17.264 17.334 17.835 18.143 17.937 17.455 17.157 17.181 17.143 16.485 15.014 13.104 11.378 10.175 9.337 8.493 7.542 6.848 6.928 7.942 9.427 10.546 10.628 9.571 7.843 6.165 5.159
+ 16.505 16.074 15.764 16.156 17.293 18.569 19.194 18.819 17.796 16.868 16.579 16.910 17.416 17.671 17.596 17.400 17.245 17.000 16.324 15.002 13.204 11.403 10.044 9.235 8.754 8.325 7.920 7.790 8.214 9.170 10.226 10.756 10.337 9.053 7.494 6.444
+ 16.150 15.942 15.879 16.320 17.258 18.240 18.671 18.260 17.242 16.206 15.687 15.846 16.459 17.155 17.676 17.945 17.951 17.610 16.782 15.410 13.656 11.865 10.390 9.404 8.853 8.588 8.516 8.664 9.081 9.690 10.230 10.363 9.887 8.901 7.797 7.073
+ 15.710 15.724 15.891 16.325 16.944 17.450 17.502 16.957 15.991 15.009 14.421 14.438 15.016 15.944 16.963 17.826 18.297 18.149 17.235 15.588 13.481 11.358 9.659 8.645 8.325 8.509 8.948 9.436 9.837 10.047 9.961 9.497 8.666 7.622 6.650 6.062
+ 14.577 14.789 15.184 15.664 16.046 16.120 15.765 15.036 14.151 13.383 12.936 12.904 13.297 14.091 15.213 16.473 17.523 17.935 17.386 15.844 13.621 11.258 9.309 8.132 7.811 8.185 8.941 9.728 10.242 10.319 9.971 9.375 8.774 8.347 8.138 8.073
+ 13.558 13.835 14.186 14.356 14.212 13.824 13.387 13.052 12.807 12.516 12.073 11.570 11.313 11.664 12.781 14.439 16.059 16.951 16.648 15.133 12.852 10.500 8.711 7.812 7.756 8.232 8.860 9.361 9.614 9.622 9.428 9.070 8.582 8.035 7.548 7.257
+ 13.249 13.297 13.314 13.165 12.720 11.958 11.029 10.217 9.774 9.738 9.887 9.906 9.683 9.483 9.825 11.090 13.122 15.155 16.182 15.558 13.436 10.719 8.533 7.583 7.810 8.563 9.111 9.120 8.761 8.430 8.354 8.406 8.265 7.744 7.004 6.461
+ 13.270 13.109 12.948 12.910 12.902 12.645 11.934 10.866 9.822 9.177 8.995 8.998 8.870 8.626 8.711 9.668 11.618 13.975 15.682 15.841 14.291 11.731 9.278 7.803 7.496 7.922 8.459 8.740 8.791 8.827 8.942 8.974 8.663 7.922 7.001 6.361
+ 13.618 13.652 13.784 14.000 14.097 13.763 12.844 11.551 10.409 9.932 10.241 10.969 11.531 11.591 11.343 11.380 12.226 13.883 15.732 16.875 16.682 15.159 12.928 10.856 9.603 9.364 9.903 10.783 11.599 12.095 12.159 11.785 11.049 10.123 9.265 8.747
+ 14.602 14.900 15.422 16.003 16.390 16.314 15.632 14.457 13.154 12.171 11.786 11.931 12.264 12.460 12.508 12.773 13.709 15.413 17.382 18.698 18.569 16.865 14.244 11.778 10.339 10.187 10.984 12.157 13.257 14.060 14.437 14.220 13.275 11.721 10.048 8.955
+ 15.260 14.993 14.796 15.051 15.832 16.768 17.257 16.878 15.703 14.261 13.170 12.728 12.775 12.945 13.071 13.381 14.284 15.902 17.758 18.947 18.702 16.958 14.449 12.256 11.140 11.166 11.847 12.624 13.232 13.683 13.963 13.832 12.965 11.339 9.469 8.206
+ 15.231 14.934 14.675 14.844 15.553 16.484 17.070 16.876 15.903 14.585 13.477 12.887 12.749 12.820 13.017 13.553 14.708 16.420 18.072 18.757 17.880 15.637 12.965 10.959 10.185 10.422 10.989 11.361 11.501 11.685 12.021 12.169 11.586 10.077 8.152 6.797
+ 14.481 13.689 12.846 12.772 13.650 14.856 15.492 15.101 13.952 12.695 11.768 11.133 10.544 10.030 10.033 11.033 12.969 15.059 16.229 15.873 14.290 12.453 11.287 11.042 11.247 11.219 10.658 9.852 9.364 9.510 10.073 10.454 10.123 9.022 7.629 6.672
+ 14.320 13.796 13.228 13.100 13.421 13.716 13.497 12.728 11.833 11.241 10.961 10.639 10.062 9.564 9.843 11.280 13.359 14.837 14.631 12.728 10.323 8.987 9.495 11.255 12.769 12.770 11.123 8.836 7.260 7.130 8.155 9.358 9.822 9.276 8.179 7.336
+ 14.019 13.692 13.307 13.141 13.223 13.311 13.134 12.639 11.999 11.411 10.911 10.424 10.008 9.978 10.701 12.177 13.784 14.549 13.813 11.819 9.679 8.672 9.341 11.079 12.538 12.570 11.012 8.757 7.102 6.856 7.857 9.185 9.848 9.454 8.406 7.553
+ 13.981 13.623 13.127 12.780 12.734 12.905 13.040 12.897 12.405 11.708 11.058 10.677 10.666 11.014 11.637 12.384 13.007 13.186 12.685 11.569 10.309 9.592 9.885 11.028 12.205 12.423 11.205 9.003 6.960 6.146 6.814 8.235 9.262 9.195 8.275 7.418
+ 14.081 13.558 12.880 12.505 12.632 13.051 13.310 13.056 12.318 11.478 10.981 11.010 11.378 11.726 11.822 11.716 11.602 11.569 11.478 11.137 10.589 10.215 10.464 11.390 12.424 12.672 11.585 9.486 7.461 6.618 7.254 8.616 9.479 9.106 7.818 6.705
+ 14.279 13.786 13.145 12.791 12.921 13.353 13.664 13.521 12.939 12.269 11.920 12.038 12.410 12.671 12.617 12.361 12.172 12.168 12.173 11.895 11.281 10.695 10.668 11.390 12.393 12.790 11.956 10.122 8.327 7.690 8.535 10.110 11.151 10.884 9.630 8.516
+ 14.925 14.167 13.256 12.895 13.310 14.088 14.551 14.330 13.646 13.068 13.003 13.363 13.702 13.663 13.313 13.048 13.175 13.560 13.696 13.159 12.037 10.945 10.552 11.011 11.768 11.963 11.114 9.534 8.142 7.770 8.526 9.699 10.303 9.831 8.641 7.663
+ 14.958 14.345 13.609 13.321 13.677 14.362 14.844 14.817 14.406 13.981 13.786 13.728 13.518 13.006 12.383 12.047 12.246 12.826 13.321 13.308 12.745 11.993 11.509 11.482 11.684 11.667 11.123 10.118 9.039 8.308 8.103 8.280 8.526 8.606 8.502 8.374
+ 14.324 13.581 12.694 12.353 12.779 13.585 14.161 14.184 13.804 13.388 13.109 12.822 12.304 11.592 11.042 11.027 11.562 12.256 12.639 12.582 12.401 12.533 13.095 13.717 13.831 13.143 11.884 10.635 9.891 9.741 9.893 9.961 9.749 9.321 8.880 8.612
+ 14.155 13.347 12.396 12.080 12.661 13.713 14.516 14.623 14.122 13.413 12.797 12.270 11.699 11.112 10.777 10.958 11.614 12.365 12.788 12.771 12.583 12.584 12.854 13.098 12.913 12.163 11.115 10.217 9.742 9.616 9.566 9.401 9.150 8.964 8.921 8.952
+ 13.991 13.305 12.455 12.103 12.589 13.719 14.927 15.658 15.649 14.980 13.925 12.784 11.806 11.181 11.007 11.233 11.655 12.013 12.164 12.167 12.204 12.376 12.569 12.517 12.018 11.103 10.009 8.988 8.136 7.400 6.742 6.266 6.166 6.514 7.113 7.570
+ 13.741 13.214 12.560 12.314 12.796 13.912 15.222 16.195 16.485 16.051 15.104 13.952 12.871 12.052 11.596 11.513 11.719 12.052 12.338 12.479 12.492 12.456 12.393 12.185 11.607 10.489 8.881 7.107 5.634 4.823 4.738 5.130 5.616 5.913 5.972 5.930
+ 13.514 12.973 12.271 11.940 12.348 13.487 14.971 16.242 16.842 16.602 15.661 14.348 13.033 12.002 11.417 11.302 11.550 11.965 12.328 12.504 12.503 12.439 12.386 12.245 11.746 10.626 8.883 6.894 5.270 4.505 4.661 5.333 5.924 6.053 5.774 5.465
+ 13.622 12.988 12.184 11.800 12.154 13.118 14.273 15.207 15.709 15.748 15.349 14.539 13.428 12.288 11.492 11.299 11.664 12.247 12.664 12.756 12.661 12.625 12.711 12.677 12.141 10.887 9.080 7.198 5.758 5.035 4.963 5.255 5.607 5.845 5.945 5.966
+ 13.755 13.169 12.434 12.097 12.429 13.292 14.311 15.163 15.715 15.943 15.782 15.123 13.980 12.644 11.610 11.281 11.680 12.422 13.000 13.152 13.002 12.863 12.888 12.888 12.456 11.316 9.568 7.663 6.120 5.224 4.918 4.922 4.950 4.867 4.706 4.580
+ 13.680 13.147 12.480 12.178 12.488 13.277 14.193 14.932 15.382 15.548 15.408 14.876 13.936 12.790 11.831 11.432 11.689 12.359 13.035 13.418 13.451 13.239 12.856 12.236 11.255 9.901 8.366 6.968 5.958 5.397 5.166 5.097 5.078 5.079 5.097 5.116
+ 13.906 13.011 11.949 11.585 12.255 13.573 14.821 15.534 15.765 15.848 15.976 15.992 15.590 14.653 13.410 12.274 11.570 11.402 11.726 12.454 13.406 14.206 14.325 13.410 11.656 9.850 8.918 9.258 10.415 11.416 11.517 10.751 9.804 9.369 9.558 9.903
+ 13.692 13.036 12.205 11.836 12.298 13.470 14.848 15.880 16.288 16.163 15.817 15.522 15.329 15.072 14.531 13.638 12.591 11.789 11.612 12.165 13.139 13.922 13.932 12.985 11.454 10.071 9.480 9.837 10.732 11.493 11.645 11.185 10.487 9.962 9.759 9.748
+ 11.426 11.338 11.505 12.255 13.524 14.830 15.617 15.680 15.280 14.885 14.774 14.868 14.883 14.619 14.094 13.451 12.787 12.105 11.440 10.943 10.796 10.991 11.228 11.090 10.409 9.479 8.893 9.094 9.997 11.031 11.551 11.286 10.464 9.552 8.902 8.601
+ 12.016 11.365 10.679 10.629 11.335 12.248 12.628 12.170 11.233 10.499 10.392 10.782 11.184 11.215 10.874 10.433 10.119 9.932 9.737 9.490 9.303 9.278 9.310 9.100 8.427 7.424 6.564 6.331 6.844 7.756 8.520 8.776 8.543 8.098 7.717 7.523
+ 10.585 10.440 10.235 10.085 10.072 10.188 10.339 10.403 10.301 10.048 9.746 9.524 9.466 9.582 9.818 10.093 10.339 10.503 10.551 10.466 10.260 9.977 9.674 9.379 9.072 8.714 8.309 7.946 7.782 7.942 8.427 9.090 9.710 10.125 10.314 10.362
+ 8.742 8.645 8.747 9.320 10.283 11.186 11.558 11.293 10.733 10.384 10.507 10.956 11.371 11.528 11.515 11.593 11.903 12.314 12.545 12.423 12.029 11.589 11.250 10.951 10.526 9.923 9.312 8.991 9.151 9.732 10.469 11.081 11.429 11.546 11.545 11.521
+ 7.565 7.506 7.550 7.852 8.376 8.900 9.185 9.149 8.904 8.613 8.366 8.164 8.034 8.089 8.439 9.032 9.591 9.786 9.504 8.986 8.664 8.820 9.368 9.935 10.194 10.132 10.026 10.159 10.561 11.020 11.331 11.522 11.825 12.413 13.163 13.702
+ 6.936 7.374 7.989 8.442 8.543 8.338 8.023 7.766 7.598 7.449 7.269 7.121 7.149 7.461 8.039 8.734 9.363 9.801 10.024 10.078 10.025 9.930 9.860 9.896 10.104 10.499 11.034 11.627 12.212 12.770 13.314 13.857 14.375 14.820 15.143 15.310
+ 9.286 8.707 7.939 7.481 7.589 8.113 8.636 8.787 8.500 8.017 7.687 7.707 8.026 8.445 8.798 9.066 9.325 9.624 9.904 10.046 9.998 9.851 9.782 9.916 10.222 10.554 10.796 10.999 11.362 12.077 13.139 14.305 15.237 15.726 15.823 15.767
+ 7.699 7.304 6.773 6.417 6.373 6.565 6.858 7.216 7.694 8.277 8.761 8.857 8.452 7.799 7.399 7.644 8.491 9.477 10.061 10.041 9.679 9.457 9.677 10.235 10.756 10.939 10.807 10.678 10.899 11.592 12.596 13.610 14.395 14.873 15.102 15.182
+ 3.885 4.492 5.311 5.902 6.146 6.302 6.701 7.390 8.047 8.254 7.852 7.070 6.330 5.948 5.987 6.342 6.906 7.602 8.294 8.734 8.683 8.142 7.444 7.057 7.235 7.824 8.435 8.823 9.133 9.748 10.874 12.258 13.331 13.676 13.392 13.008
+ 6.776 6.758 6.619 6.314 5.991 5.918 6.240 6.781 7.122 6.902 6.129 5.195 4.590 4.539 4.869 5.200 5.282 5.183 5.186 5.511 6.119 6.750 7.141 7.206 7.062 6.901 6.862 6.996 7.313 7.815 8.470 9.178 9.783 10.167 10.325 10.356
+ 7.458 6.874 6.081 5.577 5.663 6.248 6.930 7.260 7.022 6.348 5.594 5.110 5.034 5.256 5.540 5.694 5.679 5.590 5.558 5.646 5.816 5.974 6.050 6.038 5.990 5.966 5.988 6.036 6.079 6.121 6.214 6.427 6.795 7.270 7.723 8.001
+ 6.855 6.501 6.110 6.024 6.303 6.661 6.712 6.301 5.633 5.097 4.958 5.180 5.526 5.799 5.997 6.245 6.602 6.942 7.045 6.805 6.363 6.016 5.978 6.206 6.433 6.403 6.089 5.739 5.692 6.128 6.932 7.776 8.333 8.477 8.333 8.161
+ 6.023 6.720 7.662 8.304 8.411 8.170 7.959 8.012 8.285 8.592 8.813 8.960 9.071 9.112 9.026 8.881 8.913 9.341 10.110 10.838 11.079 10.710 10.060 9.643 9.700 9.999 10.101 9.855 9.623 9.982 11.125 12.558 13.404 13.134 12.054 11.109
+ 7.541 7.967 8.729 9.631 10.394 10.761 10.647 10.209 9.773 9.623 9.812 10.135 10.307 10.199 9.957 9.893 10.233 10.926 11.660 12.080 12.037 11.670 11.278 11.083 11.099 11.186 11.245 11.348 11.697 12.423 13.412 14.309 14.739 14.576 14.055 13.620
+ 10.426 9.498 8.498 8.368 9.299 10.600 11.333 11.118 10.353 9.713 9.489 9.407 9.079 8.555 8.381 9.065 10.487 11.871 12.375 11.797 10.713 9.969 9.986 10.529 11.076 11.370 11.595 12.050 12.719 13.226 13.222 12.801 12.475 12.690 13.378 13.986
+ 13.392 13.081 12.880 13.185 13.928 14.585 14.646 14.067 13.283 12.769 12.617 12.534 12.260 11.927 11.967 12.637 13.642 14.291 14.073 13.125 12.133 11.725 11.935 12.237 12.094 11.492 10.923 10.866 11.272 11.590 11.307 10.458 9.615 9.343 9.670 10.091
+ 13.370 13.109 12.957 13.276 14.037 14.773 14.955 14.419 13.488 12.683 12.312 12.297 12.379 12.431 12.582 13.006 13.636 14.106 14.022 13.327 12.413 11.835 11.874 12.295 12.530 12.110 11.008 9.629 8.492 7.884 7.734 7.756 7.688 7.452 7.146 6.935
+ 12.668 12.461 12.266 12.334 12.723 13.216 13.460 13.213 12.517 11.681 11.084 10.953 11.257 11.777 12.258 12.537 12.581 12.442 12.199 11.935 11.728 11.637 11.652 11.660 11.479 10.948 10.050 8.953 7.942 7.266 7.011 7.066 7.220 7.307 7.290 7.241
+ 12.316 12.502 12.583 12.288 11.657 11.016 10.642 10.474 10.192 9.581 8.828 8.416 8.688 9.494 10.283 10.565 10.329 10.018 10.092 10.603 11.173 11.373 11.115 10.668 10.316 10.028 9.512 8.580 7.466 6.711 6.699 7.282 7.876 7.966 7.549 7.105
+ 12.674 12.678 12.545 12.191 11.740 11.413 11.250 10.981 10.260 9.072 7.912 7.476 8.089 9.382 10.546 10.975 10.726 10.388 10.495 11.045 11.557 11.584 11.144 10.642 10.394 10.255 9.764 8.688 7.389 6.599 6.767 7.590 8.223 8.010 7.081 6.243
+ 12.360 12.483 12.539 12.362 11.985 11.590 11.266 10.859 10.121 9.043 8.022 7.645 8.216 9.450 10.641 11.196 11.078 10.767 10.785 11.231 11.726 11.798 11.317 10.574 9.953 9.562 9.163 8.479 7.541 6.705 6.342 6.490 6.820 6.955 6.803 6.594
+ 12.210 12.472 12.678 12.514 11.985 11.389 10.984 10.703 10.234 9.410 8.504 8.088 8.544 9.663 10.751 11.176 10.892 10.446 10.466 11.085 11.822 12.007 11.359 10.197 9.126 8.520 8.269 7.987 7.429 6.709 6.157 5.991 6.139 6.359 6.476 6.496
+ 12.792 12.578 12.403 12.528 12.969 13.456 13.642 13.357 12.692 11.894 11.200 10.782 10.779 11.297 12.301 13.499 14.400 14.603 14.096 13.282 12.660 12.399 12.197 11.579 10.389 9.013 8.107 8.038 8.551 8.980 8.824 8.169 7.577 7.546 8.039 8.537
+ 13.458 12.803 12.209 12.426 13.516 14.761 15.281 14.766 13.665 12.695 12.207 11.998 11.724 11.410 11.522 12.482 14.131 15.696 16.351 15.865 14.745 13.755 13.257 12.996 12.469 11.486 10.374 9.641 9.475 9.563 9.400 8.754 7.839 7.065 6.660 6.545
+ 13.501 12.763 12.075 12.290 13.541 15.080 15.883 15.464 14.201 12.921 12.190 11.941 11.740 11.365 11.097 11.463 12.678 14.344 15.685 16.116 15.637 14.730 13.901 13.302 12.732 11.969 11.054 10.280 9.917 9.961 10.124 10.059 9.612 8.895 8.182 7.747
+ 13.398 12.863 12.387 12.636 13.745 15.149 15.983 15.726 14.557 13.167 12.204 11.838 11.767 11.618 11.349 11.297 11.860 13.089 14.572 15.685 16.009 15.562 14.701 13.803 13.023 12.294 11.542 10.856 10.466 10.523 10.901 11.213 11.059 10.336 9.355 8.658
+ 13.285 12.999 12.820 13.184 14.156 15.294 15.919 15.592 14.435 13.041 12.051 11.721 11.815 11.889 11.718 11.499 11.671 12.504 13.816 15.046 15.649 15.452 14.719 13.875 13.158 12.505 11.747 10.900 10.244 10.098 10.483 11.006 11.115 10.541 9.556 8.801
+ 13.121 13.064 13.143 13.544 14.220 14.830 14.931 14.298 13.122 11.919 11.176 11.018 11.144 11.112 10.740 10.303 10.323 11.125 12.517 13.877 14.592 14.491 13.915 13.375 13.114 12.957 12.575 11.892 11.233 11.048 11.454 12.038 12.137 11.406 10.168 9.219
+ 11.661 11.702 11.964 12.593 13.473 14.188 14.258 13.483 12.129 10.792 9.997 9.843 9.964 9.850 9.300 8.613 8.380 9.007 10.365 11.845 12.785 12.924 12.520 12.073 11.894 11.904 11.810 11.451 10.987 10.744 10.867 11.127 11.089 10.506 9.592 8.902
+ 10.819 11.043 11.551 12.290 12.969 13.166 12.637 11.554 10.432 9.771 9.710 9.968 10.133 10.009 9.745 9.641 9.857 10.294 10.730 11.050 11.326 11.682 12.095 12.363 12.270 11.788 11.123 10.541 10.162 9.903 9.622 9.295 9.047 9.010 9.162 9.325
+ 8.340 8.356 8.495 8.829 9.261 9.554 9.510 9.141 8.661 8.312 8.178 8.156 8.100 7.987 7.937 8.082 8.415 8.788 9.056 9.224 9.439 9.820 10.296 10.606 10.488 9.888 9.011 8.174 7.590 7.277 7.130 7.067 7.089 7.226 7.435 7.594
+ 5.722 6.171 6.815 7.368 7.720 7.945 8.102 8.067 7.598 6.598 5.319 4.275 3.902 4.254 4.995 5.688 6.123 6.387 6.665 6.985 7.176 7.064 6.680 6.267 6.067 6.103 6.192 6.153 6.014 5.980 6.201 6.571 6.783 6.613 6.150 5.757
+ 6.934 6.593 6.309 6.510 7.250 8.120 8.561 8.291 7.499 6.655 6.138 6.004 6.062 6.138 6.247 6.528 7.037 7.636 8.087 8.274 8.306 8.413 8.700 9.018 9.066 8.649 7.878 7.124 6.775 6.969 7.524 8.073 8.314 8.179 7.840 7.572
+ 8.445 8.433 8.594 9.078 9.779 10.349 10.450 10.038 9.423 9.039 9.123 9.580 10.118 10.518 10.800 11.130 11.611 12.151 12.548 12.694 12.702 12.804 13.131 13.553 13.751 13.465 12.722 11.848 11.264 11.205 11.583 12.073 12.343 12.264 11.965 11.713
+ 9.154 9.336 9.849 10.749 11.774 12.416 12.267 11.367 10.232 9.504 9.506 10.063 10.716 11.126 11.305 11.499 11.877 12.324 12.547 12.382 11.998 11.798 12.077 12.746 13.356 13.434 12.849 11.928 11.222 11.116 11.570 12.174 12.464 12.244 11.708 11.275
+ 12.075 12.485 13.190 13.971 14.534 14.614 14.087 13.057 11.821 10.732 10.013 9.658 9.489 9.317 9.109 9.020 9.265 9.939 10.915 11.903 12.619 12.930 12.874 12.566 12.097 11.520 10.924 10.490 10.423 10.782 11.354 11.710 11.463 10.565 9.400 8.588
+ 13.289 13.401 13.812 14.642 15.692 16.449 16.415 15.479 14.035 12.722 11.981 11.786 11.754 11.532 11.120 10.865 11.140 11.997 13.074 13.844 13.983 13.546 12.850 12.180 11.614 11.102 10.692 10.647 11.268 12.547 13.943 14.574 13.754 11.539 8.854 7.031
+ 13.257 13.036 13.074 13.830 15.209 16.506 16.913 16.146 14.670 13.311 12.617 12.506 12.483 12.189 11.774 11.753 12.505 13.868 15.191 15.790 15.417 14.357 13.122 12.040 11.109 10.201 9.371 8.954 9.313 10.457 11.853 12.655 12.226 10.596 8.528 7.106
+ 12.636 12.385 12.380 13.119 14.550 15.986 16.578 15.960 14.516 13.053 12.175 11.894 11.777 11.473 11.098 11.148 12.001 13.481 14.872 15.412 14.839 13.556 12.278 11.480 11.096 10.718 10.071 9.342 9.051 9.565 10.681 11.646 11.670 10.526 8.800 7.537
+ 11.212 11.116 11.438 12.593 14.300 15.636 15.749 14.578 12.905 11.680 11.251 11.196 10.900 10.272 9.890 10.421 11.867 13.401 13.979 13.208 11.685 10.485 10.260 10.730 11.008 10.426 9.149 8.046 7.976 9.091 10.707 11.798 11.685 10.441 8.789 7.654
+ 11.807 11.754 11.750 11.855 11.969 11.875 11.420 10.678 9.908 9.350 9.046 8.850 8.617 8.373 8.295 8.515 8.944 9.306 9.362 9.114 8.791 8.630 8.644 8.611 8.296 7.694 7.069 6.757 6.900 7.344 7.785 7.999 7.972 7.837 7.724 7.674
+ 10.904 10.618 10.298 10.201 10.341 10.459 10.250 9.640 8.853 8.220 7.911 7.826 7.724 7.466 7.142 6.977 7.146 7.639 8.299 8.932 9.388 9.565 9.389 8.863 8.148 7.566 7.451 7.923 8.763 9.526 9.826 9.572 8.989 8.405 8.027 7.869
+ 9.080 8.950 8.970 9.427 10.316 11.283 11.874 11.884 11.509 11.171 11.164 11.418 11.584 11.360 10.790 10.290 10.365 11.237 12.658 14.034 14.764 14.561 13.562 12.202 10.970 10.207 10.019 10.311 10.868 11.436 11.787 11.781 11.404 10.787 10.160 9.769
+ 11.665 11.711 11.865 12.162 12.530 12.805 12.832 12.596 12.238 11.946 11.799 11.705 11.499 11.131 10.788 10.813 11.468 12.698 14.091 15.088 15.295 14.694 13.612 12.482 11.605 11.059 10.794 10.777 11.030 11.538 12.126 12.466 12.268 11.506 10.517 9.826
+ 14.331 13.546 12.438 11.571 11.215 11.239 11.347 11.396 11.486 11.764 12.184 12.494 12.481 12.236 12.137 12.540 13.439 14.405 14.884 14.593 13.686 12.577 11.606 10.861 10.267 9.805 9.611 9.844 10.472 11.198 11.624 11.508 10.905 10.095 9.392 8.999
+ 12.690 11.938 10.841 9.922 9.485 9.504 9.795 10.245 10.889 11.765 12.748 13.550 13.923 13.875 13.668 13.605 13.776 14.009 14.046 13.780 13.330 12.904 12.613 12.418 12.241 12.105 12.128 12.378 12.745 12.983 12.915 12.594 12.271 12.175 12.313 12.484
+ 12.230 11.431 10.421 9.854 9.901 10.190 10.264 10.083 10.079 10.702 11.937 13.239 13.976 13.923 13.372 12.804 12.472 12.321 12.227 12.243 12.510 12.962 13.184 12.705 11.506 10.218 9.725 10.422 11.812 12.858 12.827 11.900 10.976 10.849 11.509 12.207
+ 14.881 14.663 14.285 13.773 13.080 12.185 11.264 10.703 10.869 11.778 12.979 13.808 13.848 13.222 12.456 12.043 12.078 12.287 12.359 12.257 12.189 12.305 12.452 12.277 11.588 10.630 9.961 10.007 10.691 11.470 11.774 11.440 10.775 10.227 10.007 9.995
+ 14.952 14.274 13.211 12.146 11.321 10.786 10.516 10.523 10.831 11.372 11.953 12.397 12.693 12.989 13.376 13.699 13.637 13.057 12.286 11.963 12.487 13.540 14.193 13.637 11.959 10.242 9.786 11.038 13.148 14.588 14.337 12.662 10.812 9.932 10.163 10.697
+ 11.937 11.170 10.181 9.616 9.733 10.292 10.864 11.235 11.516 11.927 12.518 13.132 13.583 13.822 13.891 13.761 13.329 12.628 12.030 12.097 13.069 14.456 15.211 14.539 12.685 10.950 10.751 12.432 14.847 16.183 15.383 12.985 10.645 9.743 10.307 11.164
+ 11.880 11.824 11.551 10.944 10.146 9.547 9.521 10.129 11.053 11.832 12.218 12.339 12.521 12.925 13.327 13.286 12.570 11.481 10.740 10.964 12.124 13.461 13.983 13.213 11.606 10.269 10.173 11.435 13.230 14.383 14.198 12.880 11.272 10.170 9.791 9.801
+ 12.143 12.690 13.177 12.941 11.882 10.606 9.976 10.439 11.718 13.069 13.864 13.983 13.741 13.471 13.216 12.771 12.014 11.157 10.649 10.804 11.492 12.169 12.251 11.539 10.364 9.370 9.101 9.692 10.829 11.953 12.540 12.319 11.342 9.940 8.599 7.785
+ 14.066 13.972 13.751 13.428 13.154 13.136 13.459 13.976 14.374 14.406 14.087 13.664 13.395 13.303 13.147 12.640 11.745 10.768 10.172 10.236 10.830 11.482 11.685 11.218 10.265 9.275 8.694 8.732 9.288 10.031 10.551 10.536 9.898 8.821 7.706 7.001
+ 13.514 13.203 12.937 13.127 13.888 14.946 15.860 16.354 16.496 16.558 16.728 16.918 16.830 16.211 15.069 13.691 12.458 11.621 11.202 11.032 10.883 10.570 10.010 9.249 8.462 7.901 7.788 8.169 8.852 9.472 9.683 9.335 8.537 7.574 6.753 6.290
+ 13.014 12.947 12.946 13.217 13.918 15.004 16.173 17.000 17.221 16.945 16.593 16.542 16.778 16.860 16.302 15.061 13.701 13.014 13.367 14.305 14.788 13.915 11.596 8.657 6.304 5.380 5.932 7.345 8.810 9.750 9.936 9.377 8.211 6.699 5.255 4.365
+ 12.855 12.618 12.443 12.719 13.636 14.996 16.290 16.998 16.952 16.460 16.090 16.225 16.741 17.066 16.645 15.420 13.963 13.076 13.174 13.903 14.340 13.628 11.600 8.918 6.659 5.657 6.067 7.391 8.852 9.806 9.948 9.291 8.053 6.569 5.242 4.457
+ 12.738 12.384 12.110 12.439 13.564 15.150 16.529 17.147 16.939 16.350 15.992 16.180 16.706 17.017 16.662 15.657 14.496 13.771 13.712 13.980 13.884 12.874 10.943 8.669 6.882 6.189 6.674 7.916 9.264 10.150 10.282 9.663 8.512 7.168 5.999 5.322
+ 12.904 12.514 12.245 12.673 13.922 15.523 16.747 17.133 16.789 16.238 15.989 16.193 16.612 16.877 16.774 16.344 15.785 15.281 14.876 14.455 13.798 12.677 11.011 9.015 7.223 6.288 6.600 7.974 9.653 10.715 10.614 9.483 7.966 6.732 6.067 5.845
+ 13.156 12.608 12.194 12.639 14.038 15.733 16.849 16.991 16.483 15.991 15.939 16.241 16.545 16.646 16.645 16.723 16.824 16.624 15.825 14.464 12.887 11.420 10.084 8.679 7.165 5.932 5.597 6.462 8.113 9.585 10.009 9.207 7.733 6.373 5.569 5.273
+ 12.606 12.128 11.785 12.248 13.628 15.331 16.501 16.671 16.060 15.333 15.056 15.335 15.883 16.352 16.593 16.634 16.480 16.011 15.076 13.685 12.057 10.465 9.048 7.779 6.642 5.806 5.589 6.181 7.390 8.635 9.264 8.933 7.782 6.298 5.013 4.292
+ 12.130 11.684 11.383 11.888 13.329 15.146 16.481 16.795 16.209 15.333 14.789 14.831 15.314 15.935 16.461 16.764 16.726 16.199 15.088 13.490 11.690 10.003 8.598 7.473 6.606 6.105 6.173 6.904 8.079 9.198 9.751 9.513 8.658 7.596 6.716 6.241
+ 12.391 11.919 11.648 12.288 13.901 15.776 16.971 17.026 16.242 15.336 14.862 14.912 15.273 15.771 16.393 17.080 17.511 17.185 15.814 13.635 11.323 9.514 8.373 7.614 6.925 6.373 6.365 7.195 8.616 9.878 10.249 9.541 8.207 6.929 6.127 5.804
+ 12.373 11.985 11.797 12.430 13.928 15.653 16.759 16.822 16.092 15.213 14.713 14.742 15.171 15.853 16.692 17.504 17.893 17.402 15.873 13.665 11.465 9.820 8.781 8.019 7.276 6.707 6.753 7.637 8.996 10.024 10.059 9.088 7.726 6.688 6.253 6.198
+ 12.084 11.682 11.472 12.083 13.574 15.313 16.453 16.555 15.840 14.924 14.333 14.241 14.577 15.244 16.165 17.127 17.671 17.286 15.804 13.618 11.462 9.888 8.901 8.097 7.171 6.307 6.050 6.749 8.112 9.308 9.566 8.743 7.371 6.176 5.529 5.327
+ 11.770 11.330 11.103 11.778 13.407 15.288 16.483 16.516 15.647 14.566 13.855 13.706 14.044 14.783 15.865 17.068 17.868 17.654 16.181 13.846 11.465 9.695 8.602 7.775 6.866 6.013 5.735 6.361 7.579 8.560 8.585 7.618 6.292 5.345 5.035 5.073
+ 11.823 11.562 11.570 12.378 13.960 15.655 16.646 16.563 15.697 14.684 14.027 13.871 14.147 14.821 15.908 17.237 18.285 18.371 17.130 14.860 12.377 10.455 9.333 8.689 8.091 7.457 7.096 7.312 7.992 8.602 8.612 7.946 7.021 6.359 6.150 6.186
+ 11.831 11.628 11.722 12.589 14.144 15.708 16.519 16.311 15.448 14.537 13.956 13.725 13.768 14.190 15.195 16.699 18.093 18.503 17.422 15.148 12.608 10.678 9.591 8.950 8.285 7.592 7.315 7.818 8.879 9.751 9.750 8.830 7.596 6.755 6.538 6.630
+ 11.525 11.349 11.445 12.254 13.713 15.210 16.020 15.842 14.966 13.978 13.308 13.046 13.111 13.517 14.395 15.728 17.118 17.870 17.421 15.736 13.347 10.983 9.135 7.912 7.240 7.108 7.582 8.568 9.637 10.174 9.793 8.657 7.368 6.512 6.243 6.275
+ 11.285 11.132 11.309 12.262 13.867 15.399 16.060 15.594 14.439 13.327 12.720 12.607 12.761 13.134 13.925 15.258 16.815 17.852 17.657 16.072 13.618 11.131 9.229 8.068 7.513 7.451 7.897 8.801 9.833 10.441 10.215 9.213 7.936 6.943 6.464 6.342
+ 11.762 11.650 11.909 12.949 14.553 15.919 16.278 15.525 14.283 13.339 13.021 13.085 13.165 13.277 13.830 15.120 16.831 18.079 18.020 16.487 14.084 11.691 9.861 8.651 7.935 7.771 8.364 9.668 11.093 11.749 11.101 9.443 7.719 6.776 6.732 7.014
+ 11.829 11.871 12.277 13.281 14.632 15.664 15.799 15.037 13.943 13.168 12.938 12.994 13.006 13.018 13.446 14.624 16.323 17.748 18.047 16.903 14.711 12.246 10.158 8.743 8.073 8.205 9.154 10.646 12.003 12.425 11.530 9.699 7.840 6.734 6.497 6.639
+ 11.616 11.703 12.151 13.131 14.373 15.235 15.191 14.280 13.094 12.298 12.111 12.234 12.260 12.172 12.418 13.469 15.274 17.108 17.987 17.326 15.308 12.719 10.441 9.021 8.574 8.934 9.811 10.823 11.507 11.464 10.597 9.247 8.009 7.339 7.251 7.386
+ 10.976 11.322 12.098 13.255 14.441 15.113 14.901 13.915 12.700 11.842 11.564 11.643 11.729 11.748 12.021 12.963 14.624 16.482 17.667 17.483 15.831 13.260 10.656 8.814 8.138 8.566 9.664 10.811 11.420 11.176 10.186 8.930 7.986 7.674 7.871 8.153
+ 11.201 11.782 12.729 13.684 14.283 14.301 13.748 12.867 12.010 11.450 11.248 11.255 11.282 11.302 11.536 12.309 13.741 15.510 16.888 17.097 15.791 13.335 10.656 8.755 8.172 8.756 9.861 10.790 11.161 10.983 10.464 9.779 8.990 8.137 7.355 6.873
+ 10.321 10.419 10.554 10.640 10.596 10.362 9.909 9.271 8.587 8.079 7.931 8.143 8.513 8.807 9.021 9.470 10.550 12.302 14.157 15.145 14.526 12.369 9.604 7.446 6.612 6.944 7.687 8.172 8.279 8.328 8.567 8.792 8.489 7.383 5.840 4.713
+ 9.841 9.942 9.958 9.691 9.119 8.443 7.939 7.762 7.862 8.062 8.209 8.271 8.323 8.472 8.804 9.376 10.215 11.261 12.311 13.053 13.209 12.718 11.800 10.837 10.137 9.780 9.648 9.598 9.602 9.715 9.931 10.090 9.961 9.453 8.757 8.256
+ 10.930 10.406 9.685 9.131 8.833 8.577 8.111 7.445 6.888 6.771 7.125 7.620 7.842 7.674 7.427 7.606 8.492 9.891 11.243 11.984 11.870 11.056 9.916 8.820 8.004 7.569 7.523 7.784 8.184 8.524 8.685 8.704 8.730 8.885 9.144 9.346
+ 10.749 10.046 9.160 8.669 8.713 8.897 8.687 7.909 6.912 6.253 6.215 6.597 6.948 7.008 6.937 7.148 7.900 9.038 10.080 10.549 10.268 9.402 8.289 7.265 6.587 6.431 6.860 7.739 8.722 9.393 9.520 9.209 8.815 8.654 8.768 8.938
+ 9.862 9.818 9.754 9.693 9.639 9.567 9.445 9.265 9.066 8.921 8.888 8.973 9.125 9.292 9.477 9.751 10.190 10.793 11.432 11.908 12.067 11.903 11.556 11.210 10.974 10.832 10.710 10.574 10.473 10.474 10.566 10.622 10.481 10.094 9.599 9.251
+ 9.194 9.710 10.496 11.223 11.680 11.881 11.999 12.212 12.562 12.937 13.145 13.047 12.638 12.066 11.574 11.401 11.661 12.275 12.988 13.496 13.617 13.393 13.048 12.814 12.763 12.769 12.650 12.349 12.009 11.861 12.026 12.398 12.721 12.802 12.661 12.496
+ 10.261 10.481 10.880 11.367 11.815 12.108 12.206 12.152 12.021 11.831 11.517 10.996 10.290 9.600 9.233 9.432 10.204 11.290 12.292 12.890 12.982 12.704 12.316 12.053 12.020 12.170 12.339 12.335 12.039 11.497 10.935 10.664 10.904 11.622 12.503 13.103
+ 11.726 11.622 11.356 10.883 10.262 9.684 9.407 9.615 10.289 11.173 11.872 12.051 11.631 10.862 10.230 10.204 10.985 12.362 13.796 14.687 14.684 13.874 12.718 11.794 11.469 11.716 12.159 12.329 11.958 11.144 10.294 9.881 10.168 11.052 12.110 12.816
+ 11.144 10.676 10.051 9.649 9.643 9.925 10.268 10.552 10.828 11.185 11.563 11.735 11.506 10.949 10.455 10.514 11.371 12.822 14.318 15.283 15.422 14.825 13.838 12.831 12.034 11.495 11.128 10.803 10.410 9.932 9.466 9.196 9.274 9.699 10.267 10.666
+ 11.876 11.009 9.892 9.267 9.442 10.124 10.756 11.007 10.987 11.033 11.316 11.665 11.769 11.529 11.212 11.249 11.865 12.880 13.845 14.384 14.416 14.116 13.688 13.208 12.647 12.014 11.424 11.018 10.817 10.696 10.504 10.212 9.940 9.830 9.890 9.989
+ 12.584 11.540 10.055 8.975 8.882 9.764 11.059 12.058 12.363 12.097 11.714 11.584 11.711 11.807 11.665 11.450 11.623 12.519 13.934 15.136 15.352 14.356 12.683 11.250 10.699 10.966 11.443 11.527 11.096 10.508 10.193 10.241 10.366 10.242 9.849 9.495
+ 10.101 9.740 9.291 9.109 9.381 9.989 10.600 10.920 10.918 10.828 10.915 11.205 11.432 11.307 10.866 10.573 10.990 12.242 13.756 14.574 14.076 12.538 11.002 10.506 11.273 12.530 13.147 12.563 11.226 10.164 10.091 10.807 11.443 11.273 10.384 9.565
+ 10.383 10.400 10.286 9.901 9.289 8.702 8.448 8.676 9.261 9.872 10.174 10.020 9.534 9.056 8.988 9.595 10.844 12.356 13.539 13.893 13.310 12.184 11.188 10.846 11.183 11.734 11.919 11.495 10.728 10.147 10.090 10.433 10.727 10.612 10.141 9.717
+ 12.282 12.489 12.352 11.348 9.582 7.861 7.114 7.668 8.989 10.094 10.288 9.613 8.709 8.281 8.637 9.612 10.812 11.877 12.571 12.740 12.322 11.436 10.439 9.775 9.696 10.064 10.460 10.530 10.265 9.958 9.890 10.038 10.104 9.829 9.281 8.834
+ 9.552 9.236 8.770 8.375 8.186 8.193 8.297 8.427 8.598 8.875 9.265 9.665 9.914 9.944 9.881 9.996 10.513 11.401 12.345 12.918 12.866 12.278 11.512 10.940 10.703 10.680 10.654 10.537 10.433 10.492 10.702 10.821 10.547 9.794 8.833 8.160
+ 9.959 9.680 9.126 8.380 7.658 7.238 7.304 7.813 8.523 9.146 9.520 9.669 9.731 9.859 10.159 10.693 11.458 12.332 13.044 13.265 12.822 11.873 10.876 10.318 10.379 10.812 11.152 11.084 10.671 10.253 10.114 10.233 10.324 10.138 9.715 9.360
+ 10.670 9.690 8.414 7.640 7.645 8.049 8.243 7.983 7.574 7.519 7.982 8.612 8.889 8.664 8.369 8.665 9.834 11.461 12.691 12.875 12.040 10.825 9.956 9.727 9.876 9.931 9.653 9.225 9.048 9.371 10.063 10.707 10.910 10.574 9.958 9.491
+ 10.423 9.189 7.638 6.849 7.196 8.122 8.708 8.494 7.824 7.449 7.785 8.528 8.970 8.687 7.975 7.620 8.213 9.617 11.047 11.677 11.252 10.213 9.283 8.913 9.023 9.218 9.197 9.005 8.931 9.201 9.737 10.201 10.254 9.818 9.145 8.652
+ 10.637 9.913 8.794 7.699 6.879 6.368 6.151 6.303 6.931 7.946 8.928 9.322 8.860 7.877 7.185 7.517 8.965 10.848 12.158 12.250 11.250 9.894 8.958 8.731 8.925 9.030 8.772 8.310 8.052 8.282 8.915 9.560 9.812 9.543 8.982 8.543
+ 9.821 9.674 9.474 9.302 9.149 8.945 8.679 8.467 8.453 8.631 8.767 8.563 7.955 7.294 7.182 8.035 9.699 11.447 12.420 12.198 11.079 9.846 9.198 9.286 9.679 9.766 9.266 8.433 7.843 7.938 8.692 9.633 10.195 10.118 9.609 9.158
+ 10.938 10.920 10.910 10.954 11.081 11.254 11.357 11.230 10.768 9.989 9.025 8.052 7.230 6.705 6.651 7.220 8.382 9.774 10.770 10.820 9.883 8.571 7.794 8.101 9.225 10.241 10.282 9.265 7.988 7.503 8.226 9.571 10.417 10.049 8.774 7.667
+ 7.175 7.356 7.604 7.813 7.980 8.151 8.285 8.187 7.642 6.632 5.433 4.465 4.007 4.048 4.385 4.846 5.396 6.008 6.486 6.506 5.906 4.978 4.384 4.675 5.766 6.901 7.206 6.434 5.218 4.580 5.053 6.212 7.021 6.744 5.601 4.584
+ 9.234 8.969 8.581 8.243 8.032 7.906 7.768 7.568 7.325 7.070 6.768 6.339 5.746 5.093 4.600 4.473 4.741 5.222 5.628 5.755 5.599 5.316 5.081 4.962 4.912 4.859 4.798 4.805 4.955 5.226 5.477 5.519 5.246 4.713 4.129 3.750
+ 8.484 7.622 6.586 6.164 6.585 7.385 7.860 7.672 7.057 6.498 6.227 6.061 5.688 5.078 4.573 4.547 4.997 5.477 5.477 4.889 4.120 3.736 3.973 4.565 5.024 5.092 4.934 4.927 5.266 5.782 6.122 6.072 5.725 5.345 5.117 5.042
+ 6.494 6.209 5.716 5.152 4.685 4.455 4.516 4.798 5.117 5.266 5.141 4.820 4.528 4.479 4.706 5.010 5.104 4.839 4.351 3.973 3.981 4.361 4.810 4.976 4.748 4.359 4.198 4.490 5.109 5.678 5.860 5.603 5.135 4.748 4.572 4.541
+ 5.835 5.495 5.052 4.808 4.917 5.286 5.654 5.768 5.533 5.039 4.493 4.099 3.982 4.158 4.534 4.948 5.231 5.289 5.156 4.967 4.858 4.864 4.894 4.824 4.623 4.404 4.338 4.507 4.818 5.063 5.076 4.861 4.572 4.375 4.323 4.341
+ 5.379 5.097 4.761 4.645 4.846 5.197 5.382 5.165 4.569 3.870 3.414 3.405 3.796 4.353 4.819 5.060 5.094 5.021 4.918 4.794 4.619 4.388 4.153 4.006 4.020 4.204 4.500 4.815 5.061 5.181 5.147 4.960 4.651 4.286 3.958 3.763
+ 7.071 7.251 7.663 8.321 9.121 9.869 10.389 10.626 10.641 10.522 10.307 10.009 9.696 9.533 9.681 10.150 10.726 11.091 11.040 10.641 10.167 9.886 9.853 9.903 9.813 9.482 8.973 8.404 7.823 7.204 6.563 6.034 5.814 5.987 6.401 6.738
+ 11.312 10.769 10.207 10.237 11.057 12.307 13.377 13.853 13.737 13.302 12.792 12.293 11.837 11.579 11.769 12.522 13.596 14.460 14.639 14.072 13.168 12.494 12.367 12.672 13.025 13.089 12.767 12.149 11.358 10.483 9.654 9.111 9.111 9.705 10.589 11.238
+ 12.355 11.729 10.928 10.505 10.707 11.343 12.013 12.443 12.648 12.798 12.965 13.043 12.898 12.609 12.507 12.924 13.864 14.884 15.353 14.909 13.754 12.539 11.919 12.105 12.751 13.235 13.105 12.363 11.416 10.766 10.690 11.128 11.793 12.390 12.770 12.935
+ 12.964 13.078 13.237 13.314 13.172 12.769 12.239 11.864 11.907 12.404 13.088 13.538 13.474 12.978 12.457 12.366 12.876 13.758 14.547 14.862 14.638 14.111 13.610 13.321 13.218 13.161 13.051 12.921 12.880 13.013 13.299 13.630 13.887 14.012 14.030 14.011
+ 14.770 14.959 15.073 14.852 14.311 13.758 13.534 13.716 14.064 14.232 14.060 13.662 13.285 13.094 13.099 13.260 13.604 14.190 14.955 15.626 15.843 15.433 14.570 13.673 13.089 12.860 12.773 12.642 12.529 12.680 13.240 14.028 14.630 14.736 14.421 14.081
+ 15.445 14.705 13.622 12.708 12.252 12.162 12.119 11.882 11.502 11.269 11.450 12.041 12.750 13.225 13.330 13.236 13.250 13.533 13.959 14.228 14.148 13.800 13.457 13.311 13.273 13.051 12.460 11.680 11.209 11.493 12.523 13.763 14.494 14.348 13.593 12.927
+ 13.264 12.670 11.810 11.125 10.872 10.974 11.106 10.973 10.571 10.232 10.383 11.217 12.505 13.726 14.419 14.485 14.204 13.969 13.977 14.117 14.148 13.960 13.669 13.466 13.380 13.217 12.757 12.034 11.406 11.305 11.856 12.707 13.267 13.168 12.571 12.031
+ 12.007 11.190 10.068 9.328 9.375 10.096 10.972 11.463 11.375 10.969 10.750 11.105 12.062 13.303 14.402 15.082 15.323 15.283 15.135 14.961 14.756 14.496 14.176 13.790 13.307 12.695 12.004 11.416 11.178 11.430 12.060 12.715 13.011 12.797 12.271 11.843
+ 9.366 8.516 7.436 6.979 7.685 9.422 11.435 12.791 12.943 12.054 10.869 10.229 10.571 11.725 13.129 14.240 14.844 15.050 15.068 14.994 14.785 14.392 13.892 13.446 13.156 12.957 12.686 12.264 11.809 11.565 11.686 12.077 12.462 12.602 12.493 12.338
+ 9.880 8.958 7.739 7.091 7.595 9.174 11.119 12.515 12.787 12.035 10.919 10.216 10.341 11.189 12.335 13.405 14.278 15.002 15.563 15.768 15.392 14.446 13.292 12.451 12.240 12.530 12.862 12.813 12.323 11.715 11.407 11.586 12.114 12.685 13.079 13.253
+ 9.667 8.255 6.507 5.782 6.735 8.878 10.986 11.981 11.623 10.539 9.649 9.525 10.139 11.099 12.070 12.992 13.941 14.862 15.471 15.434 14.690 13.580 12.664 12.349 12.613 13.053 13.200 12.859 12.222 11.693 11.586 11.933 12.513 13.052 13.394 13.538
+ 9.069 8.613 8.034 7.808 8.261 9.337 10.578 11.365 11.294 10.452 9.389 8.791 9.077 10.185 11.683 13.071 14.036 14.494 14.479 14.039 13.268 12.393 11.764 11.655 12.047 12.572 12.761 12.393 11.685 11.127 11.103 11.600 12.260 12.700 12.804 12.750
+ 10.161 9.658 8.958 8.521 8.709 9.546 10.656 11.428 11.382 10.495 9.269 8.457 8.616 9.778 11.464 13.004 13.930 14.170 13.955 13.579 13.213 12.884 12.577 12.310 12.123 12.002 11.872 11.657 11.375 11.159 11.168 11.472 11.997 12.576 13.041 13.292
+ 9.411 8.783 7.936 7.461 7.782 8.893 10.327 11.394 11.572 10.824 9.655 8.845 9.000 10.199 11.949 13.486 14.230 14.098 13.488 12.951 12.807 12.970 13.089 12.868 12.317 11.724 11.419 11.500 11.779 11.961 11.900 11.722 11.698 11.988 12.479 12.858
+ 7.837 7.317 6.648 6.390 6.980 8.434 10.236 11.577 11.819 10.933 9.561 8.628 8.754 9.893 11.438 12.701 13.362 13.568 13.653 13.793 13.886 13.732 13.285 12.726 12.295 12.066 11.908 11.657 11.319 11.101 11.227 11.722 12.380 12.925 13.223 13.322
+ 9.501 8.495 7.177 6.470 6.912 8.318 9.924 10.897 10.847 10.023 9.102 8.746 9.231 10.348 11.594 12.506 12.912 12.970 12.998 13.217 13.590 13.848 13.707 13.093 12.233 11.516 11.219 11.316 11.512 11.502 11.238 10.987 11.113 11.756 12.658 13.311
+ 7.298 6.343 5.212 4.881 5.815 7.655 9.510 10.583 10.643 10.061 9.459 9.301 9.707 10.524 11.499 12.407 13.100 13.516 13.692 13.736 13.746 13.699 13.452 12.870 12.009 11.157 10.669 10.701 11.087 11.480 11.652 11.691 11.895 12.455 13.226 13.790
+ 7.869 7.037 6.012 5.627 6.334 7.903 9.593 10.630 10.682 10.002 9.212 8.901 9.320 10.320 11.513 12.518 13.137 13.394 13.449 13.456 13.462 13.383 13.081 12.493 11.711 10.963 10.491 10.404 10.628 10.978 11.308 11.596 11.918 12.323 12.747 13.026
+ 7.381 6.510 5.429 5.007 5.737 7.416 9.291 10.542 10.771 10.188 9.427 9.138 9.631 10.746 11.989 12.844 13.058 12.769 12.393 12.333 12.693 13.191 13.354 12.868 11.843 10.770 10.193 10.336 10.964 11.598 11.888 11.857 11.803 11.992 12.399 12.737
+ 5.444 5.568 5.909 6.605 7.715 9.086 10.308 10.875 10.511 9.443 8.373 8.085 8.924 10.546 12.142 13.008 13.019 12.649 12.538 12.965 13.646 13.995 13.619 12.623 11.512 10.804 10.684 10.952 11.259 11.394 11.407 11.501 11.834 12.386 12.968 13.339
+ 5.359 5.731 6.274 6.837 7.499 8.433 9.574 10.473 10.601 9.878 8.904 8.576 9.366 10.900 12.269 12.821 12.723 12.756 13.523 14.803 15.681 15.341 13.814 11.978 10.840 10.737 11.181 11.430 11.188 10.807 10.830 11.405 12.144 12.533 12.442 12.204
+ 4.948 5.279 5.860 6.614 7.522 8.557 9.571 10.267 10.372 9.881 9.151 8.723 8.967 9.858 11.043 12.155 13.056 13.824 14.517 14.988 14.951 14.256 13.102 11.949 11.203 10.934 10.898 10.824 10.679 10.676 11.020 11.656 12.278 12.590 12.562 12.426
+ 6.112 6.237 6.483 6.871 7.440 8.200 9.065 9.840 10.309 10.377 10.152 9.892 9.870 10.231 10.955 11.913 12.931 13.818 14.368 14.405 13.885 12.980 12.031 11.371 11.112 11.091 11.021 10.749 10.385 10.214 10.441 11.011 11.647 12.076 12.223 12.220
+ 6.514 6.708 7.022 7.375 7.751 8.220 8.872 9.703 10.544 11.109 11.168 10.729 10.110 9.793 10.156 11.236 12.689 13.990 14.722 14.776 14.332 13.680 13.025 12.418 11.825 11.238 10.719 10.352 10.179 10.180 10.317 10.584 10.997 11.523 12.040 12.366
+ 5.046 5.167 5.496 6.129 7.079 8.217 9.312 10.128 10.530 10.546 10.339 10.129 10.097 10.322 10.780 11.374 11.994 12.551 12.983 13.252 13.323 13.181 12.851 12.410 11.970 11.625 11.397 11.231 11.042 10.802 10.590 10.559 10.827 11.366 11.978 12.383
+ 5.460 5.968 6.612 7.019 7.179 7.453 8.196 9.346 10.386 10.747 10.300 9.513 9.120 9.587 10.796 12.187 13.181 13.533 13.373 12.985 12.591 12.276 12.057 11.933 11.860 11.717 11.371 10.823 10.290 10.088 10.388 11.053 11.715 12.060 12.055 11.933
+ 4.746 5.595 6.814 7.813 8.317 8.502 8.752 9.282 9.958 10.439 10.502 10.233 9.949 9.950 10.321 10.943 11.631 12.260 12.766 13.076 13.097 12.791 12.257 11.702 11.313 11.122 11.014 10.860 10.662 10.549 10.645 10.928 11.232 11.390 11.374 11.302
+ 4.876 5.684 6.925 8.097 8.869 9.224 9.362 9.484 9.642 9.760 9.760 9.669 9.611 9.729 10.107 10.746 11.581 12.489 13.285 13.754 13.748 13.283 12.565 11.875 11.402 11.132 10.909 10.604 10.249 10.022 10.094 10.477 11.013 11.490 11.788 11.912
+ 5.232 5.863 6.916 8.065 9.002 9.560 9.753 9.730 9.662 9.642 9.657 9.643 9.598 9.633 9.935 10.633 11.671 12.771 13.558 13.755 13.347 12.582 11.820 11.318 11.099 10.999 10.829 10.535 10.232 10.099 10.227 10.543 10.867 11.053 11.082 11.048
+ 4.713 5.509 6.764 7.999 8.854 9.252 9.366 9.442 9.617 9.850 10.007 10.008 9.934 9.992 10.378 11.129 12.065 12.872 13.266 13.146 12.641 12.019 11.533 11.287 11.198 11.090 10.826 10.410 9.978 9.709 9.705 9.932 10.264 10.562 10.753 10.837
+ 6.055 6.451 7.081 7.745 8.328 8.822 9.240 9.541 9.659 9.610 9.537 9.622 9.941 10.386 10.772 11.020 11.239 11.610 12.174 12.734 12.986 12.776 12.240 11.683 11.308 11.047 10.666 10.052 9.391 9.061 9.311 10.017 10.765 11.176 11.194 11.070
+ 6.121 6.653 7.464 8.233 8.784 9.149 9.461 9.784 10.061 10.184 10.127 9.983 9.903 9.987 10.250 10.664 11.197 11.796 12.341 12.647 12.577 12.167 11.638 11.241 11.057 10.927 10.603 10.006 9.353 9.017 9.235 9.900 10.642 11.114 11.236 11.194
+ 6.018 6.389 7.072 7.930 8.767 9.393 9.718 9.805 9.815 9.893 10.065 10.237 10.296 10.238 10.198 10.365 10.836 11.529 12.210 12.623 12.620 12.229 11.615 10.987 10.509 10.237 10.121 10.048 9.922 9.737 9.601 9.690 10.120 10.842 11.614 12.115
+ 5.258 5.801 6.731 7.805 8.788 9.526 9.968 10.145 10.135 10.035 9.940 9.929 10.040 10.269 10.583 10.941 11.317 11.692 12.029 12.264 12.320 12.158 11.806 11.359 10.921 10.552 10.235 9.920 9.591 9.314 9.227 9.458 10.037 10.839 11.615 12.092
+ 6.631 6.680 6.916 7.495 8.431 9.526 10.444 10.887 10.770 10.260 9.686 9.355 9.406 9.784 10.324 10.874 11.363 11.787 12.142 12.374 12.397 12.155 11.681 11.093 10.541 10.126 9.870 9.733 9.669 9.667 9.757 9.972 10.308 10.703 11.056 11.265
+ 5.042 5.180 5.585 6.372 7.485 8.663 9.580 10.045 10.107 9.986 9.882 9.844 9.791 9.675 9.609 9.829 10.492 11.475 12.369 12.719 12.344 11.485 10.656 10.282 10.411 10.722 10.809 10.518 10.061 9.814 9.997 10.487 10.934 11.061 10.884 10.670
+ 6.674 6.735 6.946 7.395 8.081 8.871 9.571 10.026 10.193 10.127 9.912 9.606 9.258 8.977 8.949 9.368 10.278 11.460 12.476 12.885 12.509 11.562 10.538 9.910 9.852 10.165 10.454 10.420 10.053 9.610 9.410 9.624 10.187 10.881 11.470 11.797
+ 10.025 9.968 9.919 9.957 10.109 10.321 10.486 10.519 10.428 10.303 10.235 10.228 10.197 10.061 9.876 9.842 10.166 10.854 11.620 12.032 11.824 11.112 10.343 9.973 10.123 10.499 10.653 10.360 9.811 9.447 9.591 10.188 10.872 11.283 11.346 11.264
+ 12.455 12.105 11.656 11.376 11.316 11.289 11.092 10.744 10.491 10.560 10.898 11.158 10.989 10.391 9.799 9.785 10.595 11.895 12.957 13.162 12.425 11.235 10.277 9.960 10.181 10.494 10.495 10.125 9.665 9.478 9.717 10.227 10.694 10.893 10.837 10.719
+ 8.475 8.253 7.998 7.955 8.258 8.844 9.511 10.050 10.367 10.488 10.482 10.378 10.172 9.907 9.744 9.917 10.563 11.559 12.508 12.938 12.600 11.655 10.595 9.928 9.866 10.204 10.513 10.455 10.015 9.474 9.183 9.320 9.807 10.411 10.909 11.176
+ 5.387 5.690 6.262 7.051 7.994 8.990 9.873 10.446 10.566 10.252 9.705 9.215 9.009 9.151 9.562 10.120 10.731 11.323 11.789 11.978 11.783 11.257 10.642 10.230 10.167 10.346 10.489 10.368 9.987 9.566 9.367 9.496 9.851 10.235 10.503 10.625
+ 6.427 6.460 6.567 6.841 7.396 8.260 9.279 10.132 10.502 10.292 9.705 9.109 8.793 8.825 9.103 9.535 10.114 10.836 11.542 11.910 11.671 10.874 9.937 9.378 9.415 9.795 10.008 9.737 9.141 8.711 8.843 9.496 10.239 10.640 10.621 10.460
+ 6.529 6.156 5.704 5.595 6.128 7.291 8.727 9.915 10.440 10.219 9.535 8.863 8.603 8.891 9.578 10.375 11.030 11.422 11.548 11.453 11.183 10.793 10.361 9.981 9.717 9.567 9.477 9.407 9.372 9.435 9.641 9.965 10.311 10.582 10.734 10.792
+ 6.633 6.142 5.541 5.376 6.035 7.509 9.357 10.923 11.670 11.453 10.569 9.574 8.965 8.952 9.410 10.028 10.519 10.758 10.777 10.672 10.518 10.346 10.175 10.042 9.990 10.025 10.089 10.092 9.973 9.757 9.551 9.481 9.612 9.908 10.240 10.457
+ 6.792 6.322 5.788 5.769 6.663 8.405 10.432 11.959 12.414 11.762 10.506 9.350 8.779 8.842 9.272 9.772 10.228 10.664 11.058 11.243 11.023 10.405 9.690 9.295 9.426 9.890 10.238 10.128 9.607 9.063 8.901 9.227 9.805 10.298 10.539 10.595
+ 5.874 5.522 5.201 5.442 6.572 8.437 10.394 11.628 11.635 10.548 9.071 8.031 7.874 8.456 9.273 9.911 10.318 10.706 11.209 11.657 11.690 11.119 10.169 9.366 9.132 9.450 9.891 9.981 9.594 9.021 8.704 8.873 9.411 10.007 10.424 10.611
+ 6.496 5.997 5.440 5.434 6.371 8.141 10.141 11.591 11.971 11.308 10.122 9.080 8.604 8.712 9.155 9.691 10.242 10.821 11.351 11.598 11.325 10.534 9.558 8.876 8.770 9.122 9.524 9.616 9.359 9.031 8.955 9.224 9.658 9.994 10.120 10.120
+ 10.990 10.157 8.955 8.076 8.075 9.035 10.481 11.633 11.881 11.166 9.996 9.071 8.810 9.144 9.699 10.179 10.571 11.010 11.481 11.689 11.290 10.270 9.096 8.433 8.627 9.410 10.106 10.176 9.636 8.994 8.776 9.081 9.561 9.792 9.672 9.463
+ 11.077 9.866 8.281 7.413 7.849 9.301 10.840 11.555 11.142 10.011 8.913 8.396 8.518 8.976 9.459 9.898 10.414 11.052 11.600 11.689 11.111 10.063 9.082 8.688 9.003 9.669 10.127 10.037 9.508 8.961 8.770 8.990 9.368 9.608 9.621 9.543
+ 7.053 6.887 6.695 6.693 7.066 7.865 8.955 10.053 10.843 11.119 10.882 10.335 9.787 9.512 9.642 10.123 10.753 11.269 11.445 11.181 10.546 9.758 9.099 8.788 8.883 9.253 9.657 9.870 9.808 9.551 9.282 9.175 9.300 9.600 9.933 10.148
+ 7.055 6.826 6.463 6.173 6.248 6.918 8.172 9.670 10.867 11.309 10.904 9.981 9.100 8.734 9.038 9.823 10.703 11.300 11.386 10.946 10.166 9.363 8.873 8.884 9.333 9.917 10.266 10.172 9.713 9.181 8.873 8.898 9.148 9.428 9.610 9.681
+ 6.884 7.187 7.561 7.780 7.862 8.082 8.704 9.680 10.584 10.886 10.354 9.275 8.301 8.033 8.638 9.788 10.908 11.548 11.590 11.209 10.671 10.158 9.735 9.427 9.275 9.318 9.524 9.757 9.843 9.686 9.359 9.060 8.985 9.189 9.538 9.800
+ 5.025 5.808 6.795 7.328 7.243 6.997 7.252 8.259 9.585 10.424 10.241 9.220 8.156 7.870 8.630 10.001 11.203 11.672 11.382 10.744 10.218 9.986 9.915 9.766 9.441 9.059 8.831 8.869 9.108 9.369 9.507 9.501 9.438 9.412 9.447 9.492
+ 7.449 8.201 8.920 8.799 7.814 6.812 6.774 7.934 9.536 10.466 10.173 9.091 8.215 8.273 9.196 10.314 10.982 11.051 10.816 10.604 10.461 10.214 9.768 9.271 8.976 8.971 9.084 9.081 8.928 8.833 9.012 9.423 9.765 9.758 9.432 9.111
+ 12.718 12.370 11.839 11.328 10.938 10.630 10.303 9.914 9.514 9.200 9.027 8.991 9.071 9.275 9.618 10.058 10.465 10.682 10.637 10.411 10.173 10.049 10.018 9.954 9.763 9.491 9.291 9.288 9.458 9.647 9.709 9.632 9.537 9.548 9.671 9.791
+ 11.775 11.332 10.625 9.931 9.493 9.415 9.615 9.880 9.980 9.798 9.394 8.980 8.800 8.991 9.504 10.126 10.600 10.766 10.632 10.337 10.047 9.851 9.731 9.621 9.484 9.350 9.288 9.335 9.460 9.591 9.671 9.705 9.746 9.833 9.953 10.042
+ 8.340 8.293 8.284 8.426 8.767 9.229 9.620 9.746 9.556 9.202 8.960 9.050 9.479 10.058 10.554 10.867 11.073 11.288 11.502 11.552 11.267 10.670 10.024 9.664 9.733 10.071 10.350 10.355 10.150 9.989 10.052 10.262 10.353 10.130 9.677 9.309
+ 8.175 8.032 8.010 8.378 9.129 9.941 10.414 10.380 10.019 9.683 9.609 9.773 9.978 10.084 10.131 10.261 10.532 10.824 10.927 10.741 10.381 10.098 10.071 10.267 10.482 10.511 10.308 10.002 9.774 9.727 9.831 9.985 10.104 10.158 10.168 10.164
+ 9.718 9.645 9.613 9.731 9.981 10.207 10.239 10.040 9.755 9.603 9.707 10.004 10.299 10.428 10.378 10.276 10.269 10.394 10.558 10.628 10.551 10.394 10.286 10.309 10.434 10.560 10.602 10.563 10.524 10.574 10.733 10.937 11.085 11.121 11.069 11.009
+ 8.509 9.330 10.475 11.316 11.520 11.206 10.746 10.437 10.313 10.245 10.159 10.135 10.308 10.696 11.136 11.414 11.439 11.296 11.128 10.990 10.821 10.567 10.309 10.233 10.468 10.934 11.369 11.536 11.405 11.166 11.036 11.071 11.137 11.078 10.884 10.708
+ 8.304 8.797 9.550 10.236 10.624 10.686 10.569 10.464 10.469 10.551 10.605 10.570 10.494 10.506 10.717 11.123 11.580 11.879 11.864 11.532 11.042 10.626 10.466 10.597 10.899 11.178 11.280 11.174 10.952 10.755 10.685 10.753 10.895 11.032 11.120 11.156
+ 9.237 9.308 9.387 9.422 9.448 9.587 9.945 10.481 10.980 11.152 10.851 10.214 9.637 9.538 10.074 11.001 11.799 11.988 11.441 10.463 9.599 9.294 9.636 10.347 10.998 11.286 11.178 10.868 10.601 10.514 10.588 10.710 10.776 10.751 10.676 10.615
+ 8.267 8.802 9.448 9.742 9.591 9.336 9.410 9.931 10.581 10.902 10.700 10.221 9.932 10.135 10.754 11.430 11.819 11.785 11.404 10.822 10.176 9.619 9.346 9.505 10.044 10.656 10.949 10.745 10.245 9.887 9.991 10.490 11.007 11.191 11.021 10.789
+ 7.735 8.098 8.695 9.326 9.817 10.085 10.159 10.141 10.143 10.216 10.325 10.380 10.317 10.180 10.133 10.367 10.946 11.694 12.243 12.247 11.629 10.669 9.847 9.531 9.735 10.139 10.362 10.265 10.046 10.040 10.413 10.998 11.433 11.464 11.166 10.869
+ 9.422 9.446 9.525 9.650 9.732 9.667 9.461 9.284 9.362 9.781 10.377 10.849 11.009 10.948 10.967 11.297 11.868 12.329 12.322 11.783 11.006 10.438 10.356 10.705 11.191 11.517 11.563 11.386 11.104 10.798 10.519 10.330 10.315 10.501 10.796 11.018
+ 5.965 7.086 8.711 10.019 10.511 10.286 9.890 9.877 10.419 11.228 11.817 11.876 11.480 11.006 10.837 11.099 11.598 11.983 11.987 11.589 10.999 10.512 10.333 10.487 10.841 11.202 11.413 11.421 11.270 11.066 10.917 10.891 10.997 11.184 11.376 11.496
+ 6.416 6.683 7.116 7.604 8.117 8.703 9.403 10.155 10.797 11.157 11.176 10.942 10.639 10.447 10.473 10.733 11.151 11.572 11.793 11.650 11.145 10.498 10.058 10.080 10.533 11.095 11.381 11.232 10.828 10.541 10.629 11.037 11.468 11.649 11.558 11.406
+ 7.381 7.735 8.343 9.033 9.625 10.008 10.197 10.300 10.424 10.563 10.592 10.382 9.958 9.564 9.537 10.064 10.992 11.866 12.193 11.768 10.822 9.882 9.435 9.625 10.200 10.708 10.816 10.499 10.015 9.690 9.699 9.983 10.342 10.592 10.686 10.693
+ 8.768 8.362 7.956 8.021 8.714 9.751 10.632 11.002 10.851 10.421 9.977 9.656 9.495 9.551 9.911 10.575 11.323 11.765 11.593 10.832 9.883 9.271 9.297 9.844 10.491 10.834 10.744 10.395 10.088 10.024 10.215 10.539 10.861 11.105 11.258 11.331
+ 8.815 8.801 8.851 9.055 9.457 10.025 10.665 11.245 11.598 11.561 11.054 10.191 9.309 8.833 9.013 9.730 10.522 10.887 10.629 10.001 9.506 9.519 10.012 10.608 10.892 10.723 10.297 9.940 9.852 10.003 10.244 10.486 10.761 11.121 11.517 11.788
+ 10.235 10.229 10.112 9.859 9.659 9.806 10.399 11.148 11.518 11.149 10.194 9.253 8.938 9.417 10.315 11.033 11.199 10.870 10.364 9.946 9.664 9.448 9.304 9.364 9.721 10.252 10.641 10.619 10.211 9.741 9.576 9.843 10.360 10.830 11.084 11.160
+ 7.325 7.332 7.385 7.594 8.125 9.060 10.235 11.223 11.545 11.004 9.867 8.729 8.155 8.355 9.129 10.073 10.838 11.242 11.220 10.769 9.988 9.154 8.676 8.852 9.603 10.445 10.799 10.434 9.668 9.132 9.270 9.996 10.799 11.196 11.121 10.908
+ 5.798 6.200 6.822 7.485 8.178 9.014 10.009 10.913 11.303 10.899 9.841 8.659 7.956 8.042 8.802 9.851 10.795 11.385 11.507 11.139 10.379 9.517 8.974 9.065 9.726 10.478 10.739 10.277 9.422 8.825 8.950 9.713 10.585 11.055 11.035 10.849
+ 6.685 7.111 7.710 8.227 8.639 9.140 9.871 10.678 11.152 10.953 10.128 9.134 8.532 8.618 9.274 10.135 10.853 11.253 11.283 10.939 10.278 9.518 9.028 9.125 9.785 10.573 10.910 10.517 9.663 8.975 8.945 9.557 10.346 10.819 10.855 10.720
+ 7.584 7.440 7.247 7.186 7.474 8.233 9.365 10.527 11.280 11.336 10.726 9.788 8.971 8.620 8.848 9.549 10.471 11.289 11.691 11.492 10.761 9.865 9.305 9.414 10.112 10.931 11.331 11.100 10.497 10.031 10.040 10.435 10.809 10.821 10.490 10.160
+ 9.956 9.367 8.345 7.248 6.590 6.818 8.002 9.695 11.128 11.658 11.159 10.063 9.049 8.617 8.864 9.542 10.287 10.799 10.907 10.567 9.902 9.225 8.943 9.317 10.220 11.144 11.512 11.099 10.220 9.492 9.355 9.749 10.217 10.331 10.062 9.752
+ 9.133 8.853 8.358 7.824 7.545 7.809 8.696 9.943 11.023 11.420 10.940 9.835 8.673 8.026 8.180 9.019 10.119 10.974 11.234 10.858 10.133 9.521 9.412 9.881 10.620 11.116 10.990 10.265 9.365 8.819 8.882 9.372 9.842 9.949 9.710 9.440
+ 8.366 8.063 7.631 7.357 7.522 8.246 9.386 10.554 11.291 11.296 10.589 9.486 8.436 7.807 7.762 8.250 9.077 9.984 10.719 11.106 11.111 10.871 10.623 10.554 10.668 10.781 10.675 10.286 9.782 9.441 9.432 9.688 9.963 10.050 9.937 9.796
+ 8.737 8.228 7.438 6.790 6.750 7.565 9.025 10.485 11.209 10.838 9.644 8.339 7.589 7.608 8.126 8.711 9.115 9.369 9.585 9.752 9.734 9.473 9.144 9.061 9.381 9.921 10.271 10.147 9.653 9.187 9.083 9.302 9.491 9.330 8.857 8.444
+ 13.237 13.372 13.438 13.251 12.865 12.555 12.576 12.909 13.260 13.299 12.929 12.346 11.859 11.654 11.718 11.951 12.294 12.730 13.174 13.429 13.293 12.761 12.081 11.576 11.369 11.277 11.021 10.548 10.155 10.235 10.849 11.545 11.652 10.842 9.490 8.460
+ 15.612 15.119 14.425 13.936 13.922 14.348 14.902 15.204 15.057 14.558 13.985 13.558 13.294 13.066 12.815 12.683 12.914 13.587 14.428 14.939 14.761 13.983 13.088 12.560 12.478 12.483 12.165 11.522 11.041 11.271 12.238 13.265 13.426 12.313 10.469 9.070
+ 14.667 13.620 12.363 11.907 12.653 14.092 15.224 15.320 14.424 13.214 12.406 12.215 12.311 12.255 11.969 11.820 12.245 13.271 14.391 14.917 14.525 13.516 12.559 12.135 12.169 12.163 11.711 10.938 10.444 10.775 11.869 12.975 13.169 12.096 10.320 8.980
+ 11.634 11.055 10.337 10.033 10.410 11.266 12.090 12.412 12.075 11.257 10.286 9.426 8.818 8.542 8.687 9.303 10.274 11.259 11.816 11.660 10.873 9.860 9.087 8.766 8.751 8.720 8.502 8.255 8.340 8.980 9.982 10.780 10.809 9.938 8.629 7.674
+ 8.222 8.062 7.891 7.944 8.419 9.339 10.471 11.392 11.682 11.160 10.000 8.649 7.610 7.217 7.530 8.366 9.399 10.271 10.697 10.564 10.001 9.350 8.987 9.076 9.437 9.665 9.443 8.825 8.237 8.153 8.697 9.508 10.002 9.833 9.185 8.620
+ 6.030 6.161 6.508 7.163 8.126 9.252 10.277 10.928 11.034 10.594 9.769 8.825 8.058 7.729 7.994 8.822 9.951 10.937 11.340 10.964 10.012 9.005 8.469 8.597 9.112 9.473 9.293 8.639 8.001 7.908 8.511 9.451 10.133 10.186 9.744 9.305
+ 8.212 7.611 7.010 7.082 7.998 9.295 10.284 10.605 10.419 10.128 9.934 9.689 9.165 8.440 7.968 8.233 9.272 10.542 11.281 11.070 10.138 9.144 8.664 8.800 9.209 9.457 9.367 9.077 8.846 8.826 8.991 9.239 9.503 9.770 10.014 10.168
+ 7.443 6.927 6.492 6.765 7.817 9.096 9.945 10.173 10.147 10.317 10.668 10.685 9.877 8.398 7.113 6.989 8.292 10.297 11.785 11.929 10.848 9.425 8.577 8.615 9.160 9.575 9.502 9.052 8.609 8.482 8.733 9.225 9.788 10.307 10.709 10.933
+ 6.944 6.655 6.480 6.839 7.766 8.860 9.639 9.943 10.009 10.160 10.416 10.435 9.857 8.742 7.666 7.346 8.082 9.495 10.775 11.245 10.796 9.867 9.055 8.697 8.739 8.915 9.029 9.080 9.184 9.418 9.744 10.061 10.291 10.424 10.489 10.517
+ 5.540 5.781 6.289 7.013 7.774 8.356 8.699 8.965 9.384 9.973 10.411 10.260 9.373 8.155 7.378 7.645 8.915 10.469 11.397 11.211 10.145 8.920 8.204 8.196 8.612 9.018 9.172 9.144 9.155 9.361 9.741 10.168 10.523 10.765 10.906 10.971
+ 3.813 4.267 5.070 6.003 6.794 7.288 7.589 8.012 8.779 9.710 10.221 9.738 8.248 6.512 5.649 6.361 8.365 10.528 11.628 11.190 9.752 8.398 7.953 8.466 9.321 9.804 9.632 9.057 8.573 8.519 8.904 9.508 10.089 10.518 10.781 10.902
+ 5.147 5.486 5.969 6.323 6.375 6.211 6.175 6.653 7.743 9.074 9.952 9.822 8.717 7.331 6.607 7.098 8.574 10.184 11.045 10.809 9.817 8.763 8.192 8.209 8.575 8.993 9.316 9.539 9.670 9.669 9.522 9.334 9.297 9.530 9.939 10.258
+ 5.129 5.628 6.268 6.606 6.465 6.113 6.104 6.860 8.273 9.663 10.181 9.423 7.795 6.325 6.001 7.097 9.003 10.665 11.313 10.920 10.077 9.457 9.319 9.449 9.483 9.275 8.978 8.818 8.837 8.879 8.816 8.750 8.953 9.581 10.442 11.069
+ 5.859 5.858 5.845 5.804 5.743 5.765 6.069 6.838 8.018 9.207 9.809 9.439 8.281 7.084 6.707 7.522 9.132 10.648 11.311 10.982 10.136 9.414 9.138 9.185 9.249 9.180 9.084 9.130 9.312 9.443 9.382 9.242 9.325 9.827 10.589 11.163
+ 5.527 6.101 6.751 6.925 6.527 6.044 6.166 7.205 8.769 9.989 10.124 9.091 7.538 6.414 6.363 7.362 8.820 10.006 10.481 10.271 9.732 9.258 9.060 9.116 9.267 9.358 9.325 9.205 9.089 9.066 9.178 9.412 9.713 10.008 10.237 10.361
+ 3.030 4.376 6.047 6.841 6.358 5.302 4.869 5.752 7.579 9.217 9.660 8.767 7.303 6.324 6.444 7.520 8.897 9.919 10.288 10.086 9.576 9.004 8.542 8.302 8.330 8.570 8.854 8.991 8.903 8.690 8.566 8.704 9.124 9.693 10.211 10.513
+ 2.873 3.722 4.750 5.214 4.964 4.587 4.891 6.165 7.875 9.031 8.957 7.807 6.450 5.836 6.360 7.679 9.057 9.888 10.008 9.637 9.110 8.657 8.362 8.239 8.287 8.461 8.639 8.664 8.457 8.111 7.872 7.989 8.559 9.444 10.332 10.885
+ 3.817 4.317 4.870 5.041 4.874 4.906 5.667 7.120 8.560 9.102 8.381 6.877 5.598 5.388 6.394 8.058 9.563 10.340 10.293 9.680 8.868 8.167 7.787 7.831 8.245 8.786 9.120 9.020 8.547 8.029 7.846 8.173 8.889 9.699 10.333 10.663
+ 3.353 4.178 5.107 5.375 4.902 4.418 4.823 6.363 8.314 9.486 9.124 7.486 5.658 4.790 5.357 6.977 8.789 10.036 10.417 10.068 9.334 8.567 8.041 7.905 8.141 8.533 8.769 8.632 8.179 7.721 7.610 7.998 8.748 9.565 10.190 10.511
+ 4.510 4.773 5.136 5.442 5.714 6.165 7.000 8.157 9.217 9.609 9.001 7.607 6.161 5.524 6.159 7.832 9.729 10.938 10.970 9.989 8.636 7.605 7.246 7.464 7.882 8.137 8.079 7.796 7.492 7.365 7.533 8.027 8.792 9.684 10.485 10.962
+ 4.992 4.837 4.653 4.613 4.864 5.487 6.473 7.680 8.776 9.288 8.839 7.477 5.834 4.880 5.340 7.151 9.397 10.863 10.833 9.543 7.965 7.075 7.193 7.883 8.414 8.361 7.858 7.365 7.240 7.501 7.938 8.381 8.830 9.353 9.900 10.268
+ 5.302 4.991 4.566 4.334 4.572 5.382 6.615 7.891 8.743 8.832 8.143 7.042 6.137 5.985 6.781 8.236 9.714 10.573 10.502 9.655 8.507 7.553 7.057 6.983 7.127 7.301 7.438 7.567 7.731 7.931 8.145 8.367 8.616 8.898 9.169 9.341
+ 2.520 2.609 2.654 2.625 2.768 3.467 4.859 6.552 7.784 7.959 7.128 6.000 5.452 5.925 7.180 8.569 9.526 9.872 9.735 9.283 8.569 7.635 6.692 6.112 6.186 6.856 7.697 8.215 8.201 7.865 7.623 7.765 8.268 8.886 9.376 9.626
+ 2.852 3.318 3.950 4.441 4.757 5.131 5.767 6.545 7.053 6.931 6.229 5.440 5.157 5.656 6.737 7.932 8.859 9.388 9.561 9.396 8.848 7.952 6.966 6.299 6.236 6.694 7.263 7.521 7.368 7.081 7.058 7.491 8.239 8.990 9.507 9.744
+ 4.437 4.639 4.783 4.632 4.260 4.035 4.307 5.071 5.930 6.405 6.309 5.881 5.568 5.691 6.267 7.100 7.982 8.780 9.363 9.524 9.061 8.003 6.736 5.848 5.757 6.397 7.256 7.750 7.645 7.193 6.899 7.127 7.878 8.856 9.703 10.175
+ 6.269 5.789 5.245 5.137 5.655 6.531 7.247 7.412 7.011 6.356 5.832 5.651 5.803 6.181 6.718 7.391 8.133 8.758 9.014 8.751 8.056 7.230 6.625 6.440 6.625 6.949 7.164 7.146 6.950 6.757 6.780 7.157 7.887 8.817 9.681 10.202
+ 7.005 6.841 6.788 7.081 7.595 7.889 7.589 6.772 5.975 5.779 6.335 7.235 7.863 7.902 7.564 7.355 7.613 8.216 8.718 8.749 8.321 7.785 7.521 7.640 7.945 8.142 8.079 7.827 7.570 7.464 7.564 7.858 8.308 8.847 9.353 9.665
+ 6.320 6.169 6.236 6.840 7.822 8.559 8.444 7.430 6.142 5.428 5.722 6.746 7.786 8.283 8.226 8.051 8.174 8.604 8.962 8.842 8.194 7.382 6.902 7.021 7.616 8.314 8.765 8.833 8.611 8.293 8.058 8.010 8.171 8.483 8.823 9.045
+ 6.081 6.174 6.438 6.885 7.333 7.472 7.100 6.336 5.607 5.382 5.858 6.837 7.884 8.636 8.994 9.095 9.113 9.090 8.939 8.582 8.073 7.605 7.379 7.481 7.837 8.264 8.568 8.612 8.354 7.869 7.344 7.023 7.089 7.539 8.148 8.577
+ 6.259 6.138 6.154 6.517 7.102 7.467 7.221 6.412 5.573 5.344 5.980 7.137 8.134 8.463 8.135 7.609 7.389 7.637 8.099 8.345 8.117 7.483 6.747 6.229 6.086 6.286 6.683 7.102 7.403 7.512 7.448 7.320 7.263 7.352 7.539 7.690
+ 7.521 6.729 5.897 5.834 6.663 7.688 8.007 7.293 6.072 5.240 5.297 5.969 6.531 6.505 6.074 5.871 6.364 7.402 8.322 8.491 7.786 6.640 5.655 5.176 5.142 5.292 5.443 5.606 5.876 6.276 6.709 7.049 7.243 7.329 7.368 7.389
+ 8.330 7.854 7.135 6.484 6.110 6.027 6.123 6.266 6.381 6.428 6.353 6.109 5.738 5.421 5.425 5.905 6.745 7.545 7.845 7.420 6.443 5.392 4.735 4.645 4.932 5.240 5.338 5.287 5.356 5.773 6.508 7.267 7.699 7.651 7.288 6.965
+ 7.664 6.566 5.257 4.744 5.295 6.278 6.774 6.398 5.566 5.027 5.158 5.691 6.084 6.115 6.080 6.420 7.169 7.811 7.723 6.776 5.529 4.804 5.016 5.871 6.661 6.873 6.548 6.136 6.032 6.258 6.538 6.620 6.497 6.336 6.268 6.273
+ 7.150 7.101 7.078 7.147 7.267 7.294 7.078 6.591 5.979 5.479 5.286 5.442 5.851 6.360 6.856 7.280 7.585 7.696 7.524 7.051 6.389 5.760 5.395 5.404 5.720 6.152 6.507 6.689 6.715 6.657 6.553 6.384 6.114 5.749 5.382 5.148
+ 9.786 8.991 7.959 7.353 7.415 7.812 7.961 7.536 6.708 5.965 5.685 5.866 6.210 6.434 6.498 6.569 6.776 7.037 7.119 6.865 6.363 5.898 5.738 5.944 6.358 6.755 7.002 7.097 7.104 7.060 6.966 6.831 6.701 6.630 6.628 6.651
+ 9.485 8.939 8.213 7.734 7.650 7.740 7.649 7.209 6.576 6.076 5.922 6.079 6.356 6.616 6.874 7.197 7.531 7.660 7.363 6.642 5.792 5.226 5.189 5.591 6.096 6.391 6.403 6.299 6.304 6.497 6.750 6.842 6.633 6.162 5.632 5.287
+ 9.021 8.400 7.619 7.221 7.396 7.859 8.125 7.915 7.358 6.826 6.591 6.628 6.707 6.661 6.542 6.537 6.725 6.941 6.881 6.372 5.556 4.825 4.553 4.848 5.510 6.198 6.656 6.825 6.789 6.653 6.461 6.205 5.886 5.544 5.255 5.089
+ 10.103 9.938 9.680 9.388 9.020 8.463 7.650 6.682 5.825 5.370 5.451 5.971 6.667 7.266 7.607 7.656 7.453 7.059 6.549 6.027 5.619 5.423 5.456 5.656 5.944 6.281 6.676 7.126 7.560 7.842 7.850 7.555 7.053 6.509 6.074 5.840
+ 8.237 8.128 8.085 8.249 8.523 8.585 8.145 7.233 6.259 5.758 6.025 6.896 7.868 8.428 8.357 7.795 7.071 6.465 6.072 5.841 5.685 5.561 5.479 5.461 5.534 5.721 6.046 6.496 6.981 7.346 7.436 7.184 6.656 6.019 5.468 5.153
+ 6.687 6.629 6.791 7.365 8.123 8.492 8.028 6.865 5.693 5.249 5.742 6.712 7.436 7.504 7.077 6.632 6.481 6.524 6.422 5.988 5.392 5.004 5.041 5.390 5.747 5.929 6.038 6.322 6.885 7.534 7.905 7.742 7.080 6.199 5.429 4.997
+ 6.811 6.340 5.667 5.168 5.091 5.406 5.829 6.003 5.726 5.088 4.423 4.112 4.349 5.018 5.757 6.167 6.046 5.494 4.829 4.381 4.293 4.460 4.645 4.662 4.516 4.382 4.454 4.791 5.258 5.619 5.690 5.448 5.022 4.594 4.285 4.135
+ 4.832 4.827 4.911 5.158 5.501 5.725 5.604 5.089 4.395 3.891 3.864 4.312 4.939 5.366 5.398 5.148 4.923 4.968 5.264 5.561 5.593 5.308 4.905 4.666 4.722 4.958 5.129 5.079 4.860 4.653 4.577 4.562 4.418 4.035 3.519 3.145
+ 4.066 4.084 4.402 5.206 6.244 6.908 6.726 5.795 4.735 4.190 4.318 4.748 5.004 4.973 4.952 5.268 5.869 6.330 6.262 5.721 5.186 5.103 5.456 5.765 5.553 4.807 4.001 3.650 3.836 4.152 4.114 3.615 2.996 2.686 2.779 2.988
+ 5.277 4.706 3.989 3.646 3.904 4.543 5.083 5.150 4.731 4.149 3.820 3.979 4.561 5.258 5.701 5.638 5.064 4.248 3.632 3.615 4.303 5.392 6.305 6.537 5.981 4.994 4.132 3.751 3.784 3.870 3.700 3.281 2.893 2.802 3.002 3.232
+ 5.691 5.120 4.425 4.157 4.540 5.290 5.824 5.703 4.976 4.152 3.826 4.237 5.102 5.839 6.004 5.597 5.003 4.653 4.701 4.973 5.204 5.325 5.520 6.010 6.765 7.435 7.590 7.065 6.122 5.259 4.835 4.820 4.884 4.722 4.337 4.007
+ 5.884 5.193 4.394 4.199 4.887 6.081 7.022 7.124 6.378 5.311 4.555 4.393 4.628 4.846 4.816 4.665 4.708 5.103 5.660 6.004 5.930 5.642 5.621 6.215 7.304 8.335 8.732 8.342 7.550 6.947 6.846 7.045 7.039 6.503 5.614 4.929
+ 5.448 5.235 4.955 4.837 5.076 5.677 6.383 6.784 6.569 5.764 4.744 3.986 3.743 3.908 4.167 4.307 4.384 4.609 5.080 5.638 6.007 6.077 6.057 6.308 6.992 7.878 8.493 8.509 8.021 7.451 7.168 7.182 7.181 6.878 6.320 5.871
+ 7.149 6.292 5.154 4.468 4.614 5.368 6.101 6.242 5.654 4.680 3.862 3.575 3.833 4.367 4.849 5.080 5.048 4.859 4.653 4.567 4.721 5.195 5.968 6.885 7.686 8.127 8.102 7.706 7.170 6.733 6.521 6.512 6.595 6.664 6.683 6.674
+ 5.480 4.846 4.159 4.080 4.787 5.829 6.511 6.445 5.811 5.131 4.808 4.846 4.967 4.940 4.795 4.739 4.903 5.197 5.428 5.535 5.684 6.122 6.906 7.792 8.390 8.447 8.029 7.434 6.963 6.730 6.672 6.682 6.719 6.797 6.911 6.999
+ 5.469 5.349 5.208 5.170 5.295 5.532 5.772 5.942 6.068 6.251 6.551 6.880 7.018 6.764 6.125 5.383 4.964 5.168 5.962 7.000 7.856 8.300 8.398 8.385 8.425 8.474 8.363 7.990 7.460 7.019 6.856 6.949 7.098 7.113 6.973 6.827
+ 5.177 5.395 5.674 5.821 5.748 5.552 5.457 5.666 6.223 6.962 7.578 7.780 7.447 6.696 5.849 5.284 5.261 5.794 6.650 7.482 8.017 8.190 8.138 8.069 8.100 8.181 8.163 7.937 7.532 7.100 6.809 6.728 6.808 6.937 7.035 7.079
+ 7.027 6.459 5.746 5.361 5.442 5.745 5.953 6.022 6.193 6.676 7.325 7.672 7.330 6.411 5.532 5.369 6.115 7.319 8.239 8.421 8.007 7.544 7.499 7.900 8.384 8.549 8.273 7.750 7.267 6.966 6.783 6.583 6.303 5.990 5.735 5.598
+ 5.628 5.728 5.841 5.911 6.019 6.332 6.926 7.660 8.229 8.377 8.083 7.557 7.074 6.809 6.805 7.062 7.589 8.348 9.139 9.626 9.541 8.933 8.201 7.832 8.021 8.498 8.751 8.447 7.708 6.986 6.647 6.659 6.657 6.321 5.708 5.216
+ 6.096 5.780 5.348 5.087 5.211 5.738 6.496 7.234 7.777 8.105 8.291 8.388 8.370 8.206 7.990 7.973 8.404 9.276 10.205 10.621 10.171 9.034 7.863 7.344 7.697 8.511 9.066 8.870 8.004 6.987 6.326 6.134 6.133 5.988 5.642 5.338
+ 5.357 4.720 4.100 4.224 5.249 6.614 7.521 7.600 7.193 7.006 7.475 8.405 9.193 9.399 9.158 9.036 9.493 10.419 11.176 11.103 10.071 8.611 7.530 7.327 7.869 8.558 8.808 8.447 7.752 7.141 6.824 6.672 6.393 5.829 5.123 4.627
+ 5.891 5.478 5.064 5.129 5.835 6.885 7.758 8.103 7.976 7.736 7.732 8.038 8.481 8.883 9.271 9.841 10.686 11.569 11.972 11.464 10.099 8.498 7.503 7.615 8.637 9.803 10.306 9.828 8.689 7.535 6.830 6.567 6.392 5.995 5.404 4.951
+ 5.721 5.366 5.117 5.453 6.395 7.443 7.993 7.857 7.412 7.261 7.705 8.521 9.222 9.547 9.702 10.134 11.028 12.011 12.361 11.582 9.870 8.068 7.127 7.478 8.765 10.131 10.787 10.462 9.444 8.259 7.295 6.618 6.070 5.511 4.969 4.619
+ 6.368 5.848 5.318 5.358 6.120 7.201 7.989 8.172 7.963 7.874 8.256 9.023 9.789 10.261 10.511 10.863 11.505 12.200 12.381 11.598 9.954 8.152 7.087 7.261 8.463 9.916 10.783 10.648 9.675 8.385 7.272 6.545 6.124 5.834 5.589 5.429
+ 4.884 5.121 5.609 6.306 7.071 7.700 8.051 8.155 8.213 8.453 8.960 9.621 10.222 10.638 10.923 11.236 11.633 11.933 11.781 10.924 9.478 7.966 7.063 7.188 8.227 9.588 10.558 10.711 10.093 9.106 8.185 7.550 7.163 6.885 6.643 6.485
+ 6.084 5.557 5.009 5.025 5.792 6.966 7.985 8.523 8.695 8.870 9.297 9.905 10.439 10.753 10.957 11.269 11.724 12.038 11.790 10.783 9.271 7.860 7.148 7.376 8.330 9.514 10.432 10.786 10.526 9.793 8.842 7.961 7.382 7.182 7.253 7.375
+ 6.280 5.853 5.415 5.448 6.103 7.083 7.902 8.273 8.307 8.374 8.771 9.491 10.278 10.863 11.171 11.303 11.358 11.283 10.896 10.069 8.900 7.736 7.006 7.007 7.758 8.994 10.273 11.134 11.261 10.607 9.428 8.179 7.300 6.980 7.084 7.272
+ 6.263 5.909 5.488 5.382 5.812 6.673 7.585 8.152 8.250 8.135 8.255 8.899 9.944 10.918 11.347 11.106 10.480 9.896 9.547 9.253 8.691 7.791 6.922 6.689 7.454 8.999 10.607 11.507 11.354 10.370 9.110 8.058 7.394 7.037 6.844 6.748
+ 6.572 6.251 5.839 5.663 5.934 6.611 7.413 8.007 8.237 8.239 8.328 8.744 9.443 10.119 10.442 10.315 9.922 9.535 9.249 8.909 8.305 7.463 6.758 6.689 7.485 8.872 10.195 10.834 10.582 9.711 8.708 7.929 7.445 7.137 6.905 6.761
+ 7.338 6.996 6.584 6.447 6.747 7.351 7.940 8.246 8.234 8.098 8.082 8.293 8.636 8.929 9.063 9.071 9.042 8.979 8.751 8.216 7.414 6.650 6.351 6.776 7.793 8.921 9.625 9.651 9.153 8.524 8.078 7.846 7.635 7.274 6.804 6.460
+ 6.773 6.547 6.294 6.260 6.557 7.105 7.709 8.206 8.539 8.732 8.808 8.761 8.602 8.413 8.328 8.442 8.719 8.999 9.111 9.004 8.780 8.605 8.572 8.637 8.673 8.585 8.390 8.178 8.025 7.914 7.750 7.441 6.974 6.435 5.963 5.689
+ 7.032 7.016 7.072 7.283 7.644 8.055 8.402 8.629 8.731 8.697 8.495 8.136 7.765 7.634 7.944 8.645 9.408 9.818 9.669 9.120 8.567 8.328 8.414 8.559 8.487 8.147 7.736 7.487 7.446 7.443 7.269 6.880 6.431 6.123 6.024 6.035
+ 7.043 7.149 7.356 7.644 7.980 8.323 8.626 8.835 8.885 8.722 8.353 7.891 7.549 7.540 7.939 8.596 9.190 9.417 9.177 8.636 8.102 7.809 7.764 7.783 7.661 7.346 6.969 6.721 6.689 6.787 6.821 6.634 6.203 5.648 5.146 4.853
+ 7.517 7.592 7.552 7.238 6.748 6.423 6.581 7.231 8.032 8.533 8.506 8.084 7.615 7.380 7.418 7.581 7.711 7.764 7.783 7.786 7.727 7.559 7.316 7.109 7.021 7.000 6.891 6.580 6.114 5.682 5.451 5.421 5.432 5.327 5.105 4.918
+ 11.855 11.445 10.857 10.400 10.264 10.406 10.593 10.569 10.211 9.597 8.941 8.462 8.268 8.324 8.495 8.629 8.634 8.502 8.286 8.050 7.826 7.602 7.351 7.071 6.807 6.628 6.572 6.601 6.608 6.476 6.162 5.724 5.285 4.956 4.771 4.700
+ 12.464 11.637 10.510 9.746 9.674 10.101 10.512 10.475 9.909 9.065 8.284 7.779 7.584 7.643 7.884 8.224 8.534 8.659 8.512 8.151 7.743 7.425 7.190 6.923 6.544 6.136 5.904 6.002 6.368 6.743 6.856 6.616 6.160 5.715 5.428 5.308
+ 8.379 8.525 8.558 8.198 7.411 6.481 5.825 5.686 5.971 6.339 6.474 6.313 6.074 6.076 6.505 7.299 8.206 8.947 9.356 9.421 9.235 8.914 8.539 8.137 7.707 7.253 6.818 6.479 6.311 6.317 6.388 6.336 6.012 5.421 4.760 4.322
+ 7.564 7.651 7.820 8.036 8.208 8.210 7.943 7.420 6.799 6.313 6.134 6.254 6.499 6.669 6.719 6.817 7.205 7.969 8.905 9.615 9.782 9.406 8.801 8.340 8.159 8.073 7.770 7.115 6.292 5.653 5.410 5.450 5.438 5.129 4.598 4.181
+ 8.762 8.104 7.407 7.362 8.112 9.093 9.487 8.878 7.574 6.338 5.769 5.884 6.217 6.311 6.152 6.160 6.773 8.009 9.380 10.240 10.255 9.615 8.830 8.317 8.123 7.980 7.615 7.011 6.412 6.089 6.078 6.131 5.919 5.314 4.523 3.964
+ 10.032 8.833 7.532 7.343 8.509 10.075 10.713 9.842 8.081 6.651 6.319 6.817 7.221 6.882 6.051 5.651 6.432 8.282 10.274 11.369 11.155 10.035 8.796 8.002 7.698 7.577 7.350 6.970 6.564 6.246 5.996 5.718 5.356 4.953 4.608 4.413
+ 6.503 5.917 5.544 6.195 7.850 9.546 10.121 9.160 7.311 5.726 5.132 5.359 5.690 5.637 5.428 5.773 7.159 9.333 11.410 12.486 12.224 10.964 9.380 8.030 7.145 6.710 6.624 6.755 6.914 6.874 6.499 5.875 5.272 4.939 4.904 4.984
+ 7.422 6.872 6.461 6.894 8.188 9.580 10.140 9.532 8.226 7.035 6.418 6.215 5.999 5.651 5.559 6.253 7.832 9.752 11.167 11.532 10.921 9.836 8.747 7.813 6.981 6.266 5.863 5.955 6.439 6.909 6.937 6.415 5.624 4.965 4.638 4.556
+ 6.825 6.234 5.883 6.610 8.402 10.290 11.119 10.485 8.994 7.661 7.040 6.890 6.626 6.055 5.654 6.114 7.614 9.521 10.818 10.857 9.787 8.318 7.117 6.391 5.973 5.703 5.641 5.933 6.512 7.019 7.063 6.563 5.823 5.252 5.029 5.019
+ 2.873 3.841 5.554 7.563 9.282 10.206 10.161 9.412 8.487 7.830 7.531 7.342 6.974 6.410 5.972 6.088 6.930 8.238 9.448 10.029 9.771 8.843 7.640 6.554 5.839 5.570 5.676 5.978 6.239 6.259 5.979 5.516 5.089 4.866 4.851 4.909
+ 5.847 5.592 5.689 6.680 8.365 9.820 10.136 9.201 7.795 6.909 6.907 7.300 7.315 6.675 5.888 5.763 6.668 8.191 9.492 9.965 9.608 8.830 7.993 7.173 6.325 5.578 5.259 5.584 6.335 6.923 6.841 6.085 5.154 4.595 4.549 4.706
+ 6.416 6.761 7.466 8.433 9.358 9.814 9.506 8.498 7.212 6.169 5.658 5.605 5.710 5.758 5.807 6.130 6.944 8.182 9.464 10.319 10.454 9.911 8.998 8.093 7.461 7.174 7.152 7.249 7.329 7.307 7.163 6.933 6.684 6.478 6.346 6.287
+ 7.555 7.870 8.487 9.267 9.878 9.922 9.210 7.955 6.693 5.942 5.850 6.128 6.329 6.238 6.065 6.268 7.163 8.621 10.105 11.000 10.985 10.204 9.123 8.241 7.835 7.892 8.192 8.470 8.533 8.324 7.922 7.483 7.163 7.035 7.058 7.117
+ 7.721 7.869 8.365 9.286 10.303 10.794 10.320 9.030 7.593 6.693 6.499 6.615 6.522 6.119 5.838 6.241 7.466 9.035 10.195 10.480 10.019 9.340 8.908 8.809 8.807 8.661 8.345 8.006 7.755 7.553 7.288 6.951 6.678 6.617 6.758 6.918
+ 7.510 7.452 7.583 8.121 8.956 9.640 9.701 9.007 7.889 6.893 6.393 6.375 6.546 6.655 6.708 6.918 7.465 8.288 9.108 9.635 9.772 9.646 9.464 9.346 9.263 9.109 8.812 8.388 7.905 7.433 7.018 6.697 6.504 6.446 6.483 6.534
+ 6.061 6.043 6.348 7.271 8.648 9.838 10.147 9.340 7.825 6.358 5.531 5.458 5.851 6.357 6.813 7.255 7.747 8.263 8.725 9.107 9.458 9.796 10.010 9.904 9.383 8.597 7.870 7.461 7.356 7.302 7.047 6.574 6.105 5.879 5.923 6.046
+ 7.444 7.034 6.656 6.810 7.611 8.660 9.331 9.220 8.398 7.295 6.354 5.772 5.492 5.392 5.449 5.725 6.237 6.875 7.462 7.895 8.218 8.552 8.946 9.305 9.459 9.305 8.885 8.339 7.795 7.300 6.856 6.486 6.251 6.195 6.273 6.365
+ 6.723 6.809 7.047 7.520 8.222 8.966 9.392 9.157 8.204 6.901 5.866 5.551 5.905 6.414 6.540 6.202 5.858 6.106 7.109 8.392 9.204 9.151 8.542 8.117 8.387 9.172 9.754 9.497 8.399 7.080 6.255 6.177 6.535 6.833 6.846 6.731
+ 6.024 6.157 6.413 6.820 7.438 8.231 8.950 9.200 8.728 7.696 6.640 6.081 6.086 6.223 5.992 5.369 4.933 5.384 6.851 8.652 9.771 9.687 8.814 8.133 8.328 9.194 9.866 9.631 8.583 7.509 7.147 7.516 7.955 7.808 7.069 6.380
+ 5.785 6.081 6.686 7.582 8.646 9.611 10.112 9.867 8.884 7.529 6.340 5.696 5.584 5.684 5.709 5.705 6.006 6.871 8.121 9.158 9.410 8.828 7.971 7.563 7.875 8.505 8.756 8.294 7.482 7.060 7.455 8.348 8.931 8.623 7.620 6.748
+ 5.870 6.046 6.493 7.273 8.263 9.119 9.421 8.929 7.783 6.459 5.490 5.121 5.187 5.309 5.262 5.196 5.499 6.397 7.642 8.603 8.724 7.986 6.964 6.394 6.610 7.310 7.856 7.844 7.425 7.115 7.283 7.786 8.104 7.840 7.118 6.501
+ 6.551 7.093 7.875 8.500 8.720 8.526 8.052 7.450 6.838 6.327 6.016 5.908 5.847 5.617 5.177 4.818 5.019 6.028 7.513 8.658 8.720 7.636 6.159 5.326 5.673 6.837 7.886 8.097 7.507 6.777 6.532 6.804 7.071 6.826 6.107 5.475
+ 6.243 6.492 6.945 7.506 8.030 8.330 8.236 7.699 6.866 6.057 5.584 5.541 5.716 5.753 5.459 5.000 4.792 5.139 5.915 6.597 6.664 6.038 5.195 4.810 5.216 6.143 6.944 7.131 6.738 6.223 6.020 6.160 6.302 6.110 5.611 5.179
+ 5.456 5.754 6.290 6.917 7.403 7.515 7.163 6.494 5.823 5.442 5.414 5.533 5.493 5.154 4.688 4.469 4.778 5.541 6.333 6.657 6.305 5.525 4.848 4.703 5.125 5.754 6.138 6.075 5.730 5.451 5.454 5.650 5.751 5.551 5.127 4.780
+ 4.855 5.641 6.862 7.981 8.514 8.249 7.327 6.147 5.151 4.600 4.476 4.547 4.563 4.434 4.286 4.345 4.747 5.406 6.042 6.361 6.252 5.859 5.483 5.371 5.551 5.837 5.973 5.823 5.456 5.080 4.886 4.929 5.123 5.333 5.471 5.528
+ 5.002 5.754 6.792 7.525 7.624 7.154 6.405 5.618 4.888 4.256 3.829 3.748 4.025 4.452 4.740 4.784 4.777 5.034 5.651 6.333 6.605 6.232 5.478 4.917 4.967 5.527 6.083 6.167 5.759 5.271 5.143 5.443 5.839 5.954 5.734 5.469
+ 5.197 5.936 7.046 7.988 8.327 7.935 7.007 5.931 5.080 4.655 4.633 4.825 5.009 5.063 5.026 5.051 5.274 5.682 6.081 6.221 5.982 5.492 5.055 4.943 5.186 5.557 5.752 5.634 5.335 5.132 5.203 5.482 5.725 5.733 5.530 5.328
+ 4.826 5.573 6.656 7.562 8.026 8.120 8.043 7.860 7.444 6.674 5.662 4.760 4.324 4.449 4.914 5.391 5.693 5.844 5.937 5.968 5.831 5.495 5.136 5.054 5.422 6.092 6.674 6.843 6.597 6.235 6.073 6.167 6.304 6.242 5.970 5.717
+ 6.300 6.426 6.630 6.894 7.258 7.751 8.249 8.461 8.095 7.121 5.890 4.953 4.695 5.073 5.674 6.052 6.059 5.903 5.901 6.182 6.602 6.923 7.057 7.141 7.371 7.776 8.155 8.239 7.926 7.363 6.823 6.487 6.350 6.291 6.226 6.167
+ 6.151 6.488 7.023 7.586 8.070 8.418 8.516 8.194 7.361 6.194 5.147 4.691 4.969 5.666 6.241 6.353 6.114 5.946 6.168 6.704 7.174 7.283 7.120 7.080 7.478 8.210 8.805 8.817 8.212 7.389 6.833 6.731 6.889 6.985 6.894 6.754
+ 5.886 6.298 6.910 7.462 7.815 7.979 7.994 7.817 7.360 6.653 5.939 5.585 5.816 6.523 7.296 7.702 7.562 7.030 6.419 5.963 5.715 5.630 5.699 5.984 6.500 7.113 7.572 7.686 7.484 7.197 7.068 7.160 7.340 7.428 7.375 7.286
+ 4.953 5.521 6.471 7.511 8.358 8.823 8.838 8.434 7.711 6.822 5.968 5.371 5.215 5.553 6.257 7.035 7.552 7.584 7.128 6.411 5.775 5.511 5.723 6.297 6.983 7.535 7.827 7.884 7.827 7.773 7.765 7.762 7.698 7.550 7.367 7.239
+ 5.697 5.922 6.502 7.441 8.422 8.903 8.516 7.399 6.152 5.424 5.459 5.996 6.566 6.896 7.051 7.228 7.461 7.539 7.241 6.621 6.057 5.972 6.482 7.298 7.956 8.183 8.061 7.870 7.810 7.842 7.792 7.565 7.243 6.991 6.892 6.889
+ 5.923 6.323 7.106 8.129 9.064 9.490 9.152 8.159 6.975 6.145 5.972 6.370 6.982 7.448 7.609 7.518 7.299 7.024 6.702 6.368 6.137 6.158 6.491 7.040 7.587 7.931 7.996 7.844 7.601 7.363 7.164 6.999 6.864 6.766 6.711 6.690
+ 5.161 5.888 6.964 7.850 8.142 7.763 6.953 6.089 5.478 5.241 5.324 5.590 5.907 6.191 6.393 6.478 6.419 6.210 5.889 5.543 5.300 5.277 5.528 5.996 6.518 6.896 6.990 6.798 6.450 6.121 5.920 5.842 5.797 5.707 5.573 5.470
+ 5.491 5.868 6.523 7.267 7.859 8.078 7.810 7.101 6.148 5.215 4.512 4.123 4.023 4.152 4.488 5.036 5.740 6.416 6.789 6.647 6.018 5.215 4.670 4.669 5.152 5.761 6.089 5.961 5.520 5.075 4.832 4.747 4.605 4.254 3.769 3.413
+ 4.964 5.466 6.285 7.142 7.782 8.065 7.985 7.627 7.102 6.497 5.868 5.263 4.768 4.538 4.750 5.488 6.609 7.704 8.255 7.932 6.855 5.590 4.831 4.957 5.764 6.621 6.932 6.572 5.938 5.587 5.743 6.101 6.097 5.421 4.336 3.515
+ 3.465 4.505 5.981 7.154 7.676 7.747 7.799 8.050 8.321 8.243 7.624 6.630 5.676 5.169 5.331 6.172 7.494 8.878 9.718 9.474 8.061 6.090 4.628 4.512 5.711 7.283 8.063 7.572 6.365 5.519 5.660 6.407 6.724 5.896 4.243 2.912
+ 3.415 4.196 5.384 6.490 7.225 7.625 7.921 8.285 8.672 8.851 8.588 7.828 6.777 5.862 5.571 6.216 7.695 9.406 10.455 10.147 8.482 6.284 4.765 4.735 6.039 7.658 8.469 8.068 7.016 6.299 6.453 7.114 7.373 6.627 5.172 4.009
+ 1.908 3.429 5.556 7.117 7.489 6.954 6.364 6.446 7.285 8.338 8.899 8.620 7.731 6.861 6.641 7.346 8.735 10.151 10.832 10.311 8.723 6.796 5.465 5.301 6.133 7.180 7.642 7.302 6.652 6.420 6.876 7.544 7.582 6.544 4.859 3.580
+ 2.366 3.699 5.539 6.863 7.195 6.866 6.636 7.030 7.957 8.850 9.161 8.760 7.983 7.374 7.366 8.083 9.296 10.478 10.986 10.363 8.685 6.658 5.298 5.281 6.433 7.806 8.376 7.840 6.838 6.367 6.869 7.789 8.027 6.935 4.978 3.450
+ 3.860 4.699 5.898 6.829 7.131 6.918 6.654 6.790 7.440 8.311 8.909 8.885 8.291 7.581 7.361 8.000 9.341 10.711 11.266 10.515 8.690 6.676 5.495 5.645 6.782 7.982 8.423 7.974 7.223 6.920 7.302 7.855 7.746 6.574 4.804 3.489
+ 4.355 4.752 5.410 6.094 6.575 6.750 6.738 6.818 7.240 8.002 8.794 9.189 8.980 8.401 8.022 8.342 9.362 10.488 10.885 10.062 8.272 6.406 5.442 5.806 7.123 8.506 9.166 8.898 8.102 7.375 7.022 6.865 6.485 5.654 4.591 3.836
+ 4.005 4.647 5.523 6.117 6.174 5.863 5.631 5.880 6.700 7.823 8.796 9.238 9.055 8.501 8.067 8.208 9.038 10.155 10.800 10.319 8.663 6.566 5.158 5.228 6.657 8.467 9.501 9.224 8.033 6.834 6.272 6.244 6.109 5.365 4.173 3.253
+ 4.454 4.800 5.242 5.469 5.336 4.984 4.762 5.025 5.918 7.274 8.654 9.540 9.619 9.002 8.249 8.065 8.808 10.134 11.097 10.766 8.951 6.490 4.769 4.759 6.289 8.160 9.048 8.508 7.243 6.435 6.690 7.516 7.781 6.770 4.889 3.404
+ 5.192 5.231 5.340 5.541 5.808 6.079 6.310 6.551 6.937 7.577 8.412 9.163 9.493 9.286 8.826 8.658 9.169 10.180 10.948 10.656 9.087 6.923 5.358 5.250 6.474 8.003 8.708 8.228 7.197 6.628 6.985 7.752 7.885 6.772 4.864 3.390
+ 2.995 3.896 5.204 6.269 6.698 6.548 6.212 6.122 6.505 7.319 8.316 9.166 9.596 9.537 9.209 9.044 9.383 10.141 10.732 10.427 8.971 6.932 5.431 5.342 6.581 8.119 8.764 8.115 6.865 6.164 6.580 7.565 7.926 6.911 4.956 3.401
+ 3.954 4.382 5.064 5.760 6.301 6.635 6.804 6.904 7.067 7.445 8.115 8.967 9.698 9.999 9.821 9.482 9.441 9.858 10.356 10.251 9.147 7.402 5.988 5.772 6.792 8.159 8.752 8.128 6.874 6.063 6.272 7.047 7.302 6.328 4.504 3.059
+ 3.289 4.019 5.072 5.968 6.498 6.803 7.141 7.614 8.118 8.520 8.824 9.137 9.490 9.753 9.776 9.611 9.519 9.703 9.991 9.868 8.929 7.367 6.003 5.708 6.662 8.128 9.006 8.735 7.737 6.987 7.074 7.620 7.619 6.413 4.411 2.867
+ 1.126 2.274 3.977 5.511 6.525 7.147 7.674 8.199 8.565 8.636 8.532 8.552 8.850 9.252 9.437 9.314 9.157 9.310 9.727 9.881 9.232 7.849 6.545 6.275 7.265 8.708 9.379 8.696 7.253 6.285 6.519 7.454 7.779 6.604 4.372 2.595
+ 3.310 3.667 4.273 5.032 5.937 6.976 7.976 8.606 8.623 8.148 7.659 7.627 8.095 8.635 8.768 8.470 8.243 8.611 9.515 10.220 9.931 8.572 6.989 6.280 6.819 7.889 8.314 7.558 6.258 5.642 6.326 7.617 8.033 6.650 4.057 2.006
+ 3.083 3.524 4.279 5.199 6.186 7.153 7.930 8.293 8.142 7.681 7.351 7.513 8.131 8.794 9.089 9.010 8.969 9.355 10.045 10.388 9.761 8.216 6.588 5.866 6.344 7.353 7.842 7.345 6.413 6.073 6.789 7.885 8.052 6.537 3.964 1.983
+ 4.618 4.655 4.781 5.076 5.599 6.320 7.093 7.728 8.118 8.320 8.491 8.730 8.980 9.106 9.086 9.098 9.363 9.848 10.137 9.689 8.335 6.592 5.414 5.500 6.688 8.013 8.441 7.708 6.539 5.996 6.514 7.458 7.639 6.383 4.214 2.539
+ 5.401 5.396 5.342 5.276 5.388 5.893 6.802 7.828 8.568 8.816 8.721 8.606 8.654 8.759 8.718 8.538 8.487 8.792 9.263 9.298 8.382 6.662 5.032 4.509 5.401 6.986 8.061 7.914 6.884 5.991 5.970 6.598 6.929 6.230 4.738 3.512
+ 5.450 5.342 5.208 5.182 5.381 5.834 6.434 6.988 7.327 7.408 7.320 7.190 7.093 7.045 7.068 7.237 7.598 8.032 8.211 7.780 6.660 5.237 4.188 4.036 4.745 5.724 6.270 6.107 5.575 5.284 5.550 6.086 6.256 5.665 4.564 3.694
+ 5.089 4.982 4.948 5.193 5.757 6.468 7.063 7.380 7.456 7.451 7.483 7.523 7.454 7.237 7.010 7.003 7.312 7.730 7.828 7.254 6.059 4.746 3.975 4.110 4.948 5.854 6.216 5.871 5.176 4.687 4.697 5.032 5.237 4.998 4.419 3.936
+ 4.623 4.861 5.086 5.104 5.055 5.334 6.195 7.409 8.356 8.491 7.797 6.803 6.166 6.182 6.649 7.138 7.374 7.363 7.209 6.908 6.362 5.606 4.943 4.774 5.222 5.942 6.353 6.129 5.503 5.058 5.171 5.632 5.812 5.265 4.192 3.328
+ 5.714 5.516 5.128 4.675 4.456 4.799 5.786 7.082 8.078 8.266 7.599 6.524 5.686 5.513 6.007 6.820 7.507 7.746 7.410 6.556 5.416 4.375 3.854 4.078 4.884 5.757 6.138 5.824 5.109 4.540 4.464 4.750 4.936 4.665 4.030 3.499
+ 6.273 5.604 4.714 4.222 4.528 5.545 6.735 7.439 7.299 6.476 5.520 4.981 5.046 5.490 5.925 6.128 6.158 6.191 6.254 6.157 5.687 4.890 4.135 3.859 4.199 4.844 5.278 5.200 4.757 4.375 4.338 4.511 4.466 3.916 3.030 2.351
+ 6.137 5.733 5.148 4.690 4.559 4.749 5.081 5.365 5.544 5.724 6.076 6.674 7.404 8.012 8.260 8.074 7.576 6.993 6.516 6.221 6.085 6.080 6.221 6.538 6.999 7.463 7.725 7.632 7.188 6.562 5.993 5.666 5.626 5.790 6.013 6.162
+ 7.565 6.931 6.168 5.885 6.314 7.147 7.799 7.884 7.510 7.179 7.392 8.283 9.536 10.613 11.092 10.862 10.113 9.175 8.357 7.877 7.842 8.247 8.969 9.790 10.463 10.804 10.750 10.355 9.743 9.073 8.507 8.193 8.212 8.521 8.943 9.240
+ 6.494 6.774 7.263 7.818 8.256 8.434 8.338 8.109 7.964 8.060 8.408 8.902 9.426 9.928 10.399 10.784 10.935 10.699 10.074 9.309 8.817 8.929 9.671 10.718 11.575 11.866 11.516 10.740 9.877 9.196 8.810 8.694 8.765 8.927 9.097 9.203
+ 8.185 7.488 6.686 6.472 7.074 8.100 8.890 9.053 8.735 8.423 8.519 9.054 9.764 10.364 10.746 10.947 10.979 10.766 10.264 9.624 9.188 9.268 9.893 10.759 11.428 11.623 11.365 10.863 10.310 9.775 9.273 8.879 8.733 8.907 9.283 9.585
+ 9.087 8.543 7.879 7.612 7.954 8.659 9.222 9.262 8.805 8.245 8.058 8.482 9.389 10.393 11.078 11.198 10.741 9.898 8.974 8.294 8.103 8.477 9.269 10.166 10.823 11.028 10.783 10.273 9.739 9.357 9.186 9.192 9.305 9.455 9.590 9.668
+ 8.363 8.344 8.442 8.782 9.323 9.829 10.030 9.827 9.385 9.035 9.049 9.470 10.100 10.657 10.949 10.939 10.694 10.289 9.774 9.225 8.806 8.733 9.140 9.941 10.812 11.356 11.336 10.826 10.158 9.690 9.574 9.690 9.776 9.654 9.370 9.134
+ 9.176 8.748 8.314 8.346 8.948 9.759 10.240 10.099 9.482 8.818 8.489 8.611 9.083 9.747 10.494 11.203 11.660 11.618 11.001 10.061 9.300 9.155 9.686 10.535 11.187 11.334 11.045 10.637 10.385 10.336 10.345 10.260 10.055 9.816 9.640 9.557
+ 9.874 9.160 8.247 7.770 8.009 8.730 9.423 9.713 9.597 9.351 9.255 9.403 9.721 10.117 10.559 11.013 11.349 11.365 10.951 10.250 9.625 9.436 9.788 10.470 11.112 11.445 11.412 11.117 10.675 10.156 9.636 9.264 9.218 9.548 10.080 10.478
+ 10.507 9.974 9.309 9.007 9.288 9.962 10.610 10.894 10.753 10.367 9.976 9.734 9.700 9.884 10.259 10.713 11.027 10.972 10.489 9.777 9.203 9.059 9.360 9.857 10.242 10.359 10.255 10.058 9.822 9.511 9.114 8.750 8.620 8.829 9.254 9.592
+ 10.033 9.656 9.257 9.206 9.533 9.888 9.860 9.353 8.670 8.251 8.318 8.748 9.243 9.610 9.842 9.986 9.970 9.623 8.898 8.046 7.518 7.634 8.292 9.017 9.319 9.066 8.558 8.237 8.317 8.646 8.900 8.881 8.656 8.432 8.335 8.331
+ 8.495 7.904 7.190 6.933 7.387 8.293 9.083 9.292 8.876 8.199 7.759 7.845 8.401 9.118 9.661 9.844 9.661 9.217 8.656 8.120 7.741 7.617 7.759 8.073 8.395 8.585 8.613 8.563 8.553 8.631 8.728 8.705 8.458 8.011 7.522 7.203
+ 9.408 8.555 7.437 6.802 7.035 7.919 8.842 9.246 8.978 8.307 7.668 7.351 7.391 7.638 7.922 8.138 8.245 8.227 8.090 7.890 7.731 7.699 7.799 7.937 8.004 7.969 7.903 7.914 8.042 8.221 8.326 8.277 8.091 7.856 7.662 7.558
+ 8.225 7.842 7.240 6.668 6.351 6.398 6.763 7.263 7.648 7.712 7.399 6.859 6.384 6.250 6.532 7.038 7.431 7.461 7.143 6.732 6.518 6.591 6.792 6.880 6.769 6.618 6.692 7.102 7.678 8.072 8.032 7.597 7.050 6.682 6.576 6.603
+ 7.169 6.516 5.745 5.469 5.860 6.524 6.858 6.558 5.832 5.172 4.931 5.079 5.332 5.451 5.432 5.411 5.453 5.462 5.306 5.013 4.801 4.901 5.327 5.844 6.162 6.181 6.049 5.993 6.090 6.209 6.170 5.943 5.684 5.578 5.658 5.776
+ 4.965 4.605 4.321 4.546 5.267 5.997 6.204 5.766 5.043 4.511 4.336 4.308 4.164 3.940 3.971 4.509 5.361 5.944 5.757 4.848 3.834 3.427 3.871 4.795 5.577 5.874 5.845 5.892 6.232 6.687 6.880 6.597 5.960 5.294 4.842 4.646
+ 5.464 4.712 3.803 3.432 3.831 4.614 5.137 5.040 4.495 3.996 3.904 4.179 4.491 4.571 4.443 4.353 4.502 4.859 5.216 5.408 5.448 5.474 5.571 5.680 5.683 5.562 5.461 5.560 5.893 6.279 6.447 6.233 5.692 5.041 4.504 4.214
+ 5.832 5.805 5.734 5.601 5.417 5.219 5.045 4.903 4.764 4.596 4.400 4.235 4.189 4.323 4.607 4.929 5.145 5.171 5.032 4.847 4.751 4.811 4.995 5.202 5.341 5.390 5.405 5.460 5.587 5.734 5.794 5.665 5.320 4.838 4.370 4.083
+ 6.453 6.163 5.795 5.595 5.637 5.778 5.781 5.513 5.027 4.496 4.082 3.861 3.861 4.110 4.620 5.304 5.930 6.196 5.930 5.233 4.454 3.978 3.996 4.411 4.956 5.396 5.656 5.792 5.879 5.926 5.894 5.766 5.593 5.451 5.379 5.361
+ 6.122 5.946 5.518 4.844 4.146 3.784 3.985 4.625 5.282 5.538 5.300 4.854 4.623 4.838 5.383 5.932 6.205 6.133 5.821 5.409 4.994 4.658 4.525 4.713 5.224 5.869 6.364 6.535 6.449 6.334 6.355 6.449 6.383 6.003 5.428 4.994
+ 6.605 6.253 5.712 5.215 4.933 4.902 5.028 5.169 5.223 5.166 5.031 4.865 4.698 4.552 4.462 4.476 4.628 4.902 5.213 5.445 5.512 5.404 5.199 5.015 4.949 5.045 5.285 5.616 5.969 6.269 6.438 6.412 6.177 5.794 5.399 5.149
+ 4.999 4.903 4.902 5.197 5.796 6.466 6.882 6.844 6.389 5.730 5.090 4.589 4.245 4.060 4.071 4.304 4.704 5.116 5.370 5.396 5.276 5.167 5.179 5.292 5.407 5.454 5.472 5.577 5.849 6.239 6.573 6.654 6.393 5.870 5.302 4.938
+ 5.961 6.405 6.945 7.175 6.957 6.504 6.163 6.119 6.274 6.377 6.268 5.983 5.672 5.429 5.229 5.013 4.803 4.700 4.770 4.937 5.024 4.927 4.737 4.683 4.925 5.394 5.838 6.041 6.002 5.912 5.942 6.064 6.073 5.812 5.361 5.008
+ 11.352 10.575 9.381 8.259 7.531 7.232 7.201 7.282 7.433 7.668 7.927 8.032 7.794 7.184 6.404 5.771 5.503 5.578 5.780 5.887 5.843 5.765 5.812 6.018 6.261 6.374 6.298 6.146 6.114 6.313 6.668 6.953 6.953 6.625 6.145 5.798
+ 9.149 8.855 8.281 7.557 6.971 6.808 7.098 7.512 7.576 7.053 6.157 5.385 5.100 5.234 5.393 5.253 4.861 4.565 4.636 4.985 5.244 5.141 4.794 4.606 4.874 5.489 6.038 6.214 6.118 6.144 6.533 7.064 7.197 6.592 5.501 4.645
+ 5.168 5.233 5.367 5.610 6.028 6.640 7.326 7.826 7.884 7.441 6.707 6.019 5.594 5.376 5.123 4.671 4.128 3.824 4.037 4.732 5.547 6.040 6.007 5.607 5.217 5.149 5.458 5.967 6.440 6.725 6.785 6.635 6.303 5.841 5.376 5.079
+ 6.857 6.594 6.299 6.233 6.468 6.843 7.117 7.157 6.997 6.733 6.398 5.955 5.412 4.914 4.674 4.795 5.145 5.432 5.446 5.237 5.076 5.203 5.603 6.014 6.156 5.993 5.766 5.790 6.177 6.739 7.135 7.124 6.717 6.127 5.603 5.308
+ 7.745 7.446 6.993 6.591 6.393 6.421 6.562 6.651 6.580 6.353 6.063 5.805 5.604 5.412 5.172 4.887 4.639 4.517 4.545 4.656 4.748 4.771 4.766 4.825 5.004 5.278 5.565 5.808 6.012 6.213 6.407 6.511 6.424 6.123 5.728 5.450
+ 8.020 8.104 8.056 7.698 7.122 6.657 6.569 6.798 6.982 6.773 6.143 5.409 4.938 4.845 4.938 4.961 4.857 4.797 4.956 5.286 5.536 5.501 5.253 5.100 5.295 5.793 6.279 6.466 6.359 6.222 6.284 6.485 6.517 6.148 5.495 4.980
+ 10.211 9.800 9.159 8.556 8.208 8.163 8.274 8.259 7.845 6.925 5.650 4.406 3.647 3.648 4.330 5.268 5.921 5.948 5.412 4.721 4.343 4.494 5.027 5.580 5.868 5.870 5.793 5.860 6.110 6.390 6.500 6.363 6.076 5.800 5.636 5.577
+ 7.652 7.835 8.142 8.444 8.567 8.360 7.794 6.988 6.151 5.472 5.057 4.930 5.088 5.492 6.009 6.386 6.340 5.759 4.855 4.102 3.939 4.449 5.274 5.860 5.857 5.370 4.850 4.723 5.075 5.620 5.973 5.946 5.646 5.317 5.122 5.058
+ 6.951 7.280 7.783 8.252 8.546 8.650 8.653 8.656 8.704 8.775 8.817 8.793 8.709 8.610 8.558 8.603 8.747 8.921 9.001 8.864 8.475 7.922 7.377 6.992 6.796 6.702 6.596 6.459 6.392 6.521 6.864 7.276 7.538 7.526 7.313 7.114
+ 8.943 9.007 9.104 9.190 9.239 9.247 9.232 9.222 9.239 9.295 9.376 9.442 9.444 9.367 9.266 9.245 9.385 9.648 9.860 9.798 9.345 8.601 7.840 7.334 7.175 7.232 7.275 7.176 7.003 6.943 7.123 7.485 7.832 7.993 7.959 7.873
+ 7.499 7.789 8.085 8.066 7.650 7.046 6.556 6.300 6.125 5.773 5.155 4.468 4.057 4.120 4.531 4.928 4.987 4.673 4.247 4.055 4.261 4.746 5.220 5.446 5.390 5.208 5.114 5.232 5.535 5.893 6.157 6.232 6.111 5.865 5.604 5.440
+ 7.364 7.651 7.908 7.797 7.261 6.564 6.036 5.789 5.674 5.493 5.233 5.070 5.147 5.378 5.489 5.273 4.805 4.390 4.279 4.439 4.609 4.582 4.422 4.396 4.678 5.134 5.434 5.377 5.121 5.055 5.409 5.987 6.298 6.005 5.268 4.650
+ 8.436 8.332 7.965 7.242 6.339 5.647 5.478 5.801 6.252 6.433 6.222 5.819 5.518 5.418 5.367 5.159 4.763 4.362 4.167 4.210 4.333 4.371 4.338 4.395 4.649 5.002 5.225 5.198 5.076 5.169 5.629 6.252 6.604 6.401 5.794 5.276
+ 7.094 6.917 6.638 6.390 6.310 6.456 6.740 6.955 6.892 6.486 5.882 5.337 5.048 5.020 5.086 5.058 4.882 4.664 4.573 4.700 4.988 5.296 5.500 5.559 5.508 5.401 5.288 5.227 5.284 5.499 5.822 6.102 6.170 5.969 5.616 5.348
+ 6.871 6.993 7.146 7.202 7.075 6.784 6.460 6.275 6.341 6.632 6.992 7.229 7.238 7.052 6.813 6.656 6.627 6.669 6.695 6.665 6.613 6.597 6.630 6.661 6.620 6.500 6.392 6.430 6.702 7.162 7.638 7.925 7.900 7.597 7.194 6.916
+ 6.099 6.010 5.945 6.011 6.172 6.250 6.059 5.570 4.966 4.521 4.402 4.562 4.791 4.897 4.851 4.774 4.806 4.959 5.103 5.086 4.888 4.654 4.578 4.733 4.994 5.125 4.975 4.611 4.280 4.224 4.485 4.871 5.100 5.018 4.718 4.460
+ 7.140 6.706 6.010 5.308 4.810 4.588 4.569 4.607 4.595 4.511 4.406 4.331 4.285 4.233 4.162 4.125 4.207 4.442 4.755 4.992 5.026 4.860 4.626 4.483 4.487 4.560 4.581 4.510 4.433 4.472 4.649 4.823 4.790 4.464 3.979 3.622
+ 6.504 6.459 6.376 6.260 6.111 5.936 5.750 5.575 5.416 5.249 5.031 4.751 4.458 4.251 4.209 4.327 4.505 4.610 4.574 4.438 4.305 4.253 4.272 4.282 4.224 4.122 4.069 4.143 4.335 4.544 4.651 4.609 4.460 4.294 4.175 4.120
+ 6.395 6.264 6.058 5.833 5.594 5.316 5.005 4.742 4.631 4.705 4.865 4.944 4.838 4.602 4.404 4.389 4.554 4.758 4.853 4.809 4.720 4.694 4.730 4.713 4.532 4.210 3.923 3.870 4.119 4.537 4.880 4.949 4.709 4.283 3.862 3.608
+ 4.483 4.830 5.425 6.095 6.622 6.828 6.644 6.159 5.594 5.190 5.086 5.236 5.448 5.502 5.293 4.890 4.473 4.209 4.154 4.242 4.369 4.481 4.597 4.749 4.921 5.039 5.043 4.953 4.875 4.915 5.069 5.205 5.152 4.848 4.420 4.110
+ 3.749 4.421 5.334 5.973 6.121 5.946 5.747 5.643 5.498 5.128 4.562 4.068 3.916 4.127 4.451 4.606 4.534 4.417 4.455 4.634 4.740 4.590 4.251 3.999 4.054 4.364 4.644 4.666 4.484 4.375 4.535 4.838 4.923 4.540 3.833 3.273
+ 6.578 5.916 5.101 4.725 4.982 5.540 5.855 5.651 5.132 4.767 4.862 5.294 5.636 5.535 5.003 4.380 4.031 4.059 4.277 4.419 4.396 4.340 4.446 4.758 5.111 5.263 5.095 4.707 4.333 4.166 4.239 4.428 4.568 4.575 4.480 4.390
+ 5.428 5.474 5.593 5.769 5.888 5.804 5.475 5.049 4.787 4.857 5.170 5.417 5.298 4.772 4.108 3.693 3.740 4.135 4.550 4.717 4.624 4.499 4.582 4.903 5.251 5.350 5.090 4.630 4.276 4.248 4.513 4.812 4.857 4.548 4.050 3.679
+ 5.870 5.622 5.363 5.361 5.691 6.180 6.551 6.635 6.451 6.126 5.764 5.389 5.010 4.690 4.523 4.536 4.627 4.640 4.511 4.351 4.358 4.620 5.014 5.291 5.299 5.120 4.991 5.075 5.294 5.399 5.215 4.821 4.499 4.480 4.731 4.983
+ 4.287 4.782 5.554 6.303 6.816 7.033 6.997 6.769 6.393 5.946 5.573 5.437 5.608 5.994 6.384 6.595 6.601 6.525 6.517 6.623 6.772 6.870 6.903 6.949 7.087 7.310 7.530 7.667 7.735 7.822 7.978 8.141 8.172 7.989 7.672 7.427
+ 5.119 5.591 6.306 6.938 7.240 7.162 6.840 6.486 6.253 6.163 6.127 6.033 5.828 5.548 5.277 5.091 5.011 5.010 5.040 5.077 5.133 5.237 5.407 5.627 5.850 6.027 6.136 6.198 6.251 6.327 6.422 6.503 6.528 6.486 6.408 6.348
+ 6.297 6.125 6.074 6.402 7.006 7.443 7.300 6.574 5.702 5.198 5.223 5.467 5.456 4.984 4.286 3.815 3.852 4.294 4.788 5.055 5.080 5.042 5.088 5.204 5.278 5.252 5.182 5.136 5.074 4.862 4.436 3.927 3.608 3.662 4.000 4.307
+ 5.915 6.309 6.850 7.195 7.119 6.642 6.002 5.490 5.278 5.325 5.442 5.436 5.229 4.891 4.562 4.346 4.255 4.235 4.234 4.246 4.300 4.410 4.538 4.611 4.575 4.442 4.287 4.201 4.224 4.331 4.457 4.542 4.568 4.550 4.521 4.501
+ 6.218 6.126 5.966 5.765 5.549 5.346 5.200 5.166 5.263 5.440 5.579 5.563 5.367 5.087 4.876 4.831 4.912 4.981 4.914 4.718 4.536 4.545 4.813 5.239 5.618 5.768 5.646 5.347 5.027 4.804 4.702 4.678 4.671 4.648 4.611 4.584
+ 4.899 5.391 5.995 6.289 6.159 5.844 5.644 5.607 5.514 5.157 4.624 4.274 4.405 4.931 5.400 5.362 4.761 3.995 3.583 3.756 4.310 4.841 5.090 5.093 5.034 5.003 4.927 4.725 4.481 4.419 4.676 5.109 5.369 5.205 4.716 4.295
+ 3.550 4.212 5.088 5.638 5.631 5.249 4.845 4.610 4.472 4.263 3.968 3.759 3.807 4.068 4.292 4.256 3.988 3.749 3.787 4.095 4.429 4.550 4.455 4.354 4.420 4.573 4.535 4.121 3.467 2.966 2.941 3.361 3.868 4.101 4.002 3.817
+ 3.911 4.150 4.380 4.368 4.158 4.034 4.228 4.650 4.941 4.803 4.299 3.818 3.722 4.015 4.350 4.366 4.038 3.710 3.758 4.241 4.835 5.131 4.982 4.595 4.294 4.218 4.245 4.192 4.052 3.999 4.164 4.427 4.472 4.085 3.409 2.881
+ 4.510 4.249 4.018 4.107 4.495 4.845 4.796 4.307 3.711 3.435 3.636 4.081 4.368 4.285 3.971 3.761 3.878 4.245 4.598 4.735 4.684 4.625 4.680 4.783 4.753 4.488 4.087 3.775 3.717 3.888 4.105 4.182 4.057 3.806 3.557 3.410
+ 3.896 4.446 5.118 5.412 5.161 4.645 4.326 4.452 4.875 5.203 5.144 4.726 4.230 3.932 3.909 4.040 4.186 4.323 4.525 4.838 5.178 5.377 5.307 4.980 4.528 4.103 3.804 3.665 3.693 3.861 4.081 4.189 4.024 3.561 2.975 2.567
+ 4.635 5.042 5.538 5.737 5.467 4.875 4.273 3.893 3.760 3.753 3.764 3.782 3.842 3.924 3.932 3.794 3.573 3.459 3.627 4.071 4.580 4.880 4.834 4.532 4.198 4.010 3.991 4.034 4.021 3.915 3.749 3.563 3.359 3.131 2.908 2.763
+ 4.966 5.041 5.044 4.810 4.306 3.707 3.305 3.322 3.739 4.282 4.588 4.445 3.938 3.390 3.141 3.328 3.818 4.339 4.680 4.812 4.839 4.853 4.836 4.696 4.385 3.979 3.635 3.462 3.434 3.419 3.311 3.128 2.993 3.006 3.146 3.279
+ 5.493 5.335 4.901 4.156 3.320 2.795 2.870 3.472 4.202 4.643 4.661 4.442 4.249 4.165 4.059 3.807 3.500 3.426 3.799 4.525 5.223 5.516 5.329 4.904 4.551 4.371 4.209 3.881 3.408 3.031 2.979 3.237 3.542 3.626 3.460 3.264
+ 4.780 4.714 4.622 4.577 4.644 4.830 5.052 5.170 5.095 4.868 4.650 4.594 4.709 4.837 4.787 4.506 4.140 3.919 3.968 4.201 4.408 4.440 4.329 4.221 4.210 4.232 4.136 3.861 3.528 3.352 3.423 3.593 3.574 3.202 2.612 2.163
+ 5.108 5.097 5.038 4.898 4.684 4.457 4.294 4.243 4.291 4.377 4.432 4.420 4.350 4.260 4.192 4.164 4.165 4.164 4.130 4.057 3.982 3.967 4.063 4.261 4.475 4.579 4.477 4.169 3.755 3.379 3.137 3.033 2.998 2.957 2.893 2.840
+ 4.237 4.735 5.299 5.448 5.061 4.467 4.129 4.254 4.648 4.940 4.920 4.673 4.428 4.308 4.247 4.127 3.969 3.934 4.144 4.503 4.746 4.668 4.327 3.997 3.906 4.033 4.157 4.123 4.038 4.183 4.711 5.423 5.883 5.792 5.275 4.807
+ 5.804 5.718 5.497 5.156 4.845 4.760 4.948 5.217 5.274 4.999 4.585 4.384 4.582 4.994 5.202 4.932 4.317 3.808 3.774 4.184 4.626 4.679 4.265 3.699 3.388 3.489 3.834 4.156 4.359 4.565 4.905 5.303 5.495 5.287 4.790 4.376
+ 5.769 5.448 5.009 4.726 4.768 5.095 5.490 5.700 5.604 5.271 4.895 4.653 4.592 4.627 4.639 4.576 4.483 4.444 4.489 4.571 4.614 4.588 4.544 4.555 4.636 4.719 4.704 4.554 4.333 4.151 4.056 3.985 3.817 3.496 3.107 2.837
+ 4.559 5.072 5.622 5.681 5.135 4.381 3.987 4.212 4.831 5.365 5.494 5.271 4.972 4.796 4.691 4.486 4.136 3.825 3.809 4.159 4.656 4.969 4.927 4.651 4.423 4.426 4.597 4.716 4.618 4.330 4.012 3.801 3.706 3.649 3.580 3.521
+ 5.608 5.624 5.498 5.138 4.719 4.586 4.932 5.563 5.999 5.874 5.256 4.586 4.278 4.351 4.441 4.188 3.613 3.128 3.156 3.724 4.416 4.725 4.496 4.026 3.773 3.943 4.336 4.571 4.446 4.079 3.743 3.585 3.517 3.368 3.109 2.892
+ 3.755 4.028 4.414 4.734 4.937 5.111 5.347 5.586 5.623 5.266 4.529 3.680 3.094 3.007 3.383 3.960 4.447 4.692 4.720 4.648 4.574 4.533 4.513 4.500 4.479 4.429 4.323 4.162 3.993 3.890 3.895 3.971 4.028 3.997 3.891 3.798
+ 5.635 5.972 6.192 5.891 5.198 4.716 4.943 5.743 6.399 6.237 5.242 4.072 3.470 3.627 4.087 4.264 4.025 3.778 3.997 4.690 5.344 5.422 4.897 4.288 4.166 4.602 5.118 5.166 4.671 4.085 3.933 4.295 4.749 4.818 4.447 4.046
+ 5.774 6.118 6.539 6.722 6.551 6.184 5.898 5.862 6.025 6.197 6.226 6.090 5.862 5.586 5.243 4.816 4.393 4.160 4.279 4.719 5.237 5.520 5.408 5.004 4.590 4.411 4.508 4.712 4.795 4.644 4.324 4.013 3.862 3.906 4.059 4.183
+ 4.077 4.433 4.991 5.546 5.973 6.262 6.456 6.571 6.576 6.440 6.178 5.838 5.451 5.012 4.524 4.077 3.830 3.912 4.296 4.778 5.121 5.229 5.210 5.248 5.406 5.540 5.430 5.009 4.473 4.148 4.217 4.558 4.837 4.796 4.479 4.183
+ 4.550 5.204 6.006 6.376 6.140 5.639 5.389 5.620 6.100 6.380 6.197 5.671 5.136 4.809 4.624 4.366 3.950 3.549 3.455 3.811 4.482 5.166 5.624 5.809 5.804 5.670 5.400 4.997 4.578 4.338 4.379 4.588 4.697 4.514 4.111 3.779
+ 5.729 5.630 5.548 5.612 5.850 6.145 6.304 6.200 5.875 5.521 5.344 5.419 5.628 5.751 5.628 5.277 4.874 4.625 4.624 4.805 5.022 5.161 5.199 5.170 5.090 4.928 4.651 4.296 3.981 3.814 3.792 3.771 3.569 3.122 2.573 2.191
+ 5.309 5.655 6.112 6.366 6.239 5.811 5.357 5.147 5.239 5.431 5.413 5.018 4.376 3.841 3.727 4.060 4.537 4.750 4.496 3.936 3.477 3.462 3.923 4.559 4.971 4.936 4.535 4.043 3.715 3.620 3.648 3.638 3.499 3.258 3.014 2.863
+ 5.591 5.570 5.577 5.661 5.825 6.007 6.118 6.095 5.951 5.757 5.602 5.528 5.517 5.507 5.432 5.263 5.016 4.745 4.521 4.414 4.464 4.658 4.915 5.096 5.070 4.781 4.296 3.788 3.446 3.361 3.478 3.624 3.627 3.432 3.135 2.916
+ 5.938 6.058 6.194 6.197 5.972 5.566 5.181 5.066 5.354 5.929 6.446 6.534 6.038 5.151 4.299 3.871 3.963 4.341 4.632 4.608 4.337 4.098 4.135 4.447 4.787 4.857 4.536 3.980 3.497 3.326 3.461 3.678 3.703 3.429 2.990 2.661
+ 5.127 5.268 5.494 5.717 5.859 5.899 5.880 5.878 5.928 5.978 5.916 5.654 5.218 4.756 4.442 4.348 4.393 4.416 4.318 4.152 4.084 4.243 4.591 4.927 5.023 4.794 4.355 3.946 3.755 3.802 3.937 3.960 3.755 3.356 2.922 2.643
+ 5.600 5.813 6.107 6.315 6.360 6.314 6.340 6.548 6.888 7.151 7.105 6.672 6.003 5.391 5.070 5.053 5.142 5.097 4.827 4.465 4.253 4.339 4.658 4.986 5.109 4.969 4.670 4.362 4.113 3.889 3.631 3.348 3.120 3.024 3.050 3.107
+ 6.306 6.641 7.037 7.174 6.944 6.510 6.137 5.964 5.930 5.890 5.784 5.682 5.667 5.703 5.635 5.330 4.832 4.356 4.140 4.274 4.668 5.150 5.587 5.902 6.002 5.764 5.127 4.238 3.449 3.118 3.322 3.752 3.921 3.555 2.829 2.251
+ 6.342 6.325 6.332 6.386 6.444 6.411 6.222 5.905 5.574 5.334 5.189 5.036 4.763 4.357 3.939 3.677 3.660 3.839 4.082 4.304 4.532 4.852 5.279 5.665 5.766 5.421 4.717 3.987 3.617 3.775 4.275 4.676 4.576 3.897 2.962 2.297
+ 6.189 6.304 6.573 6.951 7.246 7.221 6.815 6.254 5.901 5.935 6.167 6.173 5.681 4.844 4.147 3.996 4.355 4.760 4.728 4.196 3.600 3.520 4.180 5.237 6.031 6.078 5.404 4.471 3.801 3.612 3.737 3.830 3.641 3.173 2.631 2.276
+ 6.104 5.673 5.319 5.512 6.166 6.668 6.466 5.639 4.861 4.777 5.365 5.917 5.677 4.558 3.268 2.721 3.269 4.450 5.434 5.732 5.521 5.338 5.506 5.851 5.940 5.554 4.896 4.363 4.142 4.061 3.817 3.329 2.834 2.627 2.751 2.951
+ 7.301 7.114 6.914 6.895 7.085 7.283 7.192 6.650 5.791 4.992 4.629 4.814 5.311 5.713 5.741 5.432 5.086 4.998 5.224 5.553 5.709 5.591 5.336 5.165 5.150 5.140 4.910 4.402 3.821 3.486 3.559 3.888 4.129 4.033 3.664 3.337
+ 7.096 7.320 7.597 7.760 7.797 7.779 7.667 7.245 6.332 5.089 4.075 3.885 4.644 5.809 6.541 6.364 5.530 4.767 4.629 5.037 5.436 5.387 5.009 4.835 5.227 5.944 6.311 5.858 4.801 3.898 3.772 4.356 4.973 4.982 4.382 3.779
+ 6.735 6.743 6.844 7.137 7.626 8.133 8.331 7.936 6.951 5.767 4.973 4.962 5.624 6.395 6.664 6.236 5.462 4.927 4.973 5.452 5.919 6.061 5.949 5.892 6.052 6.237 6.077 5.441 4.654 4.268 4.563 5.245 5.659 5.354 4.501 3.776
+ 6.669 6.724 6.856 7.104 7.482 7.898 8.128 7.909 7.154 6.102 5.242 4.999 5.406 6.044 6.341 6.005 5.238 4.560 4.386 4.737 5.294 5.722 5.926 6.023 6.100 6.055 5.705 5.064 4.459 4.316 4.757 5.408 5.642 5.105 4.061 3.234
+ 6.792 7.150 7.644 8.022 8.195 8.232 8.181 7.946 7.362 6.440 5.497 5.002 5.201 5.869 6.410 6.292 5.446 4.323 3.552 3.510 4.125 5.016 5.797 6.262 6.361 6.101 5.534 4.834 4.308 4.238 4.624 5.102 5.162 4.559 3.564 2.809
+ 6.875 7.125 7.500 7.858 8.127 8.290 8.285 7.978 7.276 6.299 5.415 5.037 5.306 5.936 6.381 6.216 5.445 4.481 3.837 3.787 4.255 4.966 5.660 6.178 6.417 6.282 5.763 5.061 4.568 4.617 5.172 5.753 5.745 4.893 3.578 2.598
+ 7.084 7.523 8.122 8.562 8.711 8.639 8.420 7.985 7.203 6.134 5.160 4.777 5.186 6.030 6.591 6.306 5.218 3.959 3.278 3.512 4.409 5.397 6.024 6.183 6.014 5.678 5.253 4.832 4.608 4.784 5.332 5.889 5.950 5.284 4.199 3.377
+ 6.207 6.909 7.834 8.432 8.499 8.239 7.949 7.688 7.280 6.626 5.956 5.705 6.095 6.837 7.289 6.982 6.029 5.036 4.602 4.856 5.446 5.940 6.205 6.390 6.592 6.619 6.156 5.197 4.247 3.995 4.678 5.744 6.215 5.504 3.983 2.753
+ 7.342 7.765 8.334 8.689 8.609 8.102 7.331 6.504 5.820 5.482 5.642 6.281 7.101 7.619 7.465 6.676 5.721 5.174 5.282 5.797 6.207 6.187 5.845 5.560 5.575 5.752 5.731 5.331 4.791 4.579 4.929 5.553 5.836 5.384 4.413 3.623
+ 7.433 7.530 7.784 8.195 8.591 8.656 8.129 7.024 5.706 4.718 4.468 4.973 5.836 6.494 6.548 5.982 5.132 4.455 4.261 4.570 5.152 5.691 5.955 5.878 5.551 5.152 4.863 4.806 4.995 5.320 5.581 5.572 5.187 4.505 3.775 3.305
+ 9.286 9.657 9.876 9.409 8.263 7.048 6.489 6.823 7.617 8.147 7.985 7.285 6.541 6.113 5.960 5.785 5.411 4.981 4.809 5.046 5.515 5.856 5.838 5.527 5.177 4.977 4.917 4.880 4.822 4.829 4.991 5.248 5.395 5.269 4.929 4.640
+ 10.092 10.556 10.916 10.554 9.376 7.925 6.936 6.739 7.037 7.215 6.878 6.142 5.448 5.132 5.154 5.202 5.036 4.703 4.459 4.501 4.793 5.133 5.356 5.456 5.516 5.563 5.534 5.378 5.173 5.097 5.246 5.493 5.564 5.278 4.750 4.333
+ 8.108 7.749 7.373 7.336 7.659 7.995 7.939 7.393 6.643 6.099 5.941 6.004 5.980 5.719 5.342 5.069 4.979 4.940 4.788 4.536 4.404 4.607 5.117 5.642 5.858 5.682 5.320 5.071 5.062 5.160 5.145 4.933 4.643 4.462 4.453 4.513
+ 6.389 6.564 6.917 7.364 7.673 7.557 6.892 5.857 4.873 4.331 4.339 4.677 4.999 5.101 5.031 4.983 5.081 5.274 5.416 5.436 5.414 5.491 5.711 5.942 5.980 5.726 5.294 4.938 4.864 5.071 5.363 5.489 5.312 4.884 4.400 4.086
+ 5.457 5.724 6.290 7.068 7.738 7.873 7.252 6.083 4.924 4.309 4.387 4.874 5.324 5.491 5.453 5.443 5.580 5.774 5.873 5.870 5.947 6.283 6.831 7.293 7.341 6.891 6.181 5.586 5.339 5.395 5.540 5.600 5.565 5.526 5.543 5.583
+ 8.271 8.040 7.807 7.836 8.189 8.653 8.879 8.624 7.921 7.054 6.366 6.067 6.144 6.418 6.671 6.746 6.605 6.321 6.064 6.036 6.390 7.121 8.020 8.739 8.961 8.586 7.806 7.001 6.525 6.506 6.790 7.059 7.047 6.699 6.199 5.842
+ 11.718 11.212 10.544 10.177 10.379 11.022 11.639 11.704 10.981 9.688 8.379 7.609 7.601 8.137 8.731 8.954 8.670 8.061 7.455 7.120 7.156 7.522 8.098 8.734 9.261 9.528 9.475 9.198 8.914 8.815 8.899 8.950 8.695 8.047 7.229 6.656
+ 10.408 10.198 9.832 9.407 9.030 8.754 8.536 8.256 7.810 7.219 6.641 6.276 6.218 6.380 6.555 6.565 6.389 6.157 6.062 6.248 6.763 7.565 8.522 9.400 9.888 9.727 8.890 7.693 6.677 6.295 6.603 7.206 7.539 7.291 6.637 6.093
+ 11.803 11.710 11.488 11.121 10.666 10.238 9.924 9.730 9.587 9.430 9.262 9.131 9.058 8.992 8.837 8.544 8.164 7.819 7.623 7.628 7.834 8.232 8.786 9.372 9.752 9.668 9.045 8.133 7.413 7.290 7.766 8.399 8.599 8.090 7.148 6.415
+ 13.331 13.037 12.530 11.934 11.351 10.828 10.374 9.997 9.744 9.680 9.822 10.075 10.247 10.148 9.710 9.041 8.357 7.841 7.559 7.481 7.590 7.939 8.578 9.416 10.146 10.382 9.926 8.973 8.035 7.612 7.825 8.323 8.558 8.222 7.495 6.908
+ 10.257 9.794 9.052 8.298 7.742 7.446 7.335 7.282 7.212 7.126 7.049 6.960 6.777 6.429 5.939 5.444 5.104 4.998 5.088 5.316 5.717 6.424 7.501 8.735 9.616 9.606 8.553 6.926 5.603 5.318 6.137 7.388 8.140 7.894 6.940 6.115
+ 7.083 7.027 7.139 7.605 8.315 8.867 8.865 8.253 7.373 6.697 6.465 6.538 6.574 6.351 5.926 5.525 5.289 5.153 4.979 4.803 4.916 5.659 7.068 8.698 9.807 9.824 8.741 7.151 5.876 5.462 5.883 6.635 7.126 7.070 6.630 6.236
+ 6.590 6.562 6.714 7.229 8.014 8.665 8.724 8.022 6.848 5.773 5.260 5.356 5.709 5.876 5.669 5.254 4.943 4.893 4.996 5.065 5.120 5.465 6.426 7.939 9.391 9.924 9.064 7.156 5.242 4.379 4.910 6.246 7.339 7.491 6.842 6.169
+ 6.649 7.222 8.119 8.959 9.396 9.253 8.573 7.572 6.538 5.718 5.238 5.079 5.116 5.194 5.210 5.136 4.998 4.837 4.704 4.705 5.016 5.809 7.092 8.569 9.689 9.917 9.092 7.604 6.213 5.587 5.867 6.601 7.091 6.925 6.267 5.691
+ 5.202 6.365 8.047 9.392 9.860 9.462 8.583 7.611 6.710 5.868 5.114 4.625 4.607 5.085 5.799 6.344 6.426 6.052 5.518 5.229 5.505 6.445 7.885 9.417 10.498 10.668 9.821 8.344 6.972 6.363 6.671 7.444 7.959 7.776 7.066 6.444
+ 3.853 5.619 8.106 9.956 10.387 9.563 8.259 7.175 6.510 6.061 5.613 5.209 5.048 5.199 5.453 5.484 5.145 4.621 4.298 4.496 5.302 6.598 8.153 9.657 10.701 10.861 9.943 8.247 6.539 5.634 5.848 6.756 7.516 7.529 6.894 6.273
+ 5.286 6.491 8.103 9.155 9.230 8.657 8.080 7.849 7.773 7.425 6.634 5.671 4.991 4.799 4.886 4.872 4.590 4.240 4.200 4.715 5.759 7.136 8.640 10.048 11.018 11.113 10.092 8.257 6.465 5.651 6.152 7.410 8.371 8.313 7.416 6.568
+ 3.945 4.842 6.198 7.468 8.354 8.879 9.154 9.133 8.616 7.523 6.116 4.916 4.337 4.369 4.600 4.584 4.222 3.831 3.865 4.571 5.863 7.456 9.061 10.419 11.223 11.134 10.012 8.191 6.472 5.691 6.139 7.309 8.258 8.331 7.655 6.977
+ 4.308 4.781 5.588 6.530 7.438 8.191 8.683 8.794 8.442 7.673 6.701 5.829 5.285 5.099 5.106 5.086 4.921 4.668 4.525 4.730 5.460 6.747 8.407 10.023 11.036 10.990 9.821 7.991 6.315 5.512 5.781 6.695 7.534 7.797 7.527 7.180
+ 3.838 4.497 5.611 6.862 7.938 8.629 8.847 8.607 8.001 7.181 6.345 5.687 5.329 5.266 5.358 5.406 5.269 4.964 4.694 4.770 5.456 6.801 8.542 10.151 11.042 10.852 9.651 7.945 6.438 5.668 5.736 6.312 6.886 7.113 7.003 6.822
+ 4.605 5.385 6.606 7.786 8.549 8.786 8.622 8.254 7.794 7.221 6.470 5.556 4.650 4.013 3.851 4.170 4.752 5.278 5.540 5.601 5.778 6.424 7.624 9.029 9.979 9.892 8.673 6.861 5.350 4.848 5.442 6.566 7.420 7.533 7.055 6.565
+ 4.530 5.267 6.352 7.256 7.636 7.484 7.044 6.586 6.231 5.942 5.635 5.280 4.923 4.625 4.397 4.197 3.981 3.757 3.617 3.725 4.266 5.345 6.862 8.439 9.506 9.566 8.526 6.840 5.326 4.692 5.102 6.082 6.884 7.026 6.606 6.158
+ 7.112 7.199 7.247 7.163 7.018 7.006 7.226 7.517 7.523 6.972 5.925 4.787 4.032 3.883 4.187 4.574 4.748 4.670 4.539 4.618 5.081 5.940 7.043 8.086 8.681 8.508 7.538 6.161 5.050 4.763 5.351 6.284 6.809 6.518 5.655 4.928
+ 8.345 8.005 7.502 7.079 6.889 6.898 6.926 6.775 6.384 5.868 5.429 5.201 5.149 5.117 4.978 4.755 4.610 4.706 5.063 5.546 5.986 6.320 6.620 6.970 7.315 7.452 7.183 6.524 5.760 5.275 5.281 5.667 6.101 6.297 6.225 6.087
+ 8.084 7.857 7.488 7.106 6.817 6.652 6.546 6.383 6.077 5.638 5.178 4.841 4.720 4.797 4.967 5.116 5.195 5.234 5.313 5.499 5.809 6.200 6.582 6.842 6.874 6.630 6.170 5.666 5.340 5.342 5.653 6.086 6.402 6.469 6.341 6.199
+ 6.188 6.204 6.274 6.432 6.655 6.831 6.806 6.479 5.891 5.237 4.769 4.634 4.772 4.956 4.958 4.728 4.442 4.369 4.663 5.237 5.815 6.128 6.092 5.842 5.601 5.518 5.579 5.665 5.668 5.575 5.451 5.365 5.338 5.343 5.351 5.352
+ 7.454 7.407 7.359 7.342 7.312 7.176 6.877 6.468 6.075 5.799 5.626 5.451 5.195 4.901 4.710 4.731 4.930 5.140 5.208 5.149 5.153 5.434 6.025 6.703 7.111 7.003 6.413 5.631 5.017 4.773 4.851 5.026 5.073 4.912 4.637 4.429
+ 9.338 9.011 8.523 8.079 7.773 7.536 7.217 6.725 6.114 5.545 5.176 5.057 5.122 5.261 5.390 5.475 5.504 5.458 5.337 5.194 5.142 5.291 5.649 6.071 6.333 6.277 5.948 5.586 5.475 5.729 6.189 6.504 6.365 5.737 4.907 4.327
+ 7.813 7.310 6.637 6.198 6.159 6.359 6.487 6.360 6.050 5.781 5.715 5.825 5.955 5.980 5.895 5.763 5.610 5.384 5.054 4.716 4.596 4.891 5.585 6.407 6.979 7.067 6.719 6.213 5.846 5.753 5.866 6.017 6.071 6.002 5.876 5.784
+ 6.775 7.137 7.558 7.700 7.480 7.110 6.875 6.853 6.864 6.667 6.211 5.694 5.381 5.362 5.486 5.514 5.339 5.065 4.900 4.989 5.353 5.943 6.703 7.530 8.202 8.397 7.904 6.850 5.733 5.134 5.302 5.956 6.505 6.515 6.058 5.610
+ 6.277 6.745 7.368 7.764 7.761 7.462 7.081 6.718 6.311 5.767 5.144 4.657 4.508 4.696 4.997 5.145 5.041 4.820 4.724 4.930 5.470 6.276 7.241 8.207 8.919 9.065 8.473 7.308 6.084 5.382 5.462 6.079 6.676 6.825 6.541 6.214
+ 5.872 6.280 6.928 7.592 8.108 8.388 8.349 7.896 7.002 5.843 4.799 4.262 4.363 4.851 5.251 5.205 4.726 4.163 3.936 4.263 5.088 6.210 7.422 8.531 9.291 9.424 8.795 7.619 6.454 5.891 6.135 6.829 7.326 7.191 6.557 5.988
+ 6.809 7.003 7.313 7.682 8.126 8.643 9.054 9.003 8.211 6.793 5.316 4.457 4.498 5.083 5.503 5.280 4.578 4.061 4.336 5.458 6.927 8.125 8.788 9.073 9.244 9.321 9.076 8.353 7.362 6.599 6.443 6.808 7.212 7.212 6.801 6.391
+ 5.463 5.935 6.614 7.186 7.511 7.648 7.700 7.655 7.415 6.960 6.444 6.091 5.969 5.910 5.680 5.265 4.970 5.191 6.040 7.190 8.107 8.494 8.508 8.556 8.835 9.094 8.860 7.947 6.739 5.953 6.040 6.786 7.481 7.537 6.993 6.438
+ 6.137 6.255 6.220 5.859 5.397 5.320 5.874 6.738 7.239 6.964 6.166 5.535 5.535 5.953 6.130 5.670 4.921 4.708 5.553 7.128 8.492 8.917 8.510 8.028 8.074 8.480 8.504 7.650 6.291 5.428 5.766 7.004 8.040 7.964 6.894 5.868
+ 6.289 6.631 6.893 6.719 6.251 6.025 6.396 7.093 7.410 6.878 5.771 4.902 4.871 5.511 6.071 5.986 5.462 5.287 6.022 7.387 8.467 8.560 7.842 7.185 7.283 7.959 8.339 7.748 6.447 5.452 5.599 6.729 7.814 7.915 7.054 6.164
+ 6.417 6.732 7.112 7.315 7.336 7.358 7.472 7.501 7.153 6.376 5.521 5.095 5.300 5.820 6.105 5.923 5.618 5.800 6.730 7.984 8.784 8.692 8.020 7.533 7.705 8.243 8.359 7.557 6.187 5.201 5.316 6.356 7.404 7.628 7.020 6.339
+ 6.533 6.376 6.148 6.026 6.202 6.726 7.385 7.787 7.650 7.057 6.423 6.141 6.224 6.308 6.046 5.541 5.350 5.983 7.338 8.641 9.045 8.368 7.303 6.825 7.301 8.132 8.285 7.281 5.716 4.791 5.257 6.708 7.917 7.912 6.834 5.782
+ 4.148 4.638 5.267 5.689 5.892 6.179 6.794 7.621 8.252 8.358 7.982 7.443 6.989 6.589 6.114 5.685 5.738 6.630 8.131 9.381 9.495 8.353 6.806 6.015 6.442 7.416 7.731 6.777 5.164 4.224 4.798 6.426 7.713 7.568 6.195 4.902
+ 12.088 12.101 12.135 12.189 12.234 12.203 12.018 11.652 11.186 10.777 10.559 10.520 10.488 10.263 9.815 9.349 9.163 9.372 9.753 9.877 9.453 8.610 7.829 7.567 7.857 8.254 8.206 7.532 6.606 6.051 6.208 6.837 7.320 7.203 6.585 6.022
+ 14.309 13.583 12.697 12.287 12.514 12.946 12.971 12.343 11.388 10.688 10.558 10.788 10.873 10.490 9.793 9.257 9.239 9.658 10.074 10.078 9.629 9.056 8.739 8.779 8.934 8.857 8.398 7.727 7.182 6.999 7.144 7.374 7.426 7.212 6.856 6.590
+ 11.508 10.966 10.118 9.327 8.892 8.885 9.118 9.284 9.192 8.890 8.573 8.340 8.059 7.495 6.633 5.864 5.778 6.670 8.159 9.338 9.418 8.356 6.935 6.150 6.410 7.216 7.621 7.073 5.888 4.961 4.953 5.717 6.457 6.477 5.807 5.137
+ 9.091 8.158 6.822 5.813 5.623 6.237 7.211 8.005 8.320 8.192 7.820 7.319 6.652 5.803 5.001 4.716 5.327 6.714 8.165 8.781 8.143 6.697 5.484 5.365 6.340 7.539 7.927 7.151 5.831 5.025 5.332 6.400 7.254 7.162 6.264 5.420
+ 6.460 6.566 6.559 6.281 5.876 5.727 6.105 6.889 7.635 7.922 7.656 7.046 6.338 5.640 5.018 4.708 5.100 6.378 8.129 9.413 9.378 7.993 6.198 5.237 5.674 6.932 7.807 7.518 6.367 5.418 5.488 6.390 7.129 6.858 5.704 4.659
+ 5.033 5.551 6.174 6.485 6.459 6.451 6.791 7.420 7.932 7.974 7.575 7.068 6.710 6.441 6.051 5.586 5.475 6.159 7.532 8.806 9.059 8.047 6.514 5.622 5.954 6.993 7.592 7.046 5.757 4.869 5.172 6.323 7.122 6.634 5.097 3.758
+ 7.097 7.202 7.248 7.117 6.917 6.920 7.290 7.884 8.329 8.320 7.852 7.170 6.523 6.007 5.645 5.574 6.048 7.160 8.532 9.385 9.055 7.589 5.851 4.936 5.333 6.521 7.410 7.240 6.190 5.150 4.892 5.392 5.927 5.806 5.042 4.322
+ 8.226 8.574 9.117 9.659 10.073 10.341 10.494 10.541 10.455 10.224 9.897 9.563 9.278 9.026 8.756 8.457 8.192 8.045 8.033 8.082 8.106 8.101 8.144 8.286 8.438 8.398 8.035 7.473 7.084 7.220 7.908 8.753 9.201 8.962 8.257 7.665
+ 10.652 10.012 9.213 8.844 9.152 9.888 10.537 10.716 10.403 9.856 9.336 8.920 8.535 8.131 7.781 7.616 7.669 7.812 7.882 7.858 7.916 8.274 8.953 9.673 10.016 9.736 8.973 8.191 7.872 8.190 8.903 9.528 9.664 9.242 8.552 8.045
+ 10.997 10.836 10.621 10.474 10.431 10.435 10.410 10.330 10.205 10.014 9.678 9.141 8.489 7.968 7.840 8.162 8.696 9.058 9.023 8.726 8.577 8.928 9.754 10.624 11.002 10.666 9.892 9.284 9.346 10.131 11.202 11.922 11.858 11.042 9.940 9.175
+ 11.403 10.419 9.044 8.040 7.823 8.223 8.692 8.726 8.192 7.321 6.451 5.781 5.325 5.041 4.965 5.195 5.746 6.447 7.012 7.231 7.138 6.972 6.971 7.166 7.353 7.284 6.902 6.432 6.227 6.493 7.103 7.659 7.762 7.303 6.555 5.998
+ 8.573 8.750 8.794 8.443 7.827 7.404 7.541 8.118 8.575 8.375 7.469 6.330 5.531 5.282 5.336 5.336 5.209 5.222 5.649 6.401 7.027 7.095 6.594 5.958 5.677 5.881 6.263 6.417 6.236 5.978 5.962 6.220 6.459 6.375 5.980 5.615
+ 7.320 7.564 7.841 7.900 7.649 7.203 6.773 6.497 6.371 6.302 6.209 6.058 5.839 5.545 5.211 4.963 4.987 5.384 6.034 6.609 6.784 6.490 5.977 5.616 5.595 5.773 5.841 5.629 5.292 5.166 5.441 5.945 6.268 6.120 5.609 5.163
+ 7.642 7.920 8.169 8.081 7.657 7.218 7.101 7.350 7.679 7.750 7.465 7.005 6.591 6.259 5.872 5.365 4.934 4.921 5.482 6.349 6.971 6.942 6.350 5.704 5.498 5.795 6.203 6.249 5.810 5.198 4.854 4.967 5.352 5.680 5.786 5.762
+ 8.892 8.976 9.039 8.953 8.670 8.235 7.731 7.224 6.764 6.414 6.239 6.236 6.274 6.141 5.711 5.093 4.607 4.567 5.021 5.694 6.184 6.273 6.079 5.910 5.969 6.172 6.250 6.044 5.682 5.477 5.625 5.993 6.219 6.038 5.543 5.121
+ 6.655 7.573 8.685 9.146 8.663 7.646 6.761 6.354 6.266 6.153 5.919 5.787 5.969 6.323 6.397 5.871 4.940 4.229 4.274 5.032 5.908 6.270 5.988 5.487 5.300 5.571 5.977 6.116 5.937 5.767 5.915 6.290 6.436 5.994 5.114 4.401
+ 5.701 6.283 7.117 7.773 7.988 7.782 7.354 6.899 6.500 6.164 5.900 5.736 5.660 5.575 5.362 5.008 4.675 4.606 4.927 5.518 6.077 6.336 6.248 5.975 5.716 5.538 5.364 5.118 4.861 4.759 4.925 5.273 5.568 5.618 5.445 5.258
+ 5.561 5.842 6.256 6.606 6.765 6.733 6.592 6.403 6.154 5.779 5.255 4.668 4.192 3.988 4.090 4.384 4.688 4.884 4.991 5.126 5.390 5.762 6.092 6.203 6.019 5.625 5.218 4.978 4.963 5.094 5.221 5.225 5.078 4.840 4.609 4.471
+ 5.129 5.854 6.728 7.092 6.760 6.129 5.787 5.977 6.397 6.514 6.048 5.210 4.484 4.204 4.311 4.496 4.544 4.535 4.722 5.235 5.906 6.393 6.450 6.106 5.594 5.139 4.820 4.609 4.495 4.527 4.731 4.999 5.123 4.967 4.612 4.319
+ 6.766 6.794 6.957 7.328 7.808 8.128 8.027 7.467 6.708 6.152 6.060 6.362 6.698 6.685 6.191 5.432 4.804 4.604 4.840 5.266 5.589 5.672 5.580 5.461 5.396 5.346 5.241 5.095 5.032 5.172 5.498 5.812 5.866 5.564 5.065 4.688
+ 5.759 6.276 6.961 7.372 7.282 6.805 6.266 5.970 6.043 6.425 6.944 7.380 7.503 7.148 6.333 5.340 4.615 4.499 4.971 5.636 6.009 5.880 5.450 5.110 5.073 5.176 5.076 4.619 4.049 3.814 4.141 4.776 5.161 4.917 4.197 3.581
+ 7.901 7.577 7.091 6.696 6.609 6.888 7.386 7.816 7.922 7.636 7.126 6.672 6.469 6.492 6.527 6.347 5.898 5.356 5.009 5.056 5.477 6.044 6.460 6.515 6.178 5.585 4.959 4.511 4.366 4.508 4.793 5.007 4.983 4.696 4.293 4.005
+ 10.998 10.543 9.703 8.679 7.802 7.386 7.509 7.916 8.183 8.031 7.546 7.086 6.956 7.113 7.191 6.822 5.980 5.049 4.544 4.713 5.360 6.009 6.262 6.045 5.584 5.170 4.945 4.869 4.840 4.813 4.819 4.891 5.004 5.095 5.131 5.131
+ 9.421 8.608 7.566 6.977 7.078 7.525 7.757 7.506 6.995 6.679 6.796 7.159 7.348 7.105 6.544 6.016 5.774 5.782 5.816 5.728 5.585 5.566 5.733 5.925 5.899 5.565 5.097 4.793 4.828 5.128 5.450 5.594 5.534 5.382 5.256 5.198
+ 6.172 6.486 6.830 6.912 6.706 6.466 6.468 6.739 7.030 7.057 6.765 6.353 6.051 5.895 5.718 5.383 4.982 4.795 5.018 5.536 5.971 5.996 5.618 5.160 4.970 5.117 5.365 5.436 5.283 5.121 5.182 5.464 5.721 5.710 5.441 5.177
+ 5.832 6.160 6.523 6.591 6.280 5.827 5.600 5.800 6.311 6.799 6.964 6.723 6.207 5.624 5.117 4.749 4.559 4.598 4.889 5.349 5.783 5.986 5.879 5.565 5.253 5.104 5.134 5.229 5.262 5.182 5.031 4.885 4.790 4.742 4.720 4.710
+ 6.052 6.425 6.800 6.763 6.234 5.559 5.251 5.560 6.265 6.822 6.779 6.117 5.242 4.678 4.686 5.117 5.579 5.756 5.620 5.390 5.304 5.418 5.580 5.584 5.353 5.000 4.732 4.686 4.840 5.045 5.147 5.092 4.932 4.766 4.656 4.609
+ 5.502 5.895 6.439 6.801 6.765 6.367 5.866 5.576 5.666 6.051 6.459 6.621 6.438 6.042 5.679 5.539 5.637 5.832 5.953 5.923 5.794 5.666 5.595 5.543 5.433 5.238 5.028 4.932 5.041 5.321 5.623 5.763 5.634 5.275 4.852 4.572
+ 6.002 6.118 6.256 6.316 6.282 6.241 6.297 6.464 6.634 6.639 6.388 5.947 5.510 5.273 5.308 5.530 5.766 5.874 5.826 5.699 5.600 5.586 5.637 5.689 5.690 5.638 5.576 5.554 5.597 5.681 5.753 5.758 5.673 5.521 5.358 5.255
+ 4.802 4.998 5.263 5.471 5.626 5.840 6.187 6.588 6.861 6.888 6.733 6.586 6.572 6.636 6.614 6.428 6.190 6.102 6.234 6.411 6.358 5.970 5.446 5.142 5.247 5.598 5.827 5.707 5.385 5.259 5.606 6.306 6.925 7.099 6.849 6.545
+ 6.372 6.198 5.989 5.904 5.983 6.130 6.208 6.165 6.066 6.009 6.011 5.970 5.766 5.386 4.968 4.713 4.736 4.972 5.242 5.388 5.385 5.334 5.352 5.461 5.579 5.604 5.516 5.401 5.392 5.557 5.849 6.134 6.284 6.263 6.136 6.027
+ 6.322 5.938 5.402 5.023 4.989 5.285 5.737 6.152 6.407 6.459 6.305 5.955 5.467 4.965 4.616 4.532 4.692 4.945 5.114 5.116 5.000 4.894 4.890 4.985 5.110 5.202 5.261 5.326 5.427 5.547 5.643 5.690 5.701 5.710 5.732 5.753
+ 5.283 5.879 6.579 6.802 6.355 5.568 5.012 5.050 5.593 6.239 6.622 6.651 6.479 6.278 6.079 5.805 5.424 5.042 4.832 4.881 5.101 5.313 5.393 5.349 5.268 5.210 5.165 5.116 5.106 5.219 5.473 5.744 5.832 5.628 5.238 4.931
+ 6.663 6.182 5.458 4.847 4.649 4.942 5.528 6.043 6.171 5.844 5.288 4.863 4.821 5.132 5.519 5.658 5.414 4.923 4.488 4.370 4.627 5.102 5.543 5.753 5.682 5.423 5.141 4.996 5.075 5.356 5.709 5.950 5.938 5.667 5.283 5.009
+ 5.516 5.782 6.026 5.948 5.525 5.038 4.811 4.914 5.104 5.063 4.695 4.210 3.922 3.959 4.165 4.264 4.140 3.935 3.914 4.208 4.695 5.108 5.258 5.160 4.968 4.817 4.738 4.699 4.698 4.777 4.934 5.053 4.953 4.558 4.009 3.611
+ 6.343 6.138 5.941 5.969 6.235 6.524 6.585 6.349 5.961 5.619 5.390 5.181 4.893 4.574 4.408 4.528 4.846 5.085 5.008 4.639 4.268 4.215 4.564 5.094 5.474 5.530 5.369 5.245 5.325 5.552 5.719 5.656 5.356 4.954 4.612 4.425
+ 5.904 5.681 5.459 5.492 5.841 6.309 6.586 6.489 6.096 5.675 5.477 5.553 5.738 5.789 5.567 5.122 4.651 4.364 4.374 4.649 5.049 5.397 5.555 5.480 5.241 4.981 4.838 4.865 5.002 5.125 5.138 5.031 4.880 4.767 4.726 4.725
+ 2.912 3.766 4.923 5.719 5.873 5.630 5.452 5.590 5.902 6.066 5.931 5.661 5.554 5.725 5.982 6.012 5.678 5.153 4.766 4.710 4.904 5.104 5.133 5.016 4.892 4.849 4.854 4.836 4.805 4.856 5.029 5.206 5.163 4.779 4.197 3.762
+ 2.956 3.859 5.049 5.787 5.775 5.323 5.006 5.149 5.574 5.822 5.596 5.031 4.558 4.513 4.866 5.283 5.442 5.292 5.052 4.976 5.124 5.342 5.427 5.302 5.052 4.821 4.691 4.653 4.659 4.679 4.690 4.640 4.464 4.142 3.767 3.511
+ 5.037 5.367 5.741 5.825 5.512 5.002 4.634 4.616 4.881 5.187 5.327 5.294 5.235 5.283 5.425 5.518 5.438 5.210 5.004 4.999 5.239 5.593 5.853 5.874 5.651 5.299 4.958 4.718 4.588 4.518 4.441 4.299 4.073 3.789 3.519 3.353
+ 4.046 4.694 5.620 6.312 6.422 5.953 5.213 4.599 4.357 4.469 4.727 4.902 4.885 4.727 4.567 4.528 4.652 4.895 5.170 5.390 5.494 5.464 5.323 5.137 4.990 4.943 4.997 5.079 5.078 4.911 4.573 4.146 3.746 3.462 3.311 3.256
+ 6.831 5.809 4.429 3.524 3.509 4.163 4.893 5.217 5.054 4.639 4.239 3.961 3.783 3.703 3.781 4.046 4.385 4.592 4.559 4.408 4.404 4.692 5.117 5.322 5.059 4.429 3.820 3.578 3.718 3.931 3.888 3.537 3.125 2.940 3.033 3.194
+ 6.513 6.028 5.255 4.480 3.948 3.783 3.982 4.450 5.025 5.495 5.650 5.379 4.760 4.056 3.585 3.537 3.865 4.342 4.731 4.927 4.981 4.986 4.964 4.851 4.586 4.211 3.866 3.683 3.680 3.739 3.706 3.511 3.209 2.917 2.719 2.631
+ 4.890 5.368 5.793 5.584 4.648 3.512 2.935 3.312 4.373 5.409 5.802 5.441 4.717 4.150 4.009 4.208 4.493 4.707 4.885 5.140 5.485 5.781 5.838 5.573 5.066 4.501 4.044 3.763 3.642 3.624 3.643 3.632 3.540 3.358 3.143 2.996
+ 5.386 5.420 5.326 4.969 4.434 4.011 3.981 4.373 4.925 5.283 5.278 5.028 4.805 4.777 4.880 4.908 4.731 4.440 4.275 4.428 4.867 5.353 5.612 5.505 5.093 4.557 4.073 3.737 3.566 3.532 3.579 3.634 3.626 3.525 3.373 3.259
+ 4.004 4.402 4.934 5.272 5.252 4.954 4.605 4.398 4.395 4.561 4.822 5.094 5.253 5.146 4.696 4.024 3.449 3.309 3.716 4.443 5.065 5.264 5.038 4.660 4.418 4.388 4.423 4.344 4.128 3.911 3.819 3.807 3.683 3.315 2.795 2.411
+ 4.734 5.394 6.254 6.711 6.424 5.533 4.540 3.970 4.058 4.643 5.312 5.669 5.536 5.006 4.355 3.878 3.754 3.986 4.418 4.839 5.093 5.146 5.069 4.945 4.785 4.532 4.142 3.674 3.295 3.163 3.283 3.475 3.489 3.207 2.751 2.406
+ 5.036 5.496 5.983 6.025 5.523 4.817 4.356 4.304 4.457 4.508 4.370 4.237 4.324 4.595 4.765 4.598 4.180 3.885 4.032 4.570 5.091 5.192 4.824 4.318 4.056 4.123 4.269 4.191 3.858 3.524 3.451 3.614 3.710 3.467 2.944 2.509
+ 3.832 4.354 5.026 5.378 5.163 4.495 3.707 3.111 2.842 2.877 3.144 3.567 4.029 4.346 4.337 3.985 3.515 3.296 3.579 4.305 5.126 5.647 5.688 5.360 4.916 4.538 4.242 3.961 3.684 3.500 3.500 3.663 3.846 3.906 3.829 3.729
+ 4.860 4.748 4.567 4.383 4.271 4.280 4.410 4.601 4.747 4.744 4.548 4.213 3.868 3.652 3.632 3.767 3.949 4.092 4.198 4.347 4.612 4.972 5.295 5.420 5.271 4.926 4.571 4.380 4.407 4.567 4.708 4.717 4.578 4.357 4.150 4.029
+ 5.859 5.854 5.713 5.362 4.946 4.769 5.037 5.628 6.125 6.126 5.555 4.729 4.115 3.984 4.258 4.635 4.851 4.851 4.747 4.672 4.671 4.726 4.819 4.940 5.037 4.995 4.728 4.311 3.998 4.049 4.482 4.984 5.113 4.653 3.838 3.208
+ 6.884 6.636 6.233 5.844 5.650 5.727 5.974 6.148 6.038 5.646 5.201 4.973 5.035 5.179 5.093 4.652 4.063 3.722 3.886 4.456 5.053 5.326 5.220 4.972 4.862 4.957 5.086 5.040 4.786 4.483 4.304 4.243 4.124 3.798 3.330 2.979
+ 8.097 7.947 7.715 7.492 7.335 7.231 7.108 6.891 6.568 6.200 5.880 5.648 5.459 5.213 4.853 4.437 4.124 4.072 4.337 4.835 5.406 5.919 6.318 6.595 6.728 6.672 6.417 6.054 5.763 5.689 5.817 5.949 5.838 5.395 4.790 4.355
+ 7.685 7.338 6.878 6.602 6.654 6.915 7.088 6.910 6.336 5.571 4.929 4.621 4.639 4.797 4.886 4.826 4.701 4.668 4.839 5.218 5.729 6.285 6.817 7.255 7.502 7.452 7.075 6.479 5.883 5.492 5.359 5.349 5.252 4.954 4.543 4.243
+ 7.939 7.467 6.891 6.637 6.829 7.181 7.234 6.731 5.825 4.964 4.547 4.643 4.986 5.210 5.137 4.871 4.672 4.741 5.099 5.627 6.203 6.781 7.360 7.892 8.245 8.274 7.935 7.350 6.747 6.312 6.071 5.894 5.614 5.172 4.680 4.352
+ 6.586 6.921 7.370 7.690 7.809 7.825 7.816 7.694 7.272 6.503 5.629 5.053 5.020 5.385 5.714 5.654 5.246 4.893 5.012 5.683 6.589 7.297 7.593 7.577 7.476 7.392 7.245 6.941 6.549 6.279 6.258 6.355 6.255 5.761 5.021 4.466
+ 10.225 9.840 9.118 8.232 7.513 7.283 7.605 8.158 8.417 8.024 7.063 5.997 5.306 5.136 5.260 5.341 5.255 5.180 5.386 5.960 6.722 7.385 7.797 8.003 8.111 8.123 7.918 7.425 6.770 6.239 6.053 6.175 6.339 6.298 6.045 5.804
+ 11.661 11.266 10.771 10.486 10.440 10.354 9.910 9.075 8.178 7.656 7.676 7.980 8.071 7.609 6.671 5.679 5.077 5.020 5.330 5.699 5.954 6.145 6.429 6.870 7.344 7.625 7.551 7.141 6.573 6.066 5.763 5.684 5.760 5.898 6.024 6.095
+ 10.902 10.688 10.419 10.257 10.213 10.120 9.796 9.219 8.582 8.149 8.035 8.107 8.086 7.777 7.231 6.699 6.424 6.448 6.606 6.696 6.675 6.705 6.990 7.550 8.148 8.432 8.212 7.627 7.060 6.854 7.040 7.312 7.267 6.737 5.944 5.360
+ 10.593 10.469 10.410 10.550 10.760 10.700 10.137 9.206 8.359 8.000 8.142 8.414 8.404 8.043 7.653 7.621 8.006 8.448 8.485 7.985 7.300 6.983 7.314 8.051 8.611 8.529 7.813 6.912 6.361 6.395 6.829 7.249 7.318 6.987 6.476 6.109
+ 11.832 11.905 12.052 12.186 12.093 11.555 10.556 9.383 8.480 8.141 8.294 8.586 8.688 8.554 8.404 8.447 8.631 8.664 8.310 7.666 7.149 7.164 7.741 8.459 8.750 8.343 7.466 6.677 6.443 6.822 7.462 7.881 7.789 7.239 6.545 6.078
+ 7.690 7.944 8.391 8.881 9.193 9.135 8.668 7.962 7.295 6.861 6.641 6.459 6.172 5.838 5.698 5.970 6.634 7.394 7.865 7.847 7.456 7.027 6.856 7.000 7.278 7.446 7.392 7.201 7.057 7.085 7.255 7.423 7.450 7.299 7.061 6.887
+ 8.226 8.077 7.918 7.901 8.062 8.280 8.375 8.245 7.937 7.595 7.350 7.244 7.241 7.301 7.415 7.588 7.794 7.963 8.048 8.088 8.207 8.518 8.996 9.441 9.583 9.275 8.628 7.983 7.708 7.968 8.614 9.278 9.609 9.491 9.103 8.781
+ 8.217 7.987 7.736 7.690 7.890 8.150 8.218 7.975 7.509 7.014 6.623 6.346 6.145 6.038 6.112 6.413 6.843 7.185 7.271 7.133 7.002 7.122 7.533 8.021 8.276 8.140 7.730 7.353 7.275 7.544 7.984 8.339 8.447 8.314 8.079 7.908
+ 7.925 7.893 7.995 8.299 8.549 8.294 7.300 5.867 4.698 4.381 4.908 5.690 6.049 5.788 5.322 5.267 5.873 6.798 7.414 7.356 6.808 6.310 6.284 6.706 7.204 7.436 7.380 7.308 7.493 7.952 8.432 8.634 8.432 7.943 7.417 7.089
+ 9.790 9.160 8.351 7.875 7.882 8.069 8.003 7.517 6.847 6.378 6.297 6.456 6.563 6.484 6.341 6.352 6.584 6.889 7.079 7.133 7.214 7.474 7.850 8.093 8.010 7.693 7.487 7.696 8.313 9.004 9.386 9.333 9.036 8.790 8.731 8.772
+ 8.772 8.929 8.999 8.735 8.144 7.511 7.172 7.227 7.449 7.480 7.128 6.520 5.980 5.767 5.887 6.138 6.306 6.331 6.309 6.359 6.499 6.641 6.693 6.655 6.622 6.703 6.948 7.329 7.779 8.221 8.570 8.732 8.638 8.311 7.897 7.611
+ 6.731 7.325 8.085 8.490 8.324 7.780 7.234 6.917 6.778 6.623 6.354 6.061 5.889 5.865 5.864 5.768 5.623 5.629 5.935 6.461 6.924 7.067 6.879 6.600 6.506 6.684 7.011 7.321 7.586 7.898 8.288 8.589 8.526 7.976 7.164 6.565
+ 6.903 7.237 7.653 7.811 7.505 6.791 5.951 5.321 5.103 5.276 5.626 5.892 5.897 5.638 5.263 4.979 4.933 5.135 5.471 5.790 6.007 6.145 6.287 6.477 6.658 6.722 6.623 6.462 6.440 6.703 7.190 7.630 7.720 7.358 6.751 6.294
+ 5.739 5.847 6.020 6.182 6.249 6.156 5.894 5.520 5.134 4.835 4.673 4.628 4.637 4.655 4.691 4.802 5.034 5.360 5.666 5.816 5.746 5.516 5.284 5.206 5.339 5.620 5.928 6.177 6.361 6.523 6.679 6.782 6.757 6.581 6.332 6.151
+ 9.270 8.871 8.161 7.274 6.341 5.477 4.797 4.419 4.427 4.798 5.370 5.890 6.148 6.100 5.887 5.730 5.763 5.929 6.030 5.879 5.463 4.973 4.680 4.761 5.180 5.728 6.170 6.391 6.438 6.444 6.501 6.597 6.648 6.594 6.462 6.352
+ 7.125 7.209 7.149 6.716 5.936 5.112 4.607 4.568 4.832 5.088 5.134 5.004 4.888 4.926 5.101 5.281 5.360 5.343 5.302 5.285 5.276 5.251 5.231 5.282 5.425 5.597 5.692 5.685 5.687 5.851 6.209 6.586 6.708 6.436 5.918 5.512
+ 4.577 5.488 6.440 6.472 5.397 3.973 3.248 3.669 4.745 5.518 5.399 4.621 3.952 3.983 4.656 5.395 5.667 5.417 5.031 4.919 5.163 5.518 5.711 5.693 5.626 5.665 5.797 5.891 5.878 5.837 5.892 6.051 6.169 6.099 5.862 5.649
+ 5.979 6.840 7.951 8.589 8.470 7.892 7.377 7.183 7.142 6.924 6.430 5.926 5.777 6.084 6.573 6.842 6.719 6.374 6.106 6.034 6.004 5.798 5.406 5.074 5.069 5.412 5.839 6.049 5.979 5.834 5.852 6.047 6.189 6.058 5.686 5.362
+ 9.770 9.687 9.629 9.699 9.881 9.995 9.801 9.167 8.183 7.138 6.354 6.002 6.019 6.186 6.282 6.220 6.041 5.828 5.607 5.340 5.007 4.676 4.487 4.543 4.809 5.111 5.261 5.203 5.059 5.019 5.179 5.454 5.649 5.630 5.439 5.262
+ 7.877 7.160 6.269 5.827 6.012 6.425 6.460 5.823 4.776 3.897 3.616 3.907 4.394 4.696 4.711 4.597 4.535 4.541 4.486 4.278 3.995 3.829 3.914 4.202 4.525 4.744 4.861 4.979 5.171 5.416 5.633 5.783 5.909 6.074 6.270 6.412
+ 4.383 4.155 3.988 4.204 4.866 5.670 6.134 5.954 5.237 4.450 4.088 4.328 4.912 5.356 5.320 4.845 4.291 4.033 4.177 4.510 4.714 4.644 4.436 4.356 4.559 4.943 5.252 5.302 5.138 4.979 5.010 5.226 5.447 5.501 5.383 5.247
+ 5.441 5.049 4.599 4.486 4.847 5.451 5.883 5.862 5.437 4.908 4.582 4.543 4.642 4.664 4.524 4.319 4.215 4.286 4.455 4.569 4.543 4.433 4.389 4.531 4.853 5.223 5.475 5.512 5.355 5.115 4.922 4.864 4.954 5.139 5.334 5.457
+ 5.255 4.554 3.689 3.315 3.702 4.533 5.161 5.096 4.364 3.455 2.942 3.081 3.674 4.277 4.543 4.437 4.189 4.068 4.176 4.415 4.603 4.630 4.516 4.362 4.251 4.204 4.192 4.193 4.220 4.298 4.431 4.579 4.683 4.711 4.681 4.644
+ 5.414 5.063 4.606 4.345 4.403 4.654 4.846 4.807 4.558 4.262 4.068 4.004 3.993 3.958 3.898 3.872 3.931 4.065 4.224 4.375 4.526 4.699 4.871 4.973 4.942 4.782 4.583 4.450 4.435 4.510 4.614 4.715 4.827 4.973 5.133 5.242
+ 4.715 4.726 4.786 4.899 4.982 4.896 4.572 4.088 3.646 3.430 3.481 3.690 3.902 4.042 4.138 4.249 4.382 4.487 4.527 4.545 4.629 4.818 5.039 5.149 5.067 4.855 4.676 4.654 4.766 4.872 4.858 4.751 4.693 4.801 5.038 5.235
+ 5.854 5.687 5.560 5.651 5.879 5.925 5.516 4.713 3.923 3.595 3.854 4.391 4.712 4.541 4.024 3.581 3.543 3.895 4.324 4.514 4.406 4.205 4.161 4.323 4.497 4.433 4.058 3.553 3.222 3.253 3.576 3.920 4.012 3.772 3.354 3.039
+ 4.241 4.573 4.963 5.117 4.971 4.708 4.525 4.435 4.292 4.022 3.777 3.818 4.226 4.734 4.904 4.524 3.841 3.388 3.523 4.113 4.642 4.687 4.290 3.902 3.944 4.406 4.864 4.887 4.437 3.890 3.658 3.800 4.002 3.918 3.531 3.169
+ 5.760 4.901 3.762 3.045 3.054 3.538 3.986 4.104 4.020 4.088 4.489 5.023 5.275 4.987 4.299 3.638 3.376 3.552 3.905 4.130 4.141 4.094 4.197 4.504 4.871 5.093 5.076 4.889 4.673 4.511 4.374 4.179 3.879 3.513 3.178 2.980
+ 4.397 4.034 3.677 3.739 4.307 5.049 5.471 5.304 4.706 4.113 3.894 4.095 4.464 4.702 4.699 4.580 4.545 4.681 4.911 5.092 5.149 5.123 5.103 5.126 5.148 5.097 4.949 4.749 4.570 4.444 4.351 4.246 4.104 3.941 3.798 3.715
+ 6.130 5.889 5.566 5.352 5.322 5.373 5.315 5.028 4.567 4.133 3.935 4.041 4.344 4.646 4.795 4.768 4.638 4.492 4.360 4.230 4.111 4.075 4.207 4.517 4.887 5.116 5.062 4.751 4.371 4.134 4.121 4.223 4.245 4.069 3.762 3.523
+ 4.518 4.262 3.991 3.958 4.192 4.465 4.501 4.236 3.898 3.806 4.080 4.508 4.696 4.394 3.713 3.058 2.825 3.111 3.658 4.068 4.104 3.838 3.551 3.490 3.686 3.955 4.068 3.929 3.629 3.355 3.240 3.283 3.382 3.433 3.413 3.374
+ 4.848 4.483 4.059 3.922 4.164 4.544 4.707 4.500 4.112 3.913 4.128 4.621 4.980 4.839 4.175 3.350 2.853 2.953 3.530 4.181 4.519 4.414 4.029 3.648 3.461 3.467 3.543 3.577 3.561 3.562 3.635 3.753 3.836 3.821 3.728 3.642
+ 4.869 4.199 3.325 2.820 2.939 3.472 3.972 4.134 4.007 3.873 3.934 4.113 4.139 3.835 3.327 2.989 3.144 3.783 4.544 4.969 4.829 4.273 3.696 3.442 3.587 3.947 4.264 4.405 4.418 4.441 4.545 4.675 4.707 4.574 4.341 4.160
+ 4.782 5.045 5.328 5.328 4.923 4.279 3.751 3.632 3.946 4.432 4.745 4.712 4.449 4.234 4.258 4.449 4.544 4.339 3.910 3.592 3.712 4.301 5.019 5.387 5.143 4.442 3.737 3.442 3.650 4.119 4.502 4.606 4.486 4.317 4.223 4.201
+ 4.474 4.660 4.963 5.243 5.328 5.106 4.626 4.109 3.846 4.005 4.521 5.120 5.491 5.462 5.066 4.470 3.858 3.364 3.080 3.075 3.377 3.909 4.475 4.836 4.856 4.600 4.292 4.157 4.270 4.523 4.733 4.780 4.678 4.524 4.406 4.350
+ 5.692 5.716 5.680 5.495 5.168 4.816 4.598 4.596 4.747 4.883 4.844 4.586 4.212 3.899 3.784 3.887 4.111 4.314 4.396 4.344 4.221 4.120 4.100 4.170 4.301 4.453 4.613 4.795 5.022 5.288 5.545 5.721 5.758 5.662 5.503 5.385
+ 5.016 5.147 5.320 5.406 5.302 4.995 4.568 4.157 3.874 3.747 3.712 3.671 3.574 3.466 3.464 3.668 4.075 4.551 4.896 4.961 4.739 4.376 4.076 3.990 4.139 4.430 4.738 4.989 5.186 5.374 5.570 5.740 5.825 5.799 5.702 5.619
+ 5.095 4.783 4.434 4.309 4.386 4.377 4.030 3.420 2.928 2.907 3.363 3.940 4.249 4.205 4.075 4.182 4.572 4.960 5.010 4.660 4.188 3.952 4.067 4.328 4.450 4.369 4.306 4.545 5.136 5.821 6.246 6.254 5.984 5.702 5.567 5.547
+ 4.870 5.057 5.395 5.715 5.711 5.142 4.104 3.090 2.679 3.065 3.863 4.406 4.310 3.805 3.506 3.827 4.573 5.115 4.986 4.339 3.830 4.013 4.818 5.606 5.749 5.206 4.560 4.484 5.149 6.101 6.681 6.587 6.049 5.533 5.301 5.277
+ 6.403 5.463 4.293 3.731 4.079 4.897 5.417 5.184 4.387 3.639 3.444 3.818 4.370 4.680 4.629 4.411 4.276 4.307 4.412 4.493 4.578 4.770 5.089 5.391 5.479 5.301 5.036 4.977 5.291 5.871 6.402 6.582 6.314 5.740 5.136 4.760
+ 6.773 6.252 5.449 4.716 4.338 4.389 4.711 5.025 5.108 4.919 4.600 4.361 4.331 4.485 4.687 4.805 4.800 4.733 4.696 4.753 4.911 5.149 5.443 5.759 6.036 6.195 6.193 6.081 5.995 6.070 6.331 6.658 6.868 6.855 6.679 6.515
+ 4.560 4.607 4.741 4.971 5.217 5.322 5.164 4.764 4.309 4.049 4.138 4.532 5.023 5.372 5.453 5.313 5.114 5.018 5.097 5.312 5.563 5.758 5.856 5.879 5.887 5.938 6.058 6.231 6.409 6.546 6.634 6.703 6.797 6.932 7.080 7.179
+ 5.099 5.636 6.220 6.305 5.771 5.013 4.578 4.689 5.077 5.270 5.031 4.562 4.286 4.431 4.823 5.060 4.890 4.452 4.147 4.282 4.812 5.391 5.680 5.612 5.403 5.334 5.513 5.818 6.033 6.031 5.841 5.584 5.363 5.215 5.129 5.089
+ 3.448 4.312 5.297 5.558 4.867 3.781 3.139 3.351 4.100 4.686 4.655 4.148 3.696 3.705 4.115 4.524 4.596 4.359 4.128 4.180 4.511 4.893 5.118 5.182 5.227 5.353 5.502 5.548 5.455 5.335 5.324 5.423 5.486 5.368 5.096 4.865
+ 4.587 4.402 4.216 4.276 4.713 5.423 6.096 6.384 6.130 5.464 4.717 4.191 3.967 3.909 3.841 3.737 3.747 4.028 4.548 5.061 5.293 5.191 4.975 4.954 5.245 5.656 5.862 5.710 5.366 5.164 5.287 5.569 5.631 5.233 4.531 3.982
+ 5.775 5.745 5.776 5.912 6.050 6.007 5.728 5.382 5.232 5.358 5.504 5.258 4.424 3.272 2.394 2.269 2.885 3.757 4.318 4.355 4.095 3.930 4.034 4.235 4.235 3.936 3.549 3.404 3.641 4.091 4.426 4.442 4.185 3.862 3.638 3.545
+ 5.867 5.727 5.525 5.321 5.082 4.732 4.291 3.931 3.868 4.144 4.532 4.674 4.370 3.762 3.238 3.122 3.422 3.855 4.108 4.100 4.002 4.029 4.219 4.420 4.488 4.462 4.547 4.891 5.398 5.759 5.713 5.270 4.707 4.331 4.233 4.272
+ 7.561 7.042 6.366 5.978 6.063 6.425 6.663 6.493 5.958 5.360 5.000 4.946 5.010 4.938 4.632 4.216 3.911 3.840 3.934 4.006 3.934 3.769 3.700 3.897 4.372 4.966 5.456 5.701 5.700 5.547 5.328 5.060 4.717 4.302 3.899 3.645
+ 8.977 8.202 7.117 6.320 6.135 6.438 6.819 6.929 6.717 6.387 6.160 6.063 5.922 5.554 4.956 4.331 3.936 3.872 4.019 4.148 4.111 3.951 3.854 3.984 4.356 4.821 5.181 5.314 5.237 5.057 4.889 4.780 4.718 4.667 4.615 4.578
+ 9.248 8.518 7.536 6.878 6.782 7.024 7.189 7.046 6.715 6.470 6.424 6.391 6.079 5.394 4.584 4.057 4.043 4.413 4.798 4.914 4.781 4.666 4.804 5.175 5.523 5.581 5.315 4.950 4.786 4.954 5.319 5.587 5.520 5.104 4.552 4.169
+ 8.487 8.254 7.821 7.305 6.907 6.813 7.041 7.392 7.580 7.454 7.112 6.793 6.637 6.544 6.270 5.690 4.968 4.458 4.419 4.785 5.228 5.434 5.369 5.271 5.403 5.795 6.224 6.422 6.321 6.088 5.929 5.890 5.828 5.594 5.223 4.934
+ 9.033 8.909 8.716 8.531 8.396 8.292 8.141 7.871 7.483 7.065 6.750 6.611 6.606 6.595 6.444 6.130 5.754 5.469 5.369 5.446 5.637 5.903 6.255 6.698 7.151 7.450 7.443 7.123 6.664 6.311 6.206 6.290 6.373 6.300 6.090 5.908
+ 8.821 8.652 8.443 8.341 8.387 8.475 8.440 8.189 7.773 7.353 7.082 7.013 7.082 7.172 7.193 7.117 6.968 6.792 6.641 6.569 6.625 6.826 7.133 7.455 7.683 7.748 7.648 7.436 7.185 6.952 6.774 6.668 6.642 6.685 6.760 6.815
+ 8.702 8.432 8.035 7.698 7.526 7.497 7.513 7.505 7.472 7.457 7.460 7.414 7.228 6.886 6.489 6.202 6.130 6.234 6.352 6.331 6.152 5.956 5.938 6.190 6.626 7.039 7.255 7.257 7.174 7.164 7.270 7.388 7.355 7.103 6.735 6.466
+ 9.071 8.349 7.411 6.857 6.913 7.319 7.620 7.595 7.401 7.351 7.546 7.745 7.598 7.015 6.309 5.949 6.146 6.635 6.879 6.526 5.723 5.027 4.967 5.637 6.625 7.344 7.458 7.093 6.674 6.564 6.793 7.074 7.055 6.611 5.952 5.471
+ 8.917 8.376 7.685 7.308 7.413 7.768 7.973 7.815 7.435 7.172 7.230 7.487 7.600 7.322 6.745 6.232 6.115 6.405 6.778 6.851 6.514 6.031 5.820 6.101 6.708 7.216 7.287 6.936 6.501 6.347 6.545 6.804 6.713 6.098 5.206 4.555
+ 8.975 8.984 8.935 8.756 8.439 8.050 7.680 7.393 7.209 7.128 7.150 7.249 7.346 7.325 7.105 6.713 6.287 5.985 5.881 5.936 6.077 6.288 6.614 7.058 7.483 7.651 7.401 6.835 6.303 6.170 6.510 7.020 7.232 6.896 6.199 5.642
+ 8.231 7.865 7.399 7.176 7.356 7.780 8.065 7.854 7.072 5.989 5.048 4.582 4.632 4.970 5.317 5.544 5.709 5.930 6.218 6.451 6.504 6.400 6.324 6.466 6.830 7.201 7.320 7.115 6.780 6.613 6.737 6.970 6.974 6.557 5.883 5.369
+ 7.668 6.219 4.672 4.538 6.168 8.455 9.788 9.369 7.760 6.248 5.705 5.978 6.276 6.063 5.566 5.453 6.075 7.069 7.695 7.550 6.958 6.650 7.072 7.987 8.722 8.794 8.321 7.856 7.861 8.331 8.877 9.116 8.974 8.653 8.382 8.253
+ 9.639 8.821 7.763 7.172 7.358 8.047 8.655 8.753 8.337 7.727 7.252 7.020 6.937 6.887 6.859 6.901 7.011 7.107 7.114 7.081 7.156 7.438 7.846 8.167 8.250 8.163 8.153 8.422 8.923 9.381 9.520 9.291 8.897 8.598 8.501 8.517
+ 8.316 8.301 8.375 8.621 8.970 9.198 9.076 8.555 7.822 7.182 6.856 6.847 6.974 7.034 6.946 6.788 6.704 6.790 7.031 7.344 7.641 7.883 8.072 8.222 8.344 8.447 8.547 8.659 8.775 8.861 8.873 8.792 8.638 8.460 8.312 8.230
+ 8.346 8.053 7.760 7.795 8.216 8.721 8.850 8.338 7.349 6.389 5.971 6.265 6.998 7.667 7.896 7.665 7.268 7.049 7.156 7.481 7.818 8.059 8.272 8.595 9.060 9.522 9.761 9.659 9.305 8.932 8.736 8.751 8.849 8.888 8.830 8.755
+ 8.669 7.807 6.789 6.442 7.037 8.085 8.760 8.562 7.681 6.779 6.432 6.716 7.246 7.571 7.536 7.325 7.216 7.310 7.496 7.626 7.697 7.858 8.243 8.810 9.352 9.656 9.660 9.472 9.256 9.099 8.984 8.849 8.669 8.477 8.324 8.244
+ 6.149 6.162 6.364 6.901 7.678 8.357 8.597 8.303 7.698 7.141 6.874 6.904 7.079 7.245 7.325 7.286 7.086 6.718 6.299 6.091 6.355 7.125 8.123 8.905 9.179 9.010 8.734 8.669 8.853 9.053 9.018 8.720 8.375 8.221 8.299 8.433
+ 6.934 7.049 7.306 7.703 8.145 8.453 8.452 8.096 7.523 6.990 6.730 6.817 7.134 7.469 7.653 7.645 7.520 7.386 7.306 7.308 7.426 7.725 8.250 8.942 9.600 9.967 9.895 9.464 8.950 8.640 8.635 8.789 8.836 8.623 8.235 7.931
+ 6.033 6.267 6.791 7.588 8.464 9.085 9.179 8.741 8.056 7.501 7.284 7.315 7.326 7.119 6.746 6.462 6.508 6.904 7.438 7.849 8.043 8.163 8.446 8.997 9.667 10.144 10.172 9.746 9.114 8.605 8.412 8.496 8.664 8.739 8.690 8.613
+ 5.301 5.256 5.396 5.949 6.885 7.851 8.387 8.245 7.577 6.825 6.410 6.460 6.763 6.971 6.881 6.561 6.269 6.233 6.504 6.960 7.455 7.936 8.445 9.014 9.557 9.887 9.838 9.404 8.769 8.202 7.888 7.835 7.910 7.967 7.951 7.911
+ 6.528 6.560 6.620 6.707 6.826 6.964 7.067 7.051 6.865 6.556 6.283 6.234 6.489 6.931 7.289 7.303 6.909 6.314 5.880 5.912 6.474 7.363 8.246 8.849 9.082 9.021 8.798 8.505 8.171 7.821 7.537 7.448 7.650 8.109 8.642 8.998
+ 6.300 6.143 5.998 6.063 6.388 6.814 7.074 6.989 6.613 6.205 6.046 6.230 6.595 6.848 6.791 6.471 6.153 6.118 6.473 7.090 7.732 8.228 8.565 8.823 9.038 9.132 8.976 8.531 7.932 7.429 7.230 7.371 7.709 8.049 8.271 8.366
+ 4.483 4.696 5.160 5.847 6.569 7.032 7.030 6.617 6.099 5.839 5.997 6.432 6.826 6.925 6.718 6.410 6.252 6.372 6.734 7.229 7.783 8.386 9.034 9.655 10.101 10.222 9.963 9.405 8.728 8.132 7.771 7.715 7.937 8.331 8.736 8.991
+ 2.875 3.069 3.566 4.431 5.513 6.425 6.742 6.294 5.338 4.455 4.201 4.751 5.789 6.744 7.194 7.140 6.944 6.994 7.389 7.891 8.180 8.164 8.063 8.195 8.652 9.179 9.372 9.027 8.336 7.751 7.622 7.940 8.380 8.609 8.556 8.420
+ 4.157 4.405 4.903 5.606 6.369 6.939 7.050 6.591 5.732 4.900 4.555 4.903 5.746 6.606 7.062 7.032 6.797 6.731 6.983 7.380 7.629 7.616 7.529 7.668 8.128 8.667 8.890 8.607 8.020 7.567 7.541 7.835 8.047 7.862 7.350 6.910
+ 4.483 4.744 5.261 5.943 6.546 6.741 6.297 5.294 4.158 3.471 3.636 4.615 5.943 7.003 7.397 7.153 6.630 6.237 6.165 6.344 6.599 6.844 7.132 7.533 7.980 8.261 8.183 7.765 7.275 7.033 7.154 7.439 7.537 7.242 6.686 6.247
+ 5.669 5.475 5.323 5.475 5.983 6.635 7.125 7.281 7.161 6.945 6.748 6.537 6.216 5.786 5.403 5.266 5.435 5.764 6.002 6.007 5.861 5.804 6.027 6.512 7.037 7.343 7.308 7.014 6.659 6.405 6.288 6.235 6.150 5.996 5.817 5.695
+ 5.732 5.682 5.699 5.896 6.254 6.616 6.807 6.770 6.595 6.417 6.292 6.156 5.912 5.533 5.096 4.707 4.408 4.171 3.965 3.848 3.942 4.327 4.937 5.562 5.982 6.111 6.036 5.926 5.890 5.911 5.894 5.775 5.574 5.370 5.226 5.160
+ 5.882 6.401 7.222 8.022 8.514 8.556 8.165 7.480 6.698 6.016 5.577 5.424 5.484 5.606 5.655 5.583 5.441 5.303 5.182 5.018 4.752 4.419 4.153 4.095 4.265 4.529 4.701 4.692 4.583 4.528 4.597 4.682 4.583 4.205 3.678 3.294
+ 7.632 7.720 8.046 8.693 9.483 10.017 9.967 9.343 8.503 7.874 7.646 7.694 7.770 7.764 7.768 7.892 8.061 8.000 7.480 6.573 5.680 5.264 5.510 6.193 6.864 7.169 7.054 6.698 6.295 5.903 5.458 4.919 4.346 3.866 3.560 3.426
+ 7.840 7.907 8.262 9.048 10.051 10.762 10.756 10.050 9.094 8.406 8.187 8.259 8.355 8.414 8.594 8.984 9.353 9.250 8.405 7.072 5.937 5.637 6.277 7.364 8.207 8.425 8.125 7.661 7.242 6.779 6.068 5.088 4.082 3.359 3.029 2.954
+ 8.232 8.188 8.391 9.068 10.049 10.801 10.846 10.159 9.189 8.476 8.242 8.318 8.438 8.553 8.817 9.289 9.676 9.475 8.433 6.890 5.657 5.435 6.288 7.595 8.544 8.724 8.321 7.810 7.478 7.217 6.744 5.956 5.061 4.384 4.066 3.993
+ 8.388 8.328 8.494 9.115 10.032 10.732 10.739 10.019 9.005 8.248 7.997 8.105 8.292 8.452 8.693 9.071 9.354 9.113 8.112 6.647 5.454 5.211 6.029 7.370 8.448 8.777 8.415 7.753 7.109 6.515 5.834 5.021 4.235 3.701 3.486 3.459
+ 8.389 8.377 8.598 9.236 10.118 10.744 10.656 9.820 8.671 7.787 7.478 7.644 7.980 8.281 8.541 8.790 8.883 8.532 7.588 6.302 5.279 5.089 5.842 7.088 8.120 8.446 8.041 7.234 6.382 5.641 4.980 4.354 3.818 3.472 3.336 3.320
+ 8.464 8.574 8.880 9.404 9.965 10.229 9.935 9.117 8.110 7.336 7.039 7.181 7.551 7.946 8.260 8.426 8.333 7.854 6.996 6.012 5.330 5.291 5.904 6.809 7.503 7.654 7.268 6.608 5.959 5.451 5.045 4.655 4.252 3.884 3.617 3.482
+ 8.285 8.499 8.901 9.374 9.680 9.565 8.944 8.009 7.142 6.679 6.698 7.016 7.375 7.641 7.839 8.009 8.059 7.782 7.060 6.063 5.233 5.023 5.565 6.544 7.384 7.617 7.159 6.309 5.503 5.010 4.811 4.683 4.408 3.939 3.418 3.076
+ 8.142 8.477 8.938 9.196 8.983 8.271 7.334 6.602 6.370 6.576 6.847 6.811 6.427 6.031 6.025 6.473 6.975 6.970 6.234 5.136 4.396 4.531 5.439 6.476 6.954 6.631 5.814 5.015 4.529 4.279 4.026 3.671 3.349 3.252 3.392 3.566
+ 8.402 8.107 7.754 7.578 7.566 7.471 7.060 6.374 5.728 5.445 5.574 5.858 5.986 5.878 5.734 5.796 6.066 6.254 6.035 5.372 4.608 4.226 4.469 5.154 5.812 6.038 5.746 5.158 4.583 4.193 3.972 3.822 3.680 3.552 3.467 3.431
+ 7.672 7.155 6.688 6.854 7.669 8.513 8.640 7.814 6.498 5.450 5.113 5.333 5.619 5.640 5.475 5.427 5.626 5.846 5.715 5.094 4.240 3.611 3.481 3.755 4.106 4.289 4.311 4.320 4.390 4.420 4.274 3.966 3.692 3.645 3.822 4.015
+ 7.575 7.119 6.680 6.748 7.337 7.930 7.906 7.065 5.782 4.672 4.103 3.993 4.026 4.027 4.110 4.466 5.054 5.527 5.502 4.918 4.125 3.620 3.652 4.057 4.448 4.556 4.407 4.200 4.064 3.949 3.736 3.429 3.194 3.192 3.399 3.606
+ 7.251 6.654 6.076 6.170 6.992 7.891 8.014 7.018 5.356 3.930 3.404 3.763 4.442 4.846 4.791 4.530 4.413 4.541 4.725 4.718 4.470 4.157 3.992 4.022 4.109 4.087 3.923 3.735 3.661 3.725 3.826 3.831 3.690 3.454 3.225 3.091
+ 6.899 6.344 5.707 5.515 5.880 6.405 6.525 5.994 5.081 4.336 4.150 4.490 5.008 5.360 5.449 5.388 5.294 5.149 4.854 4.397 3.934 3.684 3.735 3.970 4.172 4.213 4.136 4.070 4.070 4.057 3.904 3.576 3.177 2.860 2.697 2.651
+ 7.180 6.566 5.897 5.794 6.380 7.165 7.450 6.905 5.815 4.819 4.390 4.523 4.846 5.004 4.928 4.789 4.740 4.724 4.549 4.114 3.556 3.159 3.124 3.420 3.842 4.189 4.397 4.501 4.514 4.382 4.047 3.559 3.082 2.778 2.683 2.692
+ 7.848 7.344 6.690 6.293 6.294 6.477 6.499 6.191 5.691 5.292 5.185 5.327 5.530 5.644 5.657 5.617 5.513 5.250 4.760 4.137 3.618 3.424 3.582 3.908 4.162 4.233 4.184 4.134 4.106 4.006 3.744 3.361 3.030 2.903 2.975 3.088
+ 8.820 7.832 6.586 5.957 6.284 7.158 7.819 7.782 7.170 6.513 6.263 6.461 6.798 6.940 6.774 6.395 5.928 5.413 4.864 4.386 4.159 4.275 4.592 4.794 4.647 4.216 3.829 3.791 4.117 4.515 4.652 4.435 4.060 3.805 3.769 3.831
+ 9.561 8.603 7.291 6.396 6.318 6.886 7.578 7.960 7.940 7.713 7.504 7.392 7.327 7.268 7.231 7.218 7.126 6.790 6.153 5.395 4.850 4.750 5.012 5.279 5.201 4.721 4.112 3.741 3.772 4.053 4.284 4.264 4.022 3.732 3.533 3.451
+ 9.297 8.576 7.489 6.564 6.221 6.570 7.362 8.150 8.539 8.409 7.962 7.578 7.558 7.917 8.362 8.470 7.977 6.965 5.845 5.108 5.023 5.466 6.001 6.159 5.727 4.865 3.977 3.446 3.407 3.705 4.029 4.117 3.884 3.435 2.970 2.683
+ 9.038 8.453 7.621 6.996 6.863 7.200 7.747 8.204 8.395 8.317 8.092 7.884 7.843 8.038 8.395 8.685 8.611 8.000 6.967 5.903 5.254 5.213 5.577 5.881 5.739 5.109 4.310 3.755 3.651 3.868 4.079 4.007 3.599 3.010 2.469 2.156
+ 8.786 8.143 7.307 6.834 6.981 7.570 8.191 8.526 8.524 8.326 8.082 7.872 7.741 7.750 7.915 8.090 7.971 7.316 6.208 5.113 4.595 4.877 5.615 6.137 5.953 5.140 4.255 3.864 4.088 4.546 4.720 4.376 3.700 3.063 2.694 2.568
+ 8.438 7.567 6.481 5.970 6.353 7.282 8.080 8.275 7.900 7.340 6.958 6.842 6.867 6.907 6.956 7.039 7.069 6.862 6.325 5.626 5.124 5.086 5.419 5.716 5.574 4.947 4.188 3.767 3.886 4.338 4.694 4.644 4.190 3.572 3.052 2.774
+ 8.216 7.241 6.102 5.732 6.404 7.537 8.223 7.977 7.067 6.187 5.841 5.994 6.254 6.317 6.213 6.169 6.277 6.368 6.210 5.796 5.401 5.329 5.590 5.872 5.825 5.393 4.865 4.582 4.604 4.658 4.420 3.843 3.203 2.830 2.802 2.909
+ 8.901 7.603 5.966 5.141 5.580 6.744 7.611 7.503 6.545 5.438 4.840 4.911 5.346 5.738 5.889 5.823 5.607 5.256 4.809 4.452 4.451 4.910 5.596 6.051 5.943 5.358 4.728 4.453 4.552 4.670 4.431 3.794 3.087 2.681 2.661 2.786
+ 5.865 5.740 5.536 5.354 5.318 5.494 5.802 6.021 5.927 5.468 4.842 4.377 4.299 4.553 4.847 4.873 4.540 4.034 3.664 3.640 3.938 4.360 4.683 4.781 4.650 4.351 3.966 3.591 3.329 3.241 3.279 3.277 3.052 2.553 1.945 1.524
+ 7.516 6.534 5.269 4.555 4.719 5.381 5.842 5.685 5.079 4.564 4.543 4.961 5.404 5.493 5.185 4.739 4.441 4.365 4.391 4.395 4.407 4.551 4.862 5.179 5.241 4.909 4.301 3.709 3.382 3.350 3.439 3.429 3.217 2.859 2.504 2.290
+ 8.239 7.196 5.771 4.773 4.565 4.877 5.125 4.939 4.408 3.903 3.684 3.683 3.648 3.451 3.247 3.309 3.726 4.266 4.549 4.371 3.884 3.458 3.363 3.559 3.766 3.725 3.415 3.031 2.796 2.775 2.857 2.883 2.779 2.587 2.400 2.291
+ 6.485 5.857 4.962 4.262 4.015 4.128 4.286 4.221 3.907 3.545 3.376 3.496 3.819 4.180 4.478 4.711 4.902 5.006 4.911 4.532 3.937 3.349 3.022 3.064 3.358 3.644 3.707 3.518 3.230 3.029 2.971 2.939 2.756 2.351 1.849 1.499
+ 3.121 3.599 4.295 4.862 5.080 4.955 4.649 4.332 4.091 3.935 3.866 3.904 4.056 4.261 4.405 4.398 4.253 4.078 3.981 3.972 3.956 3.827 3.578 3.326 3.222 3.321 3.535 3.689 3.649 3.403 3.045 2.693 2.415 2.223 2.101 2.040
+ 4.568 4.536 4.542 4.650 4.824 4.921 4.782 4.348 3.720 3.106 2.699 2.576 2.681 2.891 3.109 3.303 3.486 3.669 3.823 3.899 3.862 3.727 3.561 3.450 3.453 3.568 3.722 3.799 3.699 3.391 2.941 2.487 2.164 2.031 2.044 2.094
+ 6.451 6.172 5.797 5.537 5.444 5.362 5.046 4.375 3.487 2.720 2.405 2.651 3.267 3.879 4.148 3.965 3.487 3.025 2.853 3.057 3.505 3.936 4.120 3.978 3.614 3.231 3.000 2.963 3.025 3.042 2.929 2.714 2.498 2.372 2.347 2.365
+ 5.853 5.292 4.596 4.264 4.470 4.945 5.220 5.009 4.398 3.732 3.328 3.290 3.521 3.878 4.262 4.594 4.763 4.652 4.259 3.765 3.441 3.436 3.635 3.735 3.505 2.991 2.487 2.287 2.438 2.716 2.833 2.678 2.378 2.142 2.066 2.081
+ 8.452 8.288 8.014 7.668 7.232 6.661 5.971 5.284 4.764 4.500 4.447 4.496 4.588 4.757 5.036 5.336 5.448 5.204 4.673 4.181 4.091 4.512 5.201 5.752 5.934 5.851 5.799 5.941 6.127 6.034 5.520 4.824 4.421 4.612 5.236 5.774
+ 9.118 8.997 8.778 8.484 8.119 7.693 7.255 6.873 6.581 6.347 6.137 6.022 6.204 6.866 7.934 8.972 9.392 8.879 7.695 6.567 6.183 6.681 7.570 8.155 8.130 7.796 7.731 8.198 8.854 9.043 8.416 7.307 6.496 6.539 7.282 7.987
+ 7.649 6.827 5.595 4.568 4.231 4.676 5.540 6.210 6.196 5.449 4.431 3.850 4.210 5.458 6.972 7.931 7.832 6.804 5.510 4.691 4.691 5.286 5.926 6.193 6.088 5.961 6.142 6.608 6.972 6.809 6.044 5.063 4.445 4.511 5.074 5.585
+ 6.414 5.447 4.161 3.340 3.327 3.825 4.224 4.127 3.629 3.153 3.052 3.341 3.758 4.037 4.109 4.073 4.024 3.961 3.839 3.688 3.628 3.745 3.972 4.120 4.060 3.865 3.763 3.913 4.230 4.429 4.278 3.812 3.311 3.053 3.081 3.201
+ 5.156 5.032 4.955 5.068 5.293 5.353 5.015 4.334 3.663 3.409 3.725 4.402 5.040 5.332 5.235 4.913 4.553 4.246 4.007 3.870 3.909 4.159 4.522 4.795 4.815 4.603 4.362 4.316 4.529 4.866 5.121 5.187 5.116 5.036 5.019 5.040
+ 5.002 4.986 5.009 5.083 5.109 4.929 4.483 3.922 3.539 3.566 3.981 4.521 4.876 4.927 4.809 4.767 4.931 5.218 5.423 5.414 5.240 5.070 5.035 5.118 5.189 5.137 4.971 4.798 4.725 4.773 4.874 4.948 4.961 4.934 4.904 4.888
+ 5.705 5.237 4.611 4.229 4.320 4.789 5.297 5.502 5.284 4.818 4.438 4.418 4.801 5.395 5.905 6.107 5.966 5.620 5.292 5.183 5.394 5.907 6.603 7.300 7.805 7.981 7.799 7.356 6.838 6.436 6.269 6.340 6.561 6.815 7.015 7.119
+ 5.752 5.788 5.800 5.765 5.751 5.864 6.106 6.312 6.267 5.919 5.490 5.336 5.653 6.270 6.736 6.654 5.996 5.137 4.596 4.683 5.347 6.284 7.187 7.889 8.346 8.531 8.406 7.994 7.452 7.016 6.840 6.867 6.882 6.710 6.385 6.121
+ 5.743 5.171 4.395 3.910 4.015 4.613 5.283 5.569 5.306 4.741 4.360 4.537 5.263 6.154 6.732 6.755 6.359 5.916 5.750 5.940 6.352 6.823 7.297 7.810 8.355 8.804 8.979 8.819 8.464 8.159 8.044 8.025 7.869 7.431 6.834 6.398
+ 7.018 6.696 6.225 5.825 5.626 5.591 5.576 5.446 5.180 4.881 4.714 4.807 5.173 5.685 6.121 6.260 6.019 5.531 5.109 5.080 5.561 6.359 7.067 7.330 7.088 6.608 6.278 6.316 6.620 6.880 6.843 6.508 6.096 5.843 5.808 5.863
+ 6.934 6.897 6.918 7.078 7.334 7.499 7.350 6.789 5.929 5.069 4.543 4.568 5.141 6.040 6.900 7.364 7.238 6.602 5.796 5.262 5.297 5.875 6.645 7.151 7.110 6.586 5.921 5.497 5.493 5.812 6.201 6.440 6.462 6.338 6.186 6.092
+ 8.204 7.489 6.573 6.080 6.267 6.856 7.283 7.142 6.463 5.629 5.045 4.855 4.921 5.013 5.019 4.985 5.003 5.087 5.158 5.150 5.095 5.114 5.307 5.664 6.068 6.382 6.530 6.524 6.413 6.249 6.080 5.965 5.963 6.089 6.281 6.423
+ 7.712 7.512 7.287 7.209 7.269 7.273 7.005 6.432 5.741 5.188 4.913 4.862 4.891 4.913 4.949 5.052 5.200 5.292 5.249 5.112 5.023 5.098 5.309 5.505 5.553 5.459 5.359 5.368 5.466 5.513 5.403 5.188 5.047 5.121 5.368 5.584
+ 5.188 5.410 5.763 6.082 6.177 5.941 5.440 4.905 4.598 4.638 4.923 5.215 5.337 5.300 5.270 5.387 5.627 5.807 5.754 5.461 5.108 4.923 5.009 5.283 5.571 5.743 5.773 5.698 5.536 5.274 4.925 4.585 4.396 4.437 4.637 4.814
+ 5.292 5.661 6.131 6.371 6.225 5.811 5.405 5.218 5.253 5.341 5.316 5.162 5.018 5.031 5.212 5.410 5.435 5.227 4.918 4.744 4.861 5.233 5.651 5.893 5.872 5.678 5.485 5.419 5.469 5.529 5.499 5.359 5.176 5.034 4.968 4.952
+ 5.254 5.866 6.541 6.682 6.178 5.478 5.155 5.380 5.794 5.891 5.506 4.961 4.725 4.958 5.352 5.444 5.059 4.473 4.144 4.295 4.741 5.100 5.165 5.053 5.027 5.182 5.343 5.256 4.872 4.427 4.227 4.372 4.683 4.893 4.901 4.826
+ 5.139 5.291 5.549 5.824 6.004 5.997 5.786 5.450 5.145 5.011 5.090 5.282 5.402 5.302 4.970 4.544 4.222 4.130 4.253 4.475 4.685 4.862 5.061 5.314 5.559 5.658 5.511 5.167 4.818 4.675 4.802 5.066 5.238 5.174 4.933 4.723
+ 6.802 6.199 5.445 5.058 5.191 5.539 5.639 5.280 4.670 4.218 4.175 4.460 4.788 4.942 4.927 4.874 4.851 4.791 4.601 4.316 4.113 4.143 4.365 4.556 4.513 4.247 3.977 3.927 4.103 4.293 4.269 4.004 3.689 3.545 3.612 3.732
+ 4.174 4.605 5.204 5.649 5.792 5.701 5.523 5.328 5.095 4.827 4.631 4.636 4.823 4.964 4.785 4.228 3.562 3.194 3.322 3.747 4.043 3.930 3.526 3.229 3.340 3.779 4.158 4.156 3.813 3.476 3.446 3.678 3.821 3.577 3.018 2.551
+ 3.680 3.760 4.024 4.518 5.092 5.448 5.366 4.916 4.429 4.251 4.460 4.816 4.980 4.810 4.474 4.293 4.439 4.787 5.020 4.909 4.520 4.160 4.139 4.530 5.136 5.646 5.857 5.767 5.518 5.251 5.011 4.758 4.445 4.082 3.749 3.547
+ 5.606 5.158 4.584 4.280 4.424 4.862 5.256 5.354 5.168 4.926 4.874 5.079 5.410 5.654 5.676 5.487 5.196 4.921 4.735 4.672 4.753 4.985 5.338 5.724 6.029 6.164 6.112 5.922 5.672 5.427 5.228 5.099 5.054 5.086 5.159 5.217
+ 6.502 5.978 5.344 5.058 5.235 5.576 5.688 5.459 5.150 5.119 5.464 5.918 6.103 5.870 5.416 5.068 4.967 4.952 4.765 4.351 3.960 3.941 4.417 5.158 5.751 5.925 5.730 5.443 5.305 5.346 5.428 5.412 5.288 5.146 5.062 5.037
+ 5.198 5.126 5.078 5.146 5.312 5.426 5.301 4.865 4.248 3.734 3.602 3.961 4.679 5.467 6.030 6.222 6.088 5.808 5.584 5.534 5.665 5.902 6.153 6.360 6.520 6.668 6.838 7.034 7.229 7.370 7.417 7.359 7.219 7.047 6.897 6.811
+ 5.520 5.136 4.683 4.542 4.869 5.466 5.927 5.926 5.445 4.768 4.275 4.194 4.488 4.928 5.266 5.377 5.285 5.102 4.938 4.862 4.909 5.086 5.372 5.706 5.995 6.161 6.187 6.128 6.077 6.096 6.171 6.225 6.179 6.018 5.807 5.660
+ 5.738 6.221 7.065 8.011 8.711 8.870 8.424 7.604 6.801 6.310 6.142 6.058 5.803 5.323 4.799 4.482 4.473 4.662 4.847 4.916 4.916 4.964 5.098 5.238 5.276 5.210 5.169 5.307 5.648 6.041 6.265 6.184 5.834 5.379 4.991 4.778
+ 5.798 5.837 6.014 6.395 6.876 7.184 7.036 6.351 5.356 4.468 4.050 4.188 4.665 5.130 5.337 5.269 5.095 4.997 5.047 5.203 5.400 5.629 5.911 6.210 6.390 6.289 5.867 5.311 4.945 5.015 5.479 6.004 6.189 5.866 5.241 4.752
+ 6.378 6.227 6.272 6.824 7.781 8.627 8.834 8.292 7.386 6.651 6.349 6.341 6.328 6.179 6.011 5.997 6.129 6.239 6.231 6.269 6.651 7.473 8.413 8.909 8.626 7.777 6.998 6.828 7.282 7.867 8.042 7.677 7.111 6.781 6.816 6.978
+ 6.177 6.310 6.638 7.189 7.861 8.434 8.686 8.517 7.996 7.290 6.581 6.013 5.688 5.655 5.863 6.135 6.237 6.045 5.689 5.518 5.867 6.784 7.942 8.833 9.115 8.830 8.333 7.987 7.904 7.918 7.797 7.478 7.103 6.867 6.827 6.872
+ 5.279 5.591 6.176 6.963 7.822 8.539 8.825 8.442 7.391 6.018 4.883 4.433 4.688 5.219 5.468 5.180 4.596 4.253 4.547 5.441 6.532 7.408 7.946 8.302 8.650 8.944 8.964 8.566 7.888 7.264 6.925 6.775 6.481 5.818 4.936 4.295
+ 5.137 5.344 5.782 6.447 7.245 7.970 8.368 8.267 7.684 6.843 6.046 5.493 5.170 4.903 4.545 4.138 3.915 4.127 4.837 5.849 6.833 7.542 7.932 8.116 8.204 8.209 8.083 7.838 7.592 7.466 7.428 7.247 6.655 5.610 4.426 3.631
+ 4.527 4.989 5.585 5.951 5.982 5.863 5.807 5.809 5.660 5.206 4.585 4.153 4.178 4.571 4.953 5.001 4.749 4.548 4.732 5.303 5.936 6.293 6.313 6.217 6.230 6.334 6.320 6.066 5.738 5.659 5.946 6.291 6.156 5.266 3.948 2.971
+ 3.937 4.404 5.132 5.830 6.277 6.405 6.275 5.979 5.576 5.089 4.553 4.047 3.678 3.516 3.552 3.703 3.869 3.998 4.110 4.283 4.586 5.028 5.521 5.904 6.018 5.802 5.362 4.946 4.810 5.044 5.486 5.793 5.655 5.028 4.195 3.609
+ 5.805 5.767 5.876 6.272 6.830 7.174 6.948 6.123 5.051 4.225 3.924 4.049 4.252 4.233 3.950 3.595 3.396 3.456 3.723 4.096 4.509 4.929 5.300 5.529 5.551 5.410 5.248 5.198 5.280 5.387 5.393 5.269 5.104 5.012 5.022 5.067
+ 6.137 6.407 6.789 7.050 6.993 6.572 5.923 5.303 4.939 4.901 5.057 5.163 5.021 4.602 4.054 3.601 3.412 3.520 3.841 4.238 4.592 4.835 4.945 4.947 4.899 4.884 4.958 5.114 5.260 5.269 5.055 4.632 4.106 3.615 3.260 3.081
+ 4.426 5.132 6.054 6.559 6.305 5.468 4.587 4.168 4.337 4.778 5.003 4.722 4.050 3.400 3.171 3.461 4.016 4.442 4.498 4.257 4.019 4.070 4.460 4.969 5.273 5.179 4.750 4.260 3.995 4.071 4.371 4.638 4.654 4.379 3.969 3.673
+ 4.713 5.028 5.613 6.317 6.866 6.988 6.617 5.982 5.473 5.347 5.525 5.668 5.475 4.951 4.401 4.166 4.324 4.637 4.780 4.644 4.434 4.476 4.910 5.546 6.006 6.018 5.621 5.108 4.792 4.789 4.984 5.167 5.193 5.062 4.873 4.744
+ 4.624 4.415 4.387 4.908 5.889 6.741 6.811 5.931 4.609 3.674 3.652 4.374 5.134 5.266 4.651 3.778 3.322 3.610 4.403 5.129 5.353 5.097 4.768 4.801 5.321 6.063 6.597 6.642 6.238 5.669 5.246 5.120 5.241 5.457 5.639 5.732
+ 4.586 4.403 4.646 5.831 7.671 9.103 9.093 7.531 5.387 3.970 3.909 4.736 5.408 5.259 4.549 4.153 4.717 6.066 7.351 7.779 7.250 6.378 5.941 6.264 7.041 7.662 7.702 7.166 6.369 5.654 5.193 4.991 4.983 5.098 5.259 5.373
+ 2.290 2.795 4.067 6.167 8.533 10.126 10.121 8.594 6.548 5.209 5.131 5.866 6.453 6.292 5.657 5.397 6.130 7.642 9.008 9.339 8.499 7.219 6.516 6.914 8.087 9.169 9.420 8.729 7.595 6.678 6.307 6.328 6.332 6.039 5.523 5.118
+ 4.173 4.698 5.780 7.308 8.884 9.922 9.976 9.072 7.746 6.704 6.339 6.493 6.663 6.495 6.141 6.157 6.972 8.400 9.635 9.816 8.744 7.139 6.181 6.624 8.204 9.812 10.339 9.521 8.094 7.147 7.215 7.860 8.106 7.327 5.833 4.645
+ 3.928 4.448 5.449 6.814 8.303 9.556 10.198 10.023 9.144 7.966 6.966 6.413 6.249 6.259 6.355 6.703 7.522 8.710 9.703 9.794 8.740 7.126 6.078 6.442 8.070 9.856 10.566 9.810 8.338 7.379 7.565 8.385 8.654 7.608 5.656 4.112
+ 4.691 5.077 5.717 6.473 7.295 8.181 9.037 9.612 9.622 8.974 7.887 6.783 6.040 5.828 6.131 6.863 7.895 8.950 9.567 9.308 8.152 6.717 5.979 6.586 8.277 9.961 10.504 9.630 8.153 7.298 7.642 8.598 8.922 7.838 5.795 4.180
+ 5.917 6.075 6.437 7.063 7.959 9.008 9.952 10.467 10.312 9.469 8.172 6.820 5.817 5.457 5.848 6.884 8.221 9.319 9.637 8.941 7.551 6.273 5.948 6.873 8.520 9.844 10.019 9.054 7.781 7.184 7.589 8.379 8.518 7.445 5.621 4.220
+ 4.072 4.709 5.785 7.024 8.211 9.230 10.008 10.441 10.403 9.839 8.848 7.690 6.701 6.179 6.300 7.038 8.119 9.043 9.269 8.522 7.075 5.714 5.308 6.208 7.916 9.363 9.646 8.700 7.342 6.610 6.920 7.726 8.000 7.130 5.498 4.212
+ 6.804 6.823 7.002 7.521 8.441 9.572 10.483 10.716 10.089 8.861 7.592 6.778 6.529 6.574 6.581 6.489 6.531 6.910 7.465 7.688 7.163 6.033 5.034 4.969 6.029 7.585 8.651 8.675 7.961 7.344 7.418 8.004 8.353 7.884 6.773 5.844
+ 5.893 6.036 6.453 7.257 8.373 9.466 10.073 9.880 8.947 7.706 6.701 6.245 6.268 6.465 6.623 6.801 7.201 7.835 8.345 8.211 7.229 5.833 4.890 5.065 6.254 7.602 8.156 7.636 6.650 6.152 6.582 7.446 7.740 6.852 5.173 3.846
+ 6.523 6.456 6.493 6.837 7.534 8.386 9.028 9.136 8.630 7.734 6.841 6.288 6.182 6.402 6.734 7.019 7.194 7.229 7.062 6.631 5.991 5.375 5.102 5.360 6.023 6.698 6.980 6.750 6.247 5.858 5.794 5.922 5.902 5.514 4.883 4.399
+ 6.245 6.228 6.204 6.222 6.367 6.711 7.228 7.748 8.018 7.843 7.214 6.344 5.569 5.192 5.342 5.923 6.647 7.152 7.152 6.585 5.676 4.852 4.519 4.807 5.474 6.048 6.153 5.771 5.240 4.974 5.114 5.408 5.427 4.941 4.146 3.542
+ 6.793 6.748 6.765 6.983 7.456 8.075 8.584 8.701 8.287 7.447 6.484 5.728 5.368 5.373 5.568 5.767 5.856 5.799 5.596 5.285 4.974 4.846 5.058 5.583 6.143 6.350 5.986 5.224 4.548 4.414 4.864 5.459 5.588 4.968 3.902 3.086
+ 5.025 5.820 6.916 7.699 7.866 7.557 7.131 6.830 6.635 6.411 6.133 5.940 5.971 6.175 6.308 6.155 5.737 5.312 5.140 5.258 5.465 5.534 5.426 5.290 5.271 5.324 5.258 4.960 4.561 4.345 4.474 4.781 4.886 4.534 3.865 3.331
+ 2.833 3.920 5.515 6.871 7.558 7.644 7.475 7.297 7.088 6.694 6.106 5.566 5.390 5.683 6.212 6.576 6.511 6.076 5.567 5.268 5.253 5.392 5.499 5.470 5.298 5.010 4.635 4.234 3.933 3.863 4.045 4.322 4.446 4.271 3.891 3.583
+ 4.411 4.623 5.095 5.826 6.666 7.354 7.656 7.514 7.068 6.548 6.125 5.855 5.725 5.716 5.807 5.929 5.941 5.711 5.244 4.737 4.475 4.621 5.082 5.555 5.748 5.583 5.226 4.931 4.834 4.873 4.882 4.748 4.495 4.232 4.050 3.969
+ 3.538 4.087 5.075 6.271 7.342 7.967 7.989 7.502 6.806 6.234 5.977 6.020 6.222 6.430 6.556 6.559 6.401 6.054 5.564 5.089 4.852 4.990 5.435 5.925 6.152 5.970 5.486 4.975 4.691 4.697 4.849 4.909 4.717 4.287 3.796 3.473
+ 4.919 5.292 5.940 6.697 7.367 7.781 7.841 7.551 7.020 6.427 5.943 5.671 5.613 5.700 5.852 6.011 6.137 6.177 6.063 5.771 5.385 5.093 5.077 5.367 5.766 5.963 5.750 5.203 4.651 4.445 4.688 5.151 5.449 5.349 4.953 4.605
+ 6.468 6.718 7.079 7.357 7.419 7.259 6.983 6.726 6.563 6.470 6.362 6.170 5.905 5.665 5.567 5.665 5.892 6.087 6.095 5.877 5.551 5.324 5.341 5.572 5.814 5.839 5.573 5.179 4.951 5.091 5.533 5.958 6.014 5.584 4.897 4.385
+ 5.958 6.293 6.863 7.455 7.787 7.640 7.024 6.223 5.654 5.591 5.981 6.484 6.738 6.619 6.306 6.095 6.130 6.286 6.300 6.026 5.585 5.282 5.355 5.768 6.228 6.404 6.167 5.681 5.259 5.131 5.288 5.514 5.561 5.336 4.961 4.680
+ 6.045 6.342 6.891 7.561 8.122 8.343 8.138 7.649 7.161 6.900 6.886 6.950 6.904 6.708 6.471 6.318 6.236 6.084 5.740 5.252 4.842 4.729 4.943 5.286 5.486 5.406 5.143 4.929 4.939 5.168 5.467 5.671 5.716 5.647 5.550 5.488
+ 5.822 6.203 6.912 7.779 8.511 8.813 8.584 8.007 7.426 7.089 6.971 6.847 6.537 6.090 5.736 5.639 5.708 5.652 5.255 4.605 4.064 3.975 4.375 4.957 5.324 5.305 5.048 4.856 4.903 5.111 5.257 5.189 4.940 4.661 4.472 4.394
+ 6.682 6.563 6.634 7.174 8.084 8.881 9.069 8.555 7.732 7.156 7.100 7.376 7.560 7.403 7.026 6.774 6.866 7.203 7.483 7.503 7.345 7.280 7.488 7.878 8.165 8.127 7.802 7.457 7.365 7.596 7.989 8.294 8.357 8.193 7.944 7.770
+ 3.629 4.187 5.217 6.504 7.697 8.449 8.610 8.333 7.964 7.776 7.772 7.715 7.369 6.737 6.081 5.709 5.726 5.957 6.126 6.096 5.978 5.995 6.255 6.637 6.884 6.833 6.547 6.270 6.225 6.452 6.793 7.027 7.023 6.808 6.524 6.331
+ 5.365 6.189 7.294 8.006 8.004 7.508 7.047 7.024 7.440 7.956 8.200 8.037 7.595 7.092 6.657 6.286 5.936 5.613 5.355 5.161 4.945 4.619 4.212 3.909 3.945 4.424 5.209 5.982 6.428 6.405 5.990 5.388 4.805 4.359 4.080 3.950
+ 5.696 6.260 7.017 7.539 7.684 7.658 7.763 8.077 8.381 8.375 7.974 7.384 6.913 6.694 6.598 6.399 6.015 5.575 5.270 5.144 5.057 4.843 4.511 4.263 4.311 4.670 5.132 5.443 5.511 5.437 5.360 5.280 5.059 4.603 4.022 3.607
+ 5.559 5.790 6.188 6.684 7.253 7.872 8.444 8.781 8.722 8.295 7.764 7.472 7.582 7.934 8.150 7.924 7.249 6.406 5.726 5.343 5.148 4.950 4.679 4.437 4.367 4.506 4.753 4.987 5.178 5.372 5.560 5.596 5.281 4.565 3.689 3.083
+ 5.897 6.285 6.813 7.222 7.479 7.765 8.231 8.772 9.069 8.884 8.328 7.838 7.833 8.365 9.050 9.361 9.014 8.135 7.099 6.224 5.596 5.145 4.821 4.683 4.807 5.148 5.533 5.790 5.888 5.919 5.928 5.799 5.329 4.459 3.443 2.749
+ 4.520 5.483 6.643 7.163 6.882 6.417 6.539 7.429 8.502 8.960 8.527 7.689 7.244 7.591 8.421 9.042 8.989 8.349 7.553 6.931 6.478 6.033 5.594 5.404 5.689 6.355 6.992 7.207 6.967 6.587 6.364 6.246 5.872 4.991 3.816 2.963
+ 5.288 5.170 5.128 5.387 6.025 6.918 7.850 8.652 9.251 9.603 9.620 9.219 8.459 7.633 7.166 7.344 8.063 8.838 9.100 8.584 7.532 6.535 6.136 6.478 7.254 7.958 8.245 8.114 7.813 7.577 7.415 7.120 6.470 5.464 4.392 3.696
+ 5.478 5.559 5.768 6.174 6.820 7.668 8.574 9.330 9.749 9.751 9.378 8.751 8.030 7.404 7.100 7.320 8.092 9.138 9.923 9.932 9.050 7.723 6.727 6.647 7.453 8.517 9.090 8.860 8.140 7.534 7.365 7.382 7.014 5.940 4.479 3.419
+ 6.047 5.689 5.319 5.380 6.098 7.316 8.604 9.530 9.902 9.804 9.438 8.931 8.301 7.591 7.009 6.901 7.493 8.630 9.750 10.212 9.752 8.718 7.837 7.682 8.241 8.955 9.201 8.816 8.205 7.935 8.168 8.448 8.068 6.722 4.888 3.569
+ 4.001 4.505 5.198 5.775 6.244 6.884 7.877 9.004 9.723 9.604 8.717 7.602 6.846 6.650 6.786 6.925 7.001 7.225 7.781 8.547 9.142 9.281 9.056 8.838 8.890 9.087 9.047 8.559 7.860 7.454 7.590 7.942 7.832 6.858 5.354 4.221
+ 5.606 5.780 6.027 6.283 6.628 7.212 8.049 8.885 9.310 9.055 8.226 7.247 6.567 6.360 6.482 6.675 6.816 6.983 7.310 7.818 8.394 8.904 9.299 9.579 9.672 9.420 8.741 7.830 7.143 7.088 7.631 8.205 8.082 6.969 5.329 4.124
+ 4.744 4.763 5.037 5.781 6.914 8.031 8.660 8.601 8.064 7.480 7.152 7.049 6.895 6.464 5.827 5.320 5.287 5.817 6.687 7.556 8.210 8.666 9.050 9.396 9.564 9.364 8.768 8.015 7.480 7.395 7.645 7.818 7.498 6.592 5.448 4.655
+ 5.284 5.162 5.132 5.422 6.050 6.767 7.228 7.246 6.917 6.527 6.300 6.226 6.095 5.723 5.153 4.672 4.616 5.115 6.005 6.957 7.714 8.240 8.650 9.020 9.252 9.134 8.558 7.685 6.898 6.543 6.662 6.949 6.975 6.532 5.810 5.263
+ 4.962 5.026 5.193 5.476 5.791 5.986 5.947 5.701 5.426 5.328 5.494 5.822 6.100 6.158 5.979 5.696 5.482 5.437 5.569 5.842 6.245 6.781 7.403 7.953 8.208 8.004 7.375 6.573 5.932 5.667 5.736 5.879 5.807 5.418 4.870 4.474
+ 5.314 5.688 6.266 6.783 7.007 6.867 6.500 6.154 6.007 6.023 5.986 5.710 5.237 4.858 4.889 5.399 6.114 6.613 6.654 6.361 6.106 6.190 6.601 7.053 7.257 7.167 6.981 6.924 7.026 7.109 6.981 6.645 6.298 6.149 6.220 6.344
+ 6.063 6.271 6.618 6.968 7.150 7.051 6.696 6.258 5.943 5.840 5.862 5.834 5.674 5.490 5.504 5.842 6.390 6.834 6.890 6.523 5.986 5.631 5.665 6.017 6.435 6.691 6.733 6.682 6.691 6.815 6.991 7.110 7.109 7.009 6.881 6.796
+ 5.688 6.576 7.833 8.779 9.014 8.605 7.930 7.342 6.942 6.626 6.301 6.037 6.018 6.356 6.957 7.559 7.923 7.989 7.882 7.778 7.771 7.838 7.918 8.005 8.150 8.398 8.713 8.985 9.104 9.031 8.813 8.541 8.292 8.098 7.968 7.902
+ 7.267 7.498 7.832 8.094 8.159 7.986 7.594 7.040 6.435 5.957 5.813 6.109 6.750 7.453 7.925 8.064 8.023 8.058 8.300 8.640 8.842 8.783 8.592 8.553 8.853 9.402 9.895 10.067 9.900 9.609 9.425 9.392 9.359 9.167 8.841 8.581
+ 7.533 7.382 7.192 7.120 7.265 7.584 7.890 7.953 7.651 7.081 6.537 6.337 6.626 7.272 7.951 8.356 8.387 8.190 8.013 8.009 8.139 8.235 8.163 7.949 7.768 7.800 8.082 8.470 8.736 8.729 8.478 8.159 7.973 8.006 8.185 8.341
+ 6.374 6.788 7.365 7.792 7.929 7.874 7.843 7.950 8.106 8.116 7.889 7.571 7.456 7.737 8.306 8.781 8.778 8.214 7.403 6.851 6.894 7.461 8.147 8.521 8.439 8.106 7.859 7.881 8.065 8.152 7.987 7.675 7.482 7.595 7.939 8.235
+ 5.884 6.081 6.363 6.600 6.749 6.884 7.111 7.452 7.795 7.963 7.854 7.539 7.222 7.079 7.121 7.176 7.042 6.675 6.264 6.111 6.407 7.068 7.774 8.190 8.190 7.927 7.678 7.620 7.699 7.696 7.425 6.887 6.257 5.744 5.446 5.331
+ 4.305 4.754 5.617 6.761 7.898 8.647 8.707 8.057 7.034 6.178 5.925 6.329 7.033 7.519 7.479 7.022 6.566 6.501 6.888 7.448 7.818 7.865 7.771 7.830 8.144 8.507 8.580 8.207 7.569 7.041 6.868 6.953 6.966 6.658 6.109 5.674
+ 7.883 7.540 7.186 7.233 7.836 8.749 9.456 9.522 8.890 7.926 7.169 6.980 7.335 7.902 8.325 8.471 8.467 8.517 8.696 8.898 8.979 8.932 8.918 9.115 9.518 9.898 9.972 9.650 9.126 8.718 8.595 8.632 8.526 8.088 7.446 6.967
+ 6.941 6.469 5.933 5.815 6.283 7.036 7.536 7.416 6.760 6.034 5.735 6.022 6.626 7.079 7.074 6.675 6.238 6.124 6.448 7.031 7.573 7.868 7.911 7.827 7.735 7.674 7.631 7.621 7.701 7.897 8.114 8.138 7.777 7.033 6.169 5.588
+ 6.147 6.026 5.958 6.133 6.562 7.011 7.147 6.774 6.010 5.244 4.900 5.152 5.808 6.428 6.615 6.269 5.631 5.113 5.033 5.438 6.118 6.766 7.158 7.242 7.099 6.857 6.622 6.455 6.382 6.387 6.402 6.325 6.075 5.662 5.215 4.922
+ 6.215 5.832 5.442 5.491 6.124 7.045 7.717 7.744 7.140 6.298 5.697 5.580 5.829 6.107 6.126 5.845 5.476 5.320 5.575 6.232 7.097 7.911 8.475 8.721 8.714 8.593 8.483 8.430 8.378 8.219 7.864 7.304 6.627 5.967 5.455 5.179
+ 6.276 6.039 5.916 6.264 7.072 7.882 8.118 7.541 6.457 5.514 5.226 5.626 6.283 6.670 6.551 6.116 5.780 5.843 6.299 6.893 7.361 7.608 7.723 7.841 8.010 8.170 8.234 8.185 8.081 7.969 7.811 7.489 6.905 6.101 5.296 4.787
+ 4.536 5.042 5.793 6.484 6.988 7.363 7.667 7.796 7.555 6.901 6.115 5.675 5.901 6.666 7.454 7.749 7.419 6.797 6.394 6.512 7.074 7.773 8.331 8.651 8.753 8.642 8.303 7.802 7.354 7.203 7.389 7.636 7.524 6.853 5.871 5.146
+ 4.169 5.473 7.275 8.532 8.656 7.823 6.712 5.953 5.733 5.831 5.951 6.006 6.125 6.426 6.829 7.077 6.963 6.528 6.063 5.922 6.297 7.114 8.095 8.891 9.228 9.002 8.332 7.534 6.988 6.929 7.269 7.622 7.555 6.914 5.979 5.296
+ 5.420 6.396 7.743 8.670 8.721 8.001 7.002 6.211 5.840 5.825 6.019 6.335 6.741 7.170 7.491 7.594 7.502 7.370 7.360 7.520 7.771 8.015 8.238 8.479 8.727 8.861 8.740 8.371 7.974 7.824 8.004 8.277 8.256 7.737 6.923 6.310
+ 5.543 6.732 8.157 8.722 8.085 6.853 5.962 5.856 6.212 6.390 6.116 5.707 5.674 6.148 6.736 6.931 6.650 6.338 6.523 7.284 8.155 8.568 8.388 8.008 7.930 8.259 8.623 8.579 8.087 7.555 7.424 7.714 7.999 7.850 7.284 6.770
+ 5.842 6.626 7.695 8.403 8.397 7.790 6.995 6.382 6.060 5.917 5.824 5.768 5.826 6.021 6.242 6.313 6.145 5.819 5.537 5.491 5.761 6.305 7.002 7.691 8.188 8.331 8.083 7.605 7.211 7.172 7.499 7.895 7.957 7.503 6.748 6.174
+ 6.692 7.075 7.577 7.870 7.798 7.443 6.999 6.581 6.159 5.657 5.107 4.685 4.589 4.854 5.280 5.553 5.455 5.024 4.531 4.329 4.661 5.541 6.750 7.910 8.635 8.692 8.141 7.342 6.781 6.775 7.248 7.758 7.796 7.176 6.199 5.473
+ 4.945 5.979 7.317 8.029 7.650 6.471 5.273 4.737 4.990 5.603 5.992 5.875 5.419 5.030 4.975 5.170 5.284 5.047 4.516 4.083 4.217 5.131 6.593 8.016 8.776 8.574 7.616 6.503 5.886 6.076 6.863 7.659 7.888 7.371 6.449 5.748
+ 6.507 7.380 8.403 8.708 7.962 6.613 5.514 5.256 5.749 6.364 6.465 5.884 4.985 4.308 4.140 4.339 4.525 4.438 4.155 4.033 4.443 5.491 6.912 8.191 8.821 8.575 7.643 6.559 5.920 6.043 6.761 7.515 7.723 7.180 6.218 5.485
+ 7.609 7.762 8.088 8.539 8.936 9.046 8.759 8.201 7.665 7.389 7.372 7.402 7.263 6.936 6.610 6.479 6.545 6.610 6.486 6.229 6.155 6.595 7.576 8.717 9.445 9.393 8.660 7.752 7.221 7.299 7.763 8.124 7.976 7.271 6.344 5.700
+ 6.293 6.933 8.008 9.146 9.921 10.042 9.516 8.680 8.002 7.800 8.040 8.395 8.497 8.199 7.643 7.099 6.740 6.545 6.391 6.229 6.162 6.351 6.846 7.499 8.046 8.293 8.239 8.053 7.928 7.935 8.003 7.999 7.841 7.557 7.258 7.068
+ 6.395 6.860 7.654 8.526 9.176 9.376 9.078 8.461 7.840 7.493 7.500 7.713 7.878 7.811 7.507 7.101 6.737 6.460 6.224 6.003 5.883 6.031 6.555 7.357 8.128 8.523 8.396 7.913 7.438 7.274 7.430 7.618 7.485 6.904 6.104 5.529
+ 5.195 5.663 6.404 7.134 7.607 7.709 7.461 6.978 6.422 5.960 5.725 5.765 5.994 6.217 6.220 5.911 5.384 4.871 4.605 4.678 5.013 5.444 5.843 6.176 6.480 6.777 7.028 7.153 7.096 6.871 6.549 6.208 5.901 5.648 5.460 5.358
+ 5.373 5.622 6.248 7.267 8.359 8.948 8.588 7.339 5.808 4.771 4.651 5.263 6.003 6.320 6.085 5.588 5.226 5.175 5.316 5.422 5.411 5.423 5.668 6.211 6.882 7.393 7.541 7.343 6.992 6.695 6.542 6.476 6.382 6.201 5.977 5.821
+ 5.883 5.420 5.018 5.253 6.218 7.391 8.024 7.725 6.743 5.756 5.337 5.565 6.062 6.372 6.329 6.107 5.977 6.020 6.086 5.993 5.766 5.665 5.967 6.691 7.529 8.044 7.983 7.458 6.836 6.455 6.377 6.374 6.141 5.563 4.832 4.321
+ 4.845 4.774 4.744 4.889 5.257 5.737 6.112 6.189 5.951 5.595 5.425 5.647 6.216 6.847 7.196 7.079 6.586 6.000 5.618 5.595 5.911 6.445 7.064 7.647 8.071 8.218 8.044 7.646 7.234 6.996 6.947 6.891 6.575 5.915 5.115 4.564
+ 2.957 3.475 4.401 5.511 6.493 7.058 7.079 6.653 6.034 5.483 5.139 5.018 5.094 5.359 5.792 6.285 6.634 6.657 6.360 5.984 5.873 6.216 6.902 7.593 7.983 8.010 7.872 7.815 7.918 8.032 7.924 7.480 6.795 6.087 5.552 5.278
+ 4.052 4.694 5.829 7.153 8.260 8.790 8.598 7.825 6.809 5.871 5.171 4.714 4.478 4.500 4.827 5.393 5.959 6.239 6.122 5.783 5.577 5.760 6.286 6.850 7.129 7.028 6.710 6.411 6.227 6.068 5.794 5.391 5.000 4.781 4.759 4.813
+ 3.330 3.849 4.660 5.419 5.835 5.800 5.421 4.930 4.540 4.325 4.218 4.102 3.930 3.774 3.762 3.955 4.269 4.517 4.546 4.366 4.159 4.162 4.488 5.028 5.509 5.672 5.437 4.948 4.461 4.166 4.065 3.997 3.775 3.346 2.842 2.500
+ 5.473 5.155 4.815 4.741 4.928 5.065 4.844 4.261 3.638 3.320 3.362 3.493 3.408 3.085 2.821 2.942 3.463 4.038 4.260 4.033 3.663 3.592 3.994 4.612 4.976 4.797 4.195 3.578 3.297 3.394 3.617 3.654 3.366 2.851 2.330 2.013
+ 5.395 5.103 4.710 4.457 4.455 4.608 4.706 4.596 4.308 4.024 3.911 3.975 4.043 3.923 3.584 3.218 3.090 3.316 3.743 4.061 4.059 3.805 3.594 3.685 4.061 4.417 4.413 3.972 3.356 2.960 2.968 3.201 3.270 2.929 2.306 1.816
+ 3.867 4.555 5.291 5.372 4.665 3.699 3.173 3.334 3.804 3.988 3.648 3.111 2.923 3.319 4.017 4.492 4.460 4.091 3.780 3.739 3.826 3.745 3.409 3.057 3.022 3.392 3.888 4.111 3.889 3.410 3.020 2.909 2.986 3.032 2.952 2.842
+ 3.838 4.438 5.019 4.932 4.104 3.109 2.641 2.901 3.466 3.748 3.560 3.265 3.371 4.003 4.763 5.101 4.820 4.215 3.755 3.642 3.693 3.617 3.380 3.238 3.430 3.856 4.121 3.915 3.350 2.887 2.892 3.261 3.494 3.178 2.416 1.774
+ 5.172 4.895 4.594 4.576 4.962 5.566 6.008 5.966 5.404 4.608 4.008 3.913 4.335 5.009 5.579 5.808 5.674 5.318 4.916 4.572 4.302 4.089 3.926 3.825 3.790 3.804 3.852 3.945 4.108 4.330 4.511 4.489 4.139 3.493 2.776 2.303
+ 5.131 5.067 5.228 5.904 7.067 8.310 9.106 9.152 8.543 7.653 6.873 6.435 6.407 6.776 7.469 8.282 8.858 8.821 8.037 6.780 5.623 5.085 5.285 5.891 6.402 6.530 6.390 6.343 6.642 7.186 7.557 7.312 6.292 4.743 3.208 2.260
+ 3.835 4.549 5.749 7.076 8.197 8.933 9.286 9.367 9.270 9.004 8.532 7.895 7.303 7.079 7.455 8.348 9.321 9.781 9.340 8.087 6.574 5.494 5.270 5.826 6.697 7.373 7.642 7.667 7.769 8.094 8.434 8.341 7.467 5.884 4.142 3.001
+ 3.200 4.301 5.962 7.465 8.364 8.685 8.753 8.848 8.973 8.916 8.510 7.849 7.285 7.202 7.753 8.737 9.690 10.112 9.717 8.582 7.135 5.976 5.586 6.068 7.089 8.088 8.636 8.697 8.589 8.645 8.851 8.793 7.979 6.325 4.380 3.058
+ 2.675 3.937 5.844 7.561 8.546 8.779 8.614 8.417 8.308 8.188 7.946 7.640 7.494 7.727 8.377 9.251 9.999 10.268 9.850 8.794 7.433 6.295 5.865 6.308 7.339 8.378 8.932 8.924 8.695 8.649 8.828 8.796 7.991 6.269 4.197 2.774
+ 4.059 5.038 6.483 7.733 8.406 8.582 8.617 8.795 9.104 9.301 9.168 8.721 8.219 7.976 8.166 8.718 9.357 9.731 9.564 8.795 7.647 6.576 6.057 6.307 7.137 8.060 8.635 8.773 8.744 8.861 9.092 8.982 7.999 6.065 3.811 2.285
+ 4.570 5.412 6.691 7.874 8.618 8.916 8.982 9.022 9.086 9.094 8.963 8.698 8.398 8.210 8.276 8.672 9.324 9.944 10.097 9.444 8.048 6.479 5.544 5.753 6.927 8.291 9.035 8.927 8.431 8.225 8.518 8.776 8.159 6.328 3.913 2.194
+ 2.081 3.515 5.659 7.565 8.666 9.005 8.997 8.999 9.065 9.048 8.839 8.496 8.175 7.996 8.021 8.311 8.916 9.731 10.373 10.312 9.269 7.575 6.101 5.694 6.536 7.972 9.021 9.162 8.704 8.399 8.643 9.022 8.654 7.066 4.794 3.124
+ 3.741 5.040 6.742 7.854 8.111 8.078 8.461 9.338 10.075 9.965 8.957 7.740 7.131 7.394 8.129 8.781 9.181 9.552 10.038 10.336 9.928 8.703 7.303 6.708 7.376 8.754 9.723 9.612 8.821 8.405 8.965 9.923 9.947 8.218 5.379 3.202
+ 3.648 4.785 6.235 7.122 7.317 7.467 8.255 9.644 10.837 11.010 10.066 8.700 7.745 7.486 7.599 7.696 7.819 8.321 9.281 10.141 10.094 8.905 7.335 6.615 7.367 8.972 10.068 9.767 8.462 7.432 7.575 8.480 8.774 7.455 4.973 2.993
+ 3.946 4.431 5.152 5.864 6.556 7.409 8.505 9.609 10.268 10.158 9.351 8.255 7.304 6.707 6.483 6.653 7.309 8.412 9.554 10.049 9.421 7.903 6.439 6.027 6.916 8.361 9.216 8.901 7.872 7.153 7.338 7.978 7.969 6.608 4.371 2.654
+ 4.538 4.635 4.881 5.375 6.203 7.310 8.419 9.114 9.101 8.433 7.503 6.753 6.373 6.238 6.168 6.212 6.643 7.612 8.806 9.510 9.133 7.773 6.270 5.606 6.126 7.258 8.017 7.857 7.121 6.649 6.925 7.539 7.530 6.303 4.302 2.770
+ 3.671 4.587 5.700 6.322 6.490 6.864 7.899 9.184 9.688 8.740 6.781 5.083 4.664 5.413 6.294 6.418 5.916 5.739 6.586 8.059 8.946 8.394 6.808 5.559 5.718 7.045 8.226 8.152 6.977 5.924 6.003 6.929 7.343 6.164 3.771 1.821
+ 5.267 4.975 4.716 4.955 5.981 7.642 9.309 10.183 9.792 8.341 6.614 5.455 5.213 5.589 6.004 6.143 6.203 6.602 7.466 8.382 8.696 8.104 6.978 6.107 6.051 6.696 7.400 7.577 7.182 6.649 6.381 6.312 5.979 5.042 3.735 2.769
+ 4.382 4.693 5.259 6.027 6.977 8.047 9.029 9.578 9.399 8.486 7.186 6.012 5.319 5.141 5.299 5.646 6.193 6.972 7.812 8.297 8.052 7.110 6.013 5.468 5.816 6.756 7.589 7.783 7.352 6.742 6.333 6.059 5.510 4.412 3.023 2.033
+ 3.801 3.940 4.406 5.374 6.753 8.125 8.942 8.869 8.017 6.882 6.022 5.695 5.752 5.848 5.797 5.754 6.047 6.818 7.780 8.357 8.126 7.198 6.197 5.821 6.322 7.323 8.127 8.249 7.732 7.005 6.436 6.018 5.443 4.500 3.375 2.590
+ 4.029 4.411 5.152 6.164 7.250 8.123 8.500 8.253 7.514 6.622 5.946 5.663 5.680 5.764 5.774 5.797 6.058 6.656 7.382 7.808 7.607 6.858 6.041 5.700 6.027 6.718 7.221 7.170 6.636 5.992 5.532 5.205 4.709 3.848 2.807 2.078
+ 5.455 5.097 4.843 5.209 6.290 7.609 8.426 8.273 7.288 6.093 5.319 5.166 5.345 5.427 5.269 5.142 5.437 6.234 7.113 7.431 6.852 5.681 4.695 4.568 5.354 6.447 7.059 6.817 6.001 5.247 4.975 5.059 5.002 4.442 3.528 2.822
+ 4.484 4.760 5.307 6.086 6.970 7.707 7.972 7.540 6.482 5.220 4.327 4.163 4.622 5.217 5.481 5.343 5.166 5.376 6.015 6.630 6.637 5.859 4.750 4.078 4.315 5.251 6.179 6.473 6.055 5.364 4.893 4.742 4.609 4.170 3.471 2.924
+ 4.795 4.970 5.209 5.401 5.539 5.705 5.950 6.190 6.239 5.958 5.388 4.740 4.256 4.070 4.169 4.474 4.909 5.391 5.781 5.889 5.606 5.037 4.505 4.348 4.666 5.220 5.618 5.616 5.301 4.963 4.805 4.734 4.460 3.807 2.951 2.335
+ 5.544 5.280 5.038 5.145 5.669 6.341 6.741 6.609 6.026 5.324 4.822 4.608 4.534 4.413 4.217 4.109 4.276 4.735 5.269 5.576 5.494 5.113 4.699 4.477 4.475 4.543 4.514 4.362 4.214 4.205 4.317 4.353 4.082 3.451 2.680 2.149
+ 3.324 3.475 3.838 4.451 5.230 5.944 6.315 6.170 5.569 4.789 4.171 3.930 4.047 4.325 4.555 4.661 4.722 4.854 5.077 5.272 5.271 4.996 4.531 4.064 3.767 3.694 3.802 4.021 4.303 4.599 4.797 4.720 4.230 3.377 2.442 1.828
+ 6.102 5.905 5.475 4.878 4.355 4.189 4.439 4.831 4.951 4.611 4.042 3.703 3.874 4.400 4.856 4.960 4.835 4.853 5.209 5.672 5.777 5.300 4.530 4.044 4.176 4.682 4.956 4.610 3.865 3.354 3.504 4.095 4.424 3.967 2.907 2.024
+ 5.084 5.107 5.087 4.999 4.934 5.017 5.242 5.394 5.203 4.605 3.869 3.425 3.525 4.032 4.535 4.708 4.564 4.395 4.446 4.665 4.759 4.510 4.027 3.677 3.753 4.196 4.641 4.750 4.498 4.143 3.923 3.779 3.420 2.649 1.657 0.945
+ 5.353 5.012 4.654 4.633 5.001 5.447 5.547 5.132 4.429 3.880 3.783 4.074 4.418 4.523 4.386 4.268 4.426 4.853 5.257 5.297 4.866 4.199 3.698 3.636 3.977 4.435 4.707 4.687 4.487 4.280 4.123 3.900 3.450 2.744 1.976 1.469
+ 4.983 4.456 3.823 3.562 3.805 4.251 4.463 4.267 3.896 3.754 4.030 4.515 4.792 4.613 4.127 3.753 3.813 4.256 4.705 4.767 4.356 3.744 3.336 3.364 3.746 4.197 4.454 4.438 4.241 3.992 3.742 3.451 3.062 2.588 2.138 1.860
+ 3.625 3.467 3.287 3.266 3.498 3.896 4.228 4.259 3.923 3.401 3.016 3.021 3.423 3.990 4.428 4.599 4.586 4.569 4.631 4.680 4.559 4.229 3.853 3.681 3.827 4.155 4.378 4.292 3.937 3.534 3.270 3.132 2.939 2.553 2.049 1.682
+ 5.523 4.364 2.859 2.015 2.297 3.338 4.303 4.555 4.092 3.434 3.131 3.332 3.765 4.064 4.117 4.122 4.333 4.777 5.198 5.280 4.933 4.382 3.989 3.965 4.220 4.454 4.398 4.000 3.432 2.931 2.627 2.484 2.376 2.212 2.008 1.862
+ 5.061 4.815 4.420 4.035 3.796 3.746 3.801 3.808 3.675 3.458 3.341 3.489 3.900 4.381 4.693 4.735 4.620 4.563 4.672 4.838 4.825 4.488 3.930 3.444 3.294 3.504 3.852 4.039 3.912 3.527 3.059 2.634 2.267 1.921 1.607 1.408
+ 6.054 5.273 4.320 3.889 4.171 4.725 4.902 4.424 3.603 3.036 3.067 3.524 3.937 4.003 3.858 3.896 4.345 4.992 5.342 5.048 4.233 3.412 3.080 3.330 3.814 4.047 3.795 3.218 2.702 2.534 2.704 2.955 3.005 2.757 2.350 2.048
+ 4.833 4.116 3.178 2.620 2.702 3.203 3.669 3.812 3.700 3.612 3.727 3.961 4.085 3.995 3.842 3.893 4.256 4.734 4.950 4.661 3.969 3.264 2.926 3.062 3.452 3.747 3.724 3.408 2.995 2.681 2.528 2.474 2.417 2.306 2.169 2.074
+ 5.429 4.673 3.751 3.337 3.638 4.263 4.613 4.408 3.876 3.472 3.431 3.593 3.631 3.436 3.243 3.379 3.881 4.377 4.374 3.699 2.695 1.972 1.942 2.521 3.240 3.638 3.589 3.311 3.109 3.104 3.173 3.107 2.801 2.326 1.862 1.581
+ 3.903 3.801 3.680 3.667 3.851 4.208 4.583 4.766 4.636 4.255 3.840 3.598 3.571 3.607 3.513 3.239 2.945 2.866 3.096 3.480 3.731 3.667 3.364 3.088 3.060 3.266 3.482 3.471 3.187 2.791 2.494 2.372 2.333 2.244 2.078 1.938
+ 3.760 3.276 2.627 2.238 2.360 2.903 3.511 3.810 3.667 3.266 2.967 3.036 3.465 4.000 4.339 4.357 4.163 3.981 3.950 4.024 4.043 3.892 3.611 3.355 3.249 3.286 3.340 3.287 3.113 2.907 2.763 2.680 2.577 2.384 2.134 1.954
+ 3.966 3.934 3.863 3.763 3.675 3.646 3.678 3.714 3.686 3.590 3.516 3.582 3.839 4.208 4.536 4.712 4.741 4.714 4.701 4.672 4.524 4.193 3.745 3.346 3.142 3.149 3.252 3.305 3.248 3.120 2.985 2.848 2.655 2.370 2.048 1.830
+ 4.896 4.316 3.646 3.430 3.796 4.335 4.454 3.897 2.980 2.358 2.508 3.375 4.426 5.068 5.051 4.577 4.063 3.799 3.784 3.811 3.695 3.421 3.119 2.935 2.915 2.991 3.052 3.018 2.875 2.662 2.451 2.321 2.327 2.464 2.658 2.797
+ 5.561 4.749 3.846 3.614 4.153 4.809 4.798 3.943 2.837 2.312 2.697 3.571 4.199 4.206 3.857 3.716 4.039 4.516 4.586 4.008 3.115 2.531 2.616 3.168 3.636 3.617 3.166 2.677 2.488 2.607 2.789 2.810 2.658 2.485 2.403 2.397
+ 4.303 4.410 4.516 4.516 4.412 4.304 4.270 4.280 4.230 4.066 3.873 3.796 3.891 4.033 4.011 3.733 3.331 3.069 3.106 3.345 3.518 3.432 3.152 2.943 3.011 3.306 3.550 3.488 3.113 2.667 2.411 2.406 2.481 2.436 2.241 2.057
+ 3.770 3.671 3.584 3.639 3.880 4.203 4.416 4.353 3.989 3.471 3.041 2.900 3.107 3.556 4.050 4.407 4.539 4.469 4.294 4.118 4.009 3.981 3.993 3.977 3.864 3.622 3.288 2.953 2.723 2.648 2.687 2.720 2.636 2.404 2.112 1.909
+ 4.280 3.754 3.057 2.626 2.658 3.026 3.450 3.738 3.878 3.933 3.901 3.717 3.395 3.116 3.139 3.555 4.144 4.503 4.362 3.832 3.324 3.210 3.505 3.860 3.869 3.418 2.772 2.334 2.311 2.578 2.823 2.829 2.611 2.339 2.154 2.080
+ 3.731 3.625 3.550 3.637 3.860 4.034 3.963 3.624 3.199 2.951 3.022 3.346 3.718 3.957 4.016 3.963 3.882 3.801 3.702 3.585 3.490 3.458 3.463 3.419 3.253 2.995 2.784 2.772 2.998 3.331 3.544 3.453 3.028 2.406 1.810 1.451
+ 4.686 4.091 3.398 3.181 3.610 4.306 4.661 4.332 3.516 2.779 2.613 3.073 3.791 4.297 4.366 4.121 3.849 3.742 3.777 3.817 3.790 3.754 3.815 3.972 4.081 3.960 3.566 3.059 2.709 2.686 2.924 3.158 3.114 2.713 2.143 1.733
+ 5.253 4.233 2.963 2.360 2.759 3.679 4.255 3.944 2.940 1.964 1.679 2.217 3.171 3.982 4.350 4.336 4.156 3.934 3.644 3.257 2.890 2.763 3.009 3.506 3.926 3.967 3.589 3.036 2.651 2.616 2.834 3.025 2.942 2.543 2.014 1.646
+ 5.029 4.434 3.757 3.581 4.046 4.713 4.916 4.316 3.195 2.254 2.084 2.738 3.734 4.451 4.574 4.253 3.885 3.757 3.847 3.925 3.815 3.568 3.401 3.479 3.749 3.976 3.943 3.631 3.232 2.976 2.931 2.951 2.805 2.391 1.843 1.453
+ 4.303 3.864 3.385 3.321 3.794 4.471 4.827 4.565 3.859 3.217 3.083 3.502 4.106 4.431 4.276 3.838 3.507 3.536 3.837 4.089 4.028 3.672 3.306 3.231 3.513 3.926 4.137 3.966 3.506 3.024 2.737 2.662 2.645 2.536 2.329 2.159
+ 4.156 3.507 2.781 2.642 3.294 4.308 4.971 4.850 4.119 3.389 3.208 3.653 4.321 4.684 4.503 3.953 3.431 3.218 3.310 3.494 3.573 3.522 3.462 3.510 3.661 3.789 3.762 3.543 3.212 2.892 2.665 2.531 2.445 2.361 2.277 2.220
+ 4.381 4.365 4.357 4.387 4.447 4.474 4.367 4.046 3.538 2.998 2.657 2.690 3.091 3.665 4.126 4.275 4.100 3.756 3.434 3.225 3.096 2.966 2.813 2.719 2.797 3.085 3.485 3.805 3.876 3.654 3.235 2.791 2.465 2.307 2.277 2.293
+ 2.995 3.193 3.430 3.544 3.522 3.490 3.546 3.626 3.542 3.185 2.684 2.357 2.457 2.954 3.535 3.848 3.769 3.469 3.235 3.222 3.354 3.449 3.416 3.331 3.332 3.459 3.595 3.584 3.376 3.074 2.822 2.665 2.527 2.314 2.042 1.842
+ 3.260 2.919 2.513 2.367 2.596 3.026 3.357 3.408 3.241 3.075 3.077 3.240 3.434 3.566 3.685 3.922 4.334 4.789 5.033 4.869 4.323 3.636 3.107 2.892 2.931 3.027 3.013 2.860 2.662 2.530 2.492 2.477 2.388 2.190 1.944 1.775
+ 3.819 3.778 3.766 3.840 3.954 3.972 3.768 3.344 2.846 2.479 2.381 2.567 2.955 3.443 3.937 4.341 4.541 4.443 4.053 3.513 3.048 2.830 2.875 3.049 3.178 3.178 3.091 3.010 2.977 2.939 2.810 2.551 2.213 1.894 1.670 1.562
+ 4.428 4.082 3.682 3.571 3.851 4.301 4.553 4.380 3.855 3.275 2.933 2.936 3.188 3.515 3.783 3.936 3.938 3.743 3.328 2.765 2.236 1.952 2.023 2.393 2.872 3.250 3.401 3.307 3.022 2.630 2.232 1.933 1.815 1.889 2.071 2.216
+ 3.322 3.255 3.258 3.490 3.983 4.569 4.954 4.885 4.332 3.524 2.846 2.617 2.913 3.539 4.160 4.497 4.473 4.200 3.861 3.580 3.362 3.146 2.903 2.678 2.564 2.613 2.774 2.914 2.897 2.675 2.319 1.974 1.766 1.736 1.819 1.903
+ 4.048 3.134 2.029 1.605 2.192 3.343 4.216 4.246 3.560 2.823 2.669 3.208 3.980 4.354 4.022 3.193 2.391 2.054 2.259 2.749 3.176 3.343 3.285 3.167 3.138 3.242 3.423 3.582 3.633 3.529 3.270 2.902 2.501 2.147 1.895 1.767
+ 5.388 4.164 2.678 2.053 2.659 3.860 4.596 4.294 3.310 2.568 2.761 3.791 4.913 5.363 4.940 4.056 3.319 3.056 3.167 3.342 3.374 3.272 3.149 3.051 2.928 2.739 2.543 2.462 2.550 2.724 2.826 2.764 2.577 2.384 2.269 2.230
+ 2.952 2.816 2.886 3.457 4.388 5.129 5.178 4.534 3.736 3.405 3.718 4.281 4.510 4.162 3.534 3.160 3.306 3.730 3.928 3.602 2.937 2.426 2.444 2.941 3.523 3.801 3.683 3.377 3.147 3.082 3.069 2.944 2.655 2.284 1.965 1.788
+ 4.967 4.651 4.172 3.769 3.658 3.894 4.322 4.644 4.611 4.195 3.621 3.211 3.163 3.433 3.803 4.053 4.096 3.968 3.730 3.412 3.054 2.784 2.781 3.129 3.668 4.027 3.878 3.216 2.414 1.966 2.101 2.593 2.950 2.827 2.317 1.863
+ 3.409 3.154 2.949 3.123 3.711 4.382 4.683 4.389 3.671 2.957 2.613 2.714 3.061 3.399 3.612 3.743 3.862 3.932 3.826 3.461 2.925 2.459 2.302 2.526 2.983 3.409 3.586 3.453 3.098 2.676 2.312 2.065 1.936 1.892 1.893 1.904
+ 5.773 4.962 3.965 3.511 3.826 4.459 4.670 4.042 2.823 1.722 1.365 1.875 2.859 3.772 4.296 4.455 4.431 4.329 4.117 3.745 3.308 3.026 3.081 3.436 3.835 3.982 3.757 3.292 2.850 2.623 2.603 2.617 2.483 2.152 1.744 1.463
+ 3.978 3.686 3.308 3.084 3.101 3.226 3.233 2.994 2.589 2.251 2.197 2.480 2.982 3.506 3.903 4.118 4.169 4.090 3.913 3.680 3.458 3.312 3.262 3.265 3.246 3.160 3.026 2.909 2.864 2.884 2.898 2.824 2.627 2.342 2.063 1.891
+ 4.411 4.263 4.180 4.349 4.694 4.889 4.636 3.954 3.213 2.858 3.070 3.637 4.141 4.288 4.094 3.798 3.627 3.628 3.700 3.740 3.744 3.762 3.799 3.778 3.623 3.359 3.117 3.013 3.030 3.028 2.873 2.573 2.277 2.139 2.174 2.257
+ 4.678 4.800 5.057 5.419 5.752 5.851 5.550 4.852 3.973 3.241 2.923 3.077 3.534 4.015 4.296 4.316 4.164 3.981 3.859 3.796 3.741 3.660 3.569 3.519 3.544 3.616 3.662 3.602 3.409 3.124 2.836 2.632 2.557 2.595 2.684 2.751
+ 2.768 3.145 3.655 4.013 4.117 4.083 4.094 4.205 4.300 4.229 3.979 3.701 3.581 3.677 3.892 4.083 4.193 4.264 4.336 4.363 4.247 3.977 3.703 3.642 3.881 4.264 4.486 4.339 3.891 3.420 3.170 3.144 3.130 2.929 2.564 2.269
+ 3.200 3.030 2.906 3.078 3.606 4.262 4.650 4.480 3.791 2.964 2.478 2.590 3.162 3.780 4.064 3.937 3.633 3.470 3.578 3.823 3.979 3.960 3.904 4.017 4.330 4.620 4.585 4.117 3.439 2.938 2.849 3.060 3.220 3.058 2.629 2.263
+ 2.402 2.583 2.924 3.372 3.839 4.197 4.321 4.149 3.758 3.362 3.206 3.410 3.865 4.285 4.393 4.118 3.638 3.244 3.127 3.253 3.436 3.512 3.470 3.425 3.473 3.590 3.658 3.594 3.446 3.339 3.340 3.362 3.228 2.846 2.335 1.966
+ 5.243 4.865 4.362 4.006 3.858 3.761 3.558 3.293 3.187 3.393 3.790 4.041 3.891 3.425 3.024 3.044 3.493 4.021 4.225 3.995 3.595 3.401 3.556 3.855 3.956 3.702 3.262 2.969 3.016 3.297 3.508 3.406 2.975 2.398 1.900 1.625
+ 4.379 4.413 4.307 3.927 3.384 2.997 3.024 3.421 3.857 3.996 3.780 3.461 3.354 3.557 3.888 4.083 4.045 3.906 3.857 3.942 4.027 3.965 3.770 3.606 3.602 3.690 3.656 3.359 2.911 2.604 2.644 2.942 3.175 3.079 2.700 2.361
+ 6.230 5.455 4.473 3.948 4.093 4.530 4.644 4.119 3.192 2.440 2.299 2.757 3.423 3.877 3.961 3.790 3.550 3.311 3.039 2.735 2.537 2.627 3.051 3.625 4.035 4.058 3.714 3.218 2.811 2.593 2.512 2.466 2.399 2.324 2.272 2.250
+ 5.726 4.913 3.841 3.192 3.260 3.781 4.207 4.166 3.730 3.285 3.174 3.432 3.818 4.061 4.083 3.989 3.911 3.857 3.735 3.493 3.214 3.060 3.119 3.303 3.408 3.283 2.951 2.584 2.360 2.331 2.401 2.428 2.328 2.123 1.903 1.766
+ 5.252 4.416 3.353 2.816 3.153 4.072 4.893 5.057 4.504 3.654 3.072 3.094 3.669 4.461 5.085 5.288 5.029 4.451 3.817 3.405 3.389 3.732 4.196 4.480 4.411 4.055 3.638 3.359 3.237 3.139 2.934 2.641 2.412 2.384 2.533 2.688
+ 3.845 3.648 3.414 3.357 3.582 3.980 4.259 4.130 3.539 2.770 2.311 2.533 3.413 4.505 5.226 5.240 4.672 3.978 3.592 3.624 3.849 3.949 3.801 3.553 3.456 3.614 3.882 3.985 3.744 3.219 2.646 2.269 2.184 2.318 2.522 2.659
+ 5.248 4.752 4.108 3.734 3.792 4.090 4.262 4.087 3.659 3.297 3.275 3.617 4.100 4.430 4.448 4.197 3.846 3.556 3.403 3.380 3.437 3.516 3.569 3.573 3.545 3.538 3.588 3.662 3.648 3.437 3.024 2.549 2.217 2.149 2.285 2.435
+ 4.039 3.975 3.929 3.947 3.955 3.816 3.491 3.143 3.041 3.334 3.906 4.456 4.741 4.763 4.715 4.751 4.812 4.688 4.255 3.659 3.227 3.193 3.479 3.754 3.720 3.375 2.987 2.831 2.928 3.041 2.916 2.533 2.120 1.931 2.001 2.139
+ 4.508 4.312 4.012 3.721 3.497 3.328 3.172 3.028 2.952 3.015 3.238 3.560 3.888 4.159 4.375 4.561 4.702 4.717 4.519 4.117 3.656 3.360 3.369 3.633 3.914 3.953 3.661 3.190 2.835 2.810 3.080 3.376 3.389 3.012 2.427 1.995
+ 4.733 4.104 3.356 3.075 3.431 4.057 4.393 4.168 3.613 3.227 3.337 3.839 4.331 4.484 4.306 4.077 4.062 4.271 4.489 4.503 4.306 4.085 4.022 4.121 4.208 4.102 3.780 3.397 3.150 3.124 3.242 3.349 3.336 3.198 3.018 2.895
+ 3.320 3.483 3.599 3.446 3.003 2.504 2.270 2.472 3.011 3.612 4.031 4.210 4.258 4.314 4.420 4.505 4.475 4.307 4.075 3.898 3.865 3.992 4.226 4.465 4.587 4.499 4.192 3.778 3.452 3.379 3.579 3.895 4.098 4.055 3.830 3.629
+ 4.291 3.695 2.939 2.544 2.716 3.221 3.609 3.596 3.262 2.948 2.962 3.365 3.975 4.538 4.885 4.968 4.810 4.472 4.077 3.819 3.880 4.290 4.851 5.239 5.228 4.862 4.425 4.216 4.329 4.607 4.802 4.784 4.614 4.444 4.366 4.357
+ 4.613 3.814 2.745 2.080 2.179 2.893 3.749 4.308 4.423 4.227 3.948 3.751 3.694 3.765 3.903 3.994 3.912 3.645 3.385 3.469 4.122 5.204 6.203 6.558 6.085 5.160 4.471 4.502 5.188 5.992 6.356 6.112 5.536 5.043 4.833 4.812
+ 4.941 4.656 4.250 3.949 3.903 4.105 4.423 4.688 4.793 4.742 4.618 4.529 4.540 4.639 4.740 4.738 4.587 4.356 4.222 4.362 4.826 5.461 5.981 6.143 5.919 5.528 5.298 5.441 5.914 6.455 6.763 6.686 6.284 5.756 5.302 5.051
+ 3.271 3.561 4.016 4.460 4.754 4.853 4.798 4.668 4.532 4.437 4.423 4.530 4.778 5.126 5.459 5.632 5.554 5.261 4.924 4.766 4.934 5.399 5.965 6.370 6.442 6.202 5.853 5.661 5.801 6.244 6.772 7.102 7.048 6.636 6.089 5.711
+ 3.573 3.862 4.235 4.451 4.414 4.233 4.114 4.188 4.424 4.682 4.840 4.885 4.885 4.909 4.966 5.020 5.041 5.038 5.044 5.093 5.209 5.428 5.783 6.265 6.773 7.137 7.220 7.039 6.782 6.688 6.868 7.214 7.489 7.519 7.342 7.161
+ 4.477 4.391 4.343 4.437 4.626 4.728 4.592 4.254 3.926 3.826 4.002 4.319 4.607 4.832 5.099 5.509 6.008 6.392 6.481 6.303 6.096 6.118 6.428 6.837 7.077 7.034 6.848 6.794 7.048 7.543 8.023 8.233 8.081 7.673 7.226 6.945
+ 4.979 4.446 3.693 3.150 3.093 3.487 4.032 4.376 4.348 4.058 3.803 3.862 4.315 5.008 5.666 6.074 6.197 6.170 6.181 6.335 6.593 6.816 6.879 6.758 6.556 6.433 6.516 6.825 7.264 7.678 7.925 7.938 7.741 7.431 7.130 6.948
+ 5.340 4.717 4.098 4.140 4.904 5.765 5.950 5.202 3.987 3.084 2.961 3.499 4.232 4.825 5.297 5.832 6.452 6.923 7.001 6.740 6.503 6.635 7.129 7.612 7.708 7.407 7.095 7.186 7.724 8.335 8.561 8.270 7.733 7.343 7.257 7.321
+ 3.975 3.853 3.735 3.781 4.062 4.495 4.884 5.045 4.934 4.689 4.552 4.711 5.177 5.767 6.208 6.304 6.061 5.682 5.464 5.635 6.238 7.106 7.939 8.440 8.447 8.010 7.377 6.883 6.794 7.167 7.817 8.417 8.683 8.542 8.169 7.869
+ 3.898 4.152 4.409 4.398 4.082 3.708 3.607 3.922 4.498 5.030 5.321 5.430 5.579 5.925 6.399 6.764 6.835 6.663 6.514 6.663 7.171 7.817 8.248 8.219 7.747 7.090 6.575 6.421 6.641 7.080 7.516 7.774 7.786 7.606 7.361 7.194
+ 3.145 3.612 4.173 4.401 4.171 3.757 3.581 3.858 4.442 4.983 5.244 5.284 5.358 5.658 6.125 6.515 6.630 6.500 6.358 6.441 6.796 7.255 7.578 7.632 7.466 7.245 7.125 7.178 7.382 7.657 7.901 8.013 7.931 7.672 7.350 7.128
+ 4.934 4.569 4.174 4.077 4.269 4.414 4.219 3.765 3.476 3.728 4.475 5.262 5.620 5.471 5.169 5.144 5.521 6.053 6.427 6.578 6.714 7.023 7.406 7.535 7.203 6.605 6.233 6.449 7.136 7.770 7.873 7.431 6.874 6.659 6.858 7.137
+ 5.197 4.666 3.972 3.542 3.526 3.729 3.843 3.746 3.587 3.607 3.890 4.292 4.604 4.758 4.864 5.065 5.369 5.652 5.827 5.966 6.247 6.740 7.278 7.571 7.472 7.151 6.977 7.189 7.670 8.035 7.981 7.564 7.147 7.064 7.320 7.602
+ 4.049 3.630 3.081 2.771 2.893 3.360 3.920 4.348 4.561 4.596 4.511 4.340 4.136 4.020 4.144 4.573 5.196 5.765 6.071 6.101 6.041 6.117 6.397 6.733 6.890 6.750 6.419 6.147 6.143 6.433 6.864 7.228 7.397 7.377 7.265 7.175
+ 4.004 4.045 4.136 4.271 4.412 4.505 4.516 4.468 4.422 4.441 4.546 4.719 4.932 5.170 5.424 5.660 5.820 5.866 5.827 5.811 5.939 6.246 6.634 6.927 6.993 6.853 6.673 6.647 6.865 7.241 7.575 7.678 7.486 7.085 6.656 6.385
+ 4.376 4.278 4.168 4.154 4.284 4.497 4.656 4.649 4.490 4.338 4.407 4.806 5.432 6.000 6.220 5.988 5.472 5.021 4.959 5.403 6.214 7.095 7.746 7.984 7.787 7.279 6.683 6.265 6.228 6.610 7.225 7.736 7.839 7.467 6.853 6.396
+ 4.464 4.248 4.018 3.998 4.234 4.548 4.681 4.514 4.167 3.914 3.985 4.405 4.991 5.480 5.674 5.538 5.193 4.856 4.754 5.031 5.667 6.450 7.061 7.240 6.949 6.406 5.950 5.821 6.018 6.331 6.528 6.516 6.375 6.246 6.202 6.210
+ 6.138 5.513 4.734 4.338 4.475 4.816 4.880 4.493 3.945 3.740 4.143 4.949 5.648 5.834 5.500 4.986 4.673 4.706 4.954 5.198 5.332 5.395 5.454 5.499 5.453 5.293 5.127 5.137 5.430 5.928 6.398 6.608 6.468 6.072 5.628 5.344
+ 5.177 5.014 4.842 4.816 4.920 4.963 4.735 4.210 3.610 3.261 3.375 3.912 4.641 5.314 5.813 6.163 6.425 6.602 6.638 6.505 6.270 6.083 6.077 6.272 6.568 6.815 6.908 6.832 6.639 6.395 6.143 5.902 5.684 5.506 5.381 5.319
+ 4.646 4.287 3.890 3.828 4.207 4.774 5.102 4.925 4.331 3.689 3.377 3.547 4.084 4.754 5.383 5.920 6.361 6.655 6.705 6.469 6.052 5.694 5.622 5.887 6.323 6.666 6.738 6.563 6.318 6.175 6.157 6.127 5.913 5.466 4.933 4.568
+ 5.329 4.864 4.198 3.708 3.658 4.026 4.503 4.692 4.382 3.717 3.120 3.001 3.476 4.278 4.959 5.206 5.019 4.651 4.364 4.243 4.202 4.141 4.074 4.098 4.252 4.424 4.432 4.205 3.885 3.716 3.828 4.091 4.210 3.992 3.534 3.161
+ 5.568 5.436 5.111 4.586 4.005 3.605 3.538 3.727 3.913 3.871 3.606 3.351 3.356 3.662 4.054 4.240 4.097 3.757 3.484 3.445 3.591 3.731 3.716 3.554 3.377 3.307 3.361 3.471 3.560 3.602 3.596 3.515 3.310 2.973 2.593 2.338
+ 5.927 5.558 5.234 5.341 5.797 6.076 5.696 4.700 3.663 3.212 3.507 4.167 4.665 4.793 4.749 4.822 5.047 5.211 5.178 5.145 5.499 6.370 7.354 7.757 7.194 5.996 5.005 4.898 5.643 6.581 7.057 6.998 6.903 7.282 8.100 8.788
+ 5.896 5.313 4.652 4.446 4.747 5.089 4.934 4.181 3.248 2.693 2.747 3.197 3.680 4.033 4.346 4.718 5.031 5.052 4.758 4.511 4.801 5.760 6.914 7.504 7.130 6.139 5.363 5.405 6.126 6.818 6.898 6.471 6.213 6.692 7.765 8.659
+ 5.132 4.487 3.720 3.409 3.673 4.079 4.047 3.398 2.544 2.164 2.631 3.701 4.706 5.083 4.770 4.162 3.716 3.569 3.509 3.268 2.850 2.562 2.741 3.413 4.208 4.613 4.357 3.615 2.877 2.588 2.844 3.366 3.738 3.725 3.419 3.134
+ 3.116 3.249 3.583 4.116 4.660 4.897 4.600 3.847 3.029 2.611 2.823 3.515 4.280 4.745 4.795 4.575 4.309 4.113 3.951 3.753 3.539 3.434 3.557 3.891 4.262 4.466 4.427 4.262 4.194 4.383 4.801 5.250 5.508 5.484 5.275 5.088
+ 5.408 4.821 4.117 3.826 4.080 4.496 4.517 3.893 2.903 2.143 2.073 2.700 3.633 4.413 4.808 4.868 4.748 4.528 4.187 3.726 3.268 3.021 3.121 3.522 4.034 4.482 4.827 5.155 5.551 5.980 6.287 6.309 5.997 5.462 4.917 4.579
+ 5.242 5.123 5.004 5.013 5.158 5.283 5.174 4.734 4.091 3.549 3.386 3.648 4.107 4.427 4.411 4.141 3.886 3.858 4.026 4.157 4.035 3.680 3.341 3.276 3.508 3.785 3.810 3.522 3.181 3.151 3.563 4.160 4.487 4.270 3.669 3.163
+ 5.033 4.669 4.312 4.352 4.826 5.348 5.421 4.862 3.970 3.288 3.179 3.559 4.010 4.151 3.934 3.635 3.568 3.799 4.107 4.204 3.996 3.671 3.522 3.698 4.076 4.373 4.371 4.080 3.706 3.467 3.424 3.451 3.361 3.070 2.677 2.396
+ 6.310 6.059 5.747 5.616 5.769 6.077 6.246 6.037 5.455 4.778 4.370 4.414 4.768 5.088 5.107 4.855 4.615 4.658 4.985 5.322 5.376 5.132 4.889 5.009 5.568 6.258 6.629 6.480 6.028 5.707 5.760 5.998 5.972 5.402 4.486 3.786
+ 12.298 12.027 11.617 11.245 11.022 10.898 10.692 10.227 9.498 8.720 8.199 8.097 8.289 8.461 8.386 8.144 8.072 8.454 9.225 9.957 10.192 9.838 9.285 9.103 9.573 10.446 11.152 11.279 10.898 10.474 10.434 10.817 11.281 11.460 11.303 11.080
+ 13.360 13.943 14.649 14.924 14.531 13.661 12.693 11.876 11.213 10.622 10.136 9.904 10.011 10.327 10.597 10.703 10.816 11.247 12.102 13.079 13.651 13.506 12.843 12.243 12.195 12.711 13.358 13.677 13.579 13.367 13.373 13.608 13.758 13.527 12.976 12.509
+ 13.651 14.398 15.424 16.117 16.115 15.459 14.449 13.401 12.513 11.899 11.643 11.749 12.056 12.275 12.205 11.969 11.994 12.674 13.972 15.335 16.065 15.870 15.102 14.468 14.449 14.945 15.460 15.630 15.555 15.627 16.003 16.299 15.845 14.346 12.321 10.863
+ 14.029 14.855 16.002 16.814 16.914 16.348 15.423 14.436 13.547 12.851 12.459 12.434 12.664 12.856 12.769 12.493 12.470 13.154 14.558 16.115 17.047 16.961 16.169 15.420 15.290 15.763 16.368 16.696 16.781 16.954 17.341 17.548 16.919 15.194 12.953 11.364
+ 13.851 14.875 16.254 17.163 17.187 16.495 15.528 14.596 13.755 12.998 12.461 12.337 12.611 12.944 12.945 12.606 12.439 13.072 14.622 16.433 17.510 17.327 16.275 15.343 15.277 16.009 16.837 17.177 17.101 17.157 17.632 18.060 17.534 15.607 12.937 10.996
+ 13.756 14.852 16.318 17.261 17.249 16.482 15.448 14.474 13.592 12.775 12.171 12.016 12.322 12.734 12.803 12.478 12.282 12.898 14.488 16.395 17.576 17.461 16.440 15.529 15.498 16.251 17.039 17.258 17.039 17.022 17.555 18.147 17.793 15.958 13.289 11.316
+ 13.677 14.809 16.296 17.203 17.106 16.266 15.228 14.309 13.480 12.652 11.975 11.751 12.062 12.556 12.724 12.436 12.183 12.683 14.162 16.001 17.159 17.050 16.060 15.211 15.251 16.031 16.756 16.836 16.491 16.464 17.138 17.931 17.696 15.809 12.962 10.837
+ 13.690 14.657 15.894 16.564 16.312 15.404 14.358 13.478 12.734 12.030 11.475 11.313 11.598 12.018 12.153 11.934 11.827 12.438 13.873 15.483 16.328 15.983 14.956 14.255 14.502 15.397 16.070 15.977 15.454 15.357 16.094 17.040 16.959 15.170 12.357 10.234
+ 12.616 13.186 13.904 14.269 14.090 13.572 13.074 12.794 12.664 12.508 12.247 11.930 11.609 11.246 10.808 10.432 10.441 11.089 12.257 13.412 13.966 13.752 13.174 12.855 13.084 13.570 13.765 13.454 13.025 13.114 13.921 14.865 14.975 13.754 11.737 10.201
+ 12.757 12.753 12.522 11.869 10.868 9.862 9.209 8.999 9.014 8.938 8.618 8.139 7.680 7.348 7.145 7.075 7.218 7.657 8.313 8.913 9.166 9.022 8.734 8.634 8.808 9.007 8.907 8.507 8.225 8.560 9.554 10.602 10.842 9.874 8.194 6.903
+ 12.075 12.032 11.668 10.770 9.494 8.315 7.637 7.452 7.391 7.100 6.558 6.026 5.715 5.567 5.391 5.203 5.342 6.151 7.507 8.715 8.991 8.155 6.866 6.112 6.367 7.191 7.689 7.405 6.803 6.809 7.825 9.156 9.495 8.094 5.584 3.627
+ 12.786 12.432 11.677 10.593 9.463 8.629 8.196 7.907 7.374 6.467 5.481 4.869 4.801 4.986 4.989 4.731 4.648 5.277 6.635 8.024 8.532 7.838 6.556 5.746 6.001 6.939 7.604 7.396 6.658 6.313 6.904 7.943 8.273 7.142 5.019 3.337
+ 12.371 12.014 11.290 10.287 9.243 8.427 7.927 7.575 7.112 6.453 5.776 5.328 5.143 4.998 4.680 4.322 4.385 5.238 6.687 7.955 8.239 7.396 6.122 5.399 5.667 6.468 6.923 6.595 5.929 5.809 6.626 7.745 7.962 6.592 4.222 2.391
+ 11.872 11.896 11.745 11.220 10.305 9.189 8.096 7.147 6.374 5.846 5.716 6.081 6.800 7.489 7.776 7.619 7.351 7.386 7.807 8.269 8.315 7.853 7.295 7.196 7.701 8.343 8.428 7.707 6.687 6.248 6.869 8.158 9.144 9.112 8.224 7.374
+ 11.854 12.617 13.463 13.627 12.904 11.761 10.868 10.521 10.496 10.409 10.159 9.992 10.159 10.578 10.888 10.849 10.651 10.748 11.373 12.209 12.624 12.272 11.484 11.017 11.361 12.256 12.914 12.757 11.981 11.395 11.655 12.640 13.553 13.671 13.021 12.337
+ 12.346 12.779 13.289 13.464 13.154 12.538 11.915 11.440 11.075 10.744 10.485 10.422 10.580 10.792 10.845 10.736 10.769 11.310 12.403 13.608 14.277 14.068 13.256 12.526 12.425 12.934 13.557 13.804 13.636 13.443 13.622 14.165 14.666 14.729 14.364 13.980
+ 12.629 13.600 14.813 15.403 15.028 14.028 13.024 12.376 12.011 11.696 11.381 11.232 11.357 11.583 11.603 11.365 11.260 11.822 13.168 14.734 15.640 15.421 14.453 13.634 13.603 14.194 14.662 14.457 13.779 13.380 13.777 14.659 15.102 14.440 12.956 11.733
+ 13.321 14.278 15.499 16.164 15.940 15.110 14.182 13.404 12.684 11.905 11.234 11.031 11.444 12.136 12.518 12.317 11.913 12.058 13.167 14.849 16.158 16.368 15.585 14.617 14.241 14.547 14.973 14.955 14.511 14.189 14.435 15.040 15.266 14.564 13.190 12.083
+ 13.437 14.456 15.750 16.444 16.194 15.331 14.420 13.726 13.103 12.347 11.572 11.170 11.385 11.978 12.387 12.283 11.953 12.092 13.131 14.750 16.065 16.352 15.665 14.749 14.363 14.634 15.056 15.083 14.693 14.360 14.478 14.840 14.772 13.801 12.236 11.034
+ 13.339 14.428 15.804 16.531 16.260 15.377 14.517 13.959 13.501 12.854 12.081 11.589 11.683 12.179 12.541 12.429 12.108 12.242 13.239 14.764 15.946 16.120 15.421 14.647 14.520 15.049 15.592 15.545 14.945 14.397 14.390 14.720 14.627 13.568 11.860 10.547
+ 13.119 14.246 15.631 16.274 15.844 14.821 13.931 13.467 13.145 12.577 11.790 11.242 11.316 11.864 12.315 12.271 11.971 12.104 13.107 14.634 15.768 15.817 14.946 14.030 13.853 14.410 14.993 14.935 14.284 13.702 13.721 14.101 14.002 12.823 10.923 9.463
+ 12.637 13.673 14.882 15.290 14.611 13.388 12.404 11.979 11.823 11.503 10.974 10.609 10.725 11.163 11.421 11.224 10.920 11.211 12.425 14.054 15.082 14.862 13.720 12.682 12.548 13.188 13.733 13.477 12.593 11.951 12.200 13.036 13.413 12.548 10.759 9.301
+ 11.651 12.021 12.384 12.329 11.768 10.969 10.268 9.776 9.370 8.932 8.546 8.397 8.510 8.649 8.547 8.265 8.259 8.994 10.419 11.841 12.410 11.832 10.660 9.839 9.885 10.453 10.715 10.202 9.305 8.918 9.538 10.685 11.239 10.452 8.704 7.271
+ 12.335 12.173 11.630 10.570 9.207 8.029 7.415 7.322 7.337 7.069 6.478 5.839 5.407 5.161 4.907 4.619 4.607 5.270 6.619 8.072 8.810 8.433 7.328 6.365 6.169 6.614 7.007 6.789 6.083 5.561 5.773 6.579 7.254 7.171 6.407 5.682
+ 11.465 11.402 10.891 9.629 7.858 6.339 5.803 6.371 7.443 8.174 8.099 7.384 6.547 5.970 5.663 5.453 5.302 5.409 5.963 6.848 7.628 7.868 7.497 6.865 6.421 6.346 6.470 6.524 6.450 6.435 6.650 6.987 7.102 6.743 6.048 5.491
+ 10.803 10.935 10.829 10.138 8.933 7.727 7.073 7.114 7.485 7.635 7.273 6.532 5.765 5.219 4.903 4.736 4.746 5.075 5.756 6.539 6.990 6.833 6.206 5.584 5.394 5.681 6.120 6.359 6.351 6.355 6.617 7.075 7.380 7.244 6.747 6.305
+ 8.983 9.160 9.277 9.069 8.481 7.719 7.073 6.696 6.508 6.314 6.002 5.637 5.373 5.298 5.349 5.391 5.352 5.286 5.303 5.440 5.612 5.690 5.624 5.494 5.434 5.504 5.643 5.732 5.721 5.683 5.760 6.046 6.515 7.038 7.469 7.706
+ 9.353 9.759 10.090 9.799 8.744 7.307 6.077 5.404 5.201 5.136 4.981 4.781 4.712 4.823 4.941 4.847 4.540 4.294 4.434 5.030 5.791 6.281 6.272 5.918 5.606 5.626 5.947 6.284 6.373 6.202 6.020 6.127 6.657 7.483 8.306 8.812
+ 9.143 9.656 9.971 9.350 7.766 5.989 4.956 5.001 5.629 6.020 5.752 5.086 4.599 4.573 4.762 4.713 4.305 3.920 4.084 4.918 5.953 6.500 6.245 5.518 5.003 5.168 5.923 6.774 7.275 7.350 7.243 7.220 7.339 7.485 7.553 7.556
+ 10.512 10.498 10.235 9.562 8.667 8.019 7.983 8.467 8.977 9.034 8.588 8.037 7.841 8.092 8.457 8.508 8.134 7.629 7.389 7.549 7.884 8.083 8.068 8.061 8.327 8.879 9.449 9.762 9.813 9.857 10.128 10.561 10.825 10.652 10.133 9.685
+ 11.543 11.830 12.058 11.878 11.285 10.630 10.283 10.295 10.377 10.215 9.792 9.399 9.320 9.532 9.723 9.615 9.263 9.018 9.178 9.678 10.139 10.234 10.018 9.880 10.170 10.856 11.548 11.881 11.859 11.830 12.117 12.668 13.091 13.040 12.575 12.136
+ 11.387 12.172 13.114 13.495 13.089 12.264 11.562 11.208 11.006 10.674 10.202 9.849 9.794 9.877 9.742 9.288 8.932 9.312 10.667 12.453 13.666 13.629 12.581 11.499 11.294 12.082 13.171 13.743 13.570 13.133 13.076 13.570 14.199 14.433 14.174 13.823
+ 12.718 13.571 14.642 15.182 14.896 14.074 13.220 12.593 12.096 11.552 11.016 10.749 10.902 11.279 11.496 11.402 11.319 11.786 12.990 14.452 15.321 15.088 14.053 13.104 12.970 13.612 14.319 14.398 13.812 13.171 13.113 13.694 14.359 14.511 14.096 13.624
+ 13.401 14.142 15.137 15.782 15.766 15.200 14.399 13.602 12.887 12.299 11.967 12.017 12.365 12.668 12.577 12.102 11.720 12.027 13.200 14.750 15.839 15.935 15.230 14.448 14.223 14.597 15.093 15.244 15.043 14.880 15.044 15.326 15.156 14.178 12.711 11.612
+ 13.549 14.464 15.706 16.532 16.548 15.873 14.899 13.947 13.132 12.487 12.108 12.100 12.394 12.688 12.676 12.384 12.248 12.774 14.030 15.479 16.349 16.269 15.586 15.051 15.145 15.681 16.047 15.863 15.376 15.201 15.613 16.132 15.850 14.296 12.023 10.343
+ 13.547 14.525 15.861 16.771 16.832 16.161 15.176 14.232 13.460 12.884 12.564 12.574 12.830 13.047 12.960 12.635 12.528 13.129 14.473 15.986 16.876 16.777 16.052 15.468 15.512 15.995 16.300 16.048 15.500 15.282 15.677 16.203 15.942 14.410 12.152 10.479
+ 13.434 14.477 15.914 16.917 17.025 16.346 15.321 14.342 13.574 13.036 12.759 12.777 12.992 13.142 13.002 12.668 12.589 13.215 14.543 15.988 16.789 16.630 15.914 15.409 15.569 16.143 16.463 16.123 15.400 14.985 15.251 15.800 15.746 14.556 12.656 11.210
+ 13.488 14.494 15.857 16.758 16.751 15.959 14.839 13.795 13.004 12.494 12.286 12.381 12.635 12.769 12.601 12.318 12.429 13.346 14.913 16.367 16.884 16.270 15.167 14.533 14.811 15.559 15.897 15.373 14.430 13.987 14.508 15.440 15.619 14.341 12.117 10.388
+ 13.497 14.191 15.175 15.894 15.952 15.295 14.180 12.997 12.100 11.676 11.697 11.922 12.015 11.773 11.331 11.157 11.744 13.173 14.908 16.071 16.065 15.057 13.892 13.442 13.914 14.720 15.025 14.523 13.722 13.469 14.120 15.121 15.428 14.437 12.602 11.161
+ 13.016 13.584 14.315 14.693 14.462 13.773 13.032 12.594 12.527 12.614 12.536 12.090 11.310 10.463 9.936 10.068 10.956 12.342 13.675 14.387 14.230 13.466 12.693 12.428 12.734 13.220 13.417 13.218 12.979 13.164 13.841 14.502 14.420 13.291 11.596 10.345
+ 12.867 13.628 14.687 15.424 15.442 14.757 13.707 12.693 11.964 11.560 11.377 11.265 11.106 10.886 10.735 10.894 11.558 12.660 13.804 14.449 14.290 13.530 12.774 12.591 13.065 13.746 14.063 13.845 13.483 13.548 14.194 14.909 14.883 13.733 11.946 10.608
+ 13.719 13.997 14.553 15.237 15.654 15.338 14.117 12.370 10.880 10.327 10.790 11.679 12.190 11.940 11.271 10.965 11.589 13.011 14.474 15.176 14.875 14.041 13.443 13.529 14.106 14.567 14.446 13.835 13.295 13.359 14.039 14.758 14.790 13.854 12.397 11.316
+ 13.991 14.303 14.869 15.502 15.871 15.635 14.687 13.303 12.038 11.384 11.427 11.797 11.965 11.687 11.221 11.139 11.846 13.205 14.585 15.305 15.150 14.514 14.067 14.210 14.756 15.119 14.845 14.026 13.253 13.105 13.620 14.194 14.040 12.848 11.116 9.852
+ 13.935 14.402 15.133 15.797 16.061 15.730 14.838 13.668 12.638 12.100 12.138 12.497 12.747 12.594 12.131 11.816 12.141 13.217 14.613 15.612 15.729 15.081 14.290 13.993 14.344 14.927 15.164 14.837 14.268 13.980 14.152 14.375 13.975 12.649 10.850 9.556
+ 13.873 14.529 15.460 16.168 16.329 15.921 15.127 14.175 13.269 12.599 12.322 12.444 12.747 12.888 12.689 12.369 12.435 13.257 14.659 15.940 16.382 15.848 14.919 14.425 14.733 15.453 15.832 15.474 14.714 14.264 14.457 14.820 14.434 12.813 10.504 8.808
+ 13.667 14.483 15.538 16.157 16.071 15.511 14.871 14.313 13.730 13.027 12.365 12.053 12.201 12.545 12.689 12.558 12.562 13.224 14.588 16.007 16.611 16.078 14.979 14.307 14.598 15.445 15.908 15.440 14.433 13.822 14.098 14.689 14.383 12.487 9.647 7.527
+ 13.766 14.492 15.366 15.731 15.391 14.692 14.112 13.805 13.523 12.971 12.173 11.487 11.249 11.463 11.852 12.212 12.645 13.399 14.470 15.426 15.719 15.221 14.442 14.121 14.549 15.255 15.444 14.782 13.782 13.337 13.792 14.451 14.080 12.043 9.069 6.873
+ 12.975 13.741 14.626 14.879 14.267 13.218 12.416 12.219 12.426 12.532 12.205 11.527 10.865 10.548 10.676 11.178 11.952 12.883 13.762 14.272 14.188 13.620 13.038 12.934 13.389 13.946 13.987 13.300 12.309 11.702 11.750 11.967 11.479 9.847 7.603 5.974
+ 10.590 11.649 12.717 12.636 11.173 9.233 8.079 8.281 9.307 10.076 9.916 9.073 8.370 8.419 9.119 9.855 10.110 9.891 9.606 9.594 9.813 9.939 9.731 9.249 8.733 8.329 7.984 7.602 7.244 7.107 7.257 7.431 7.173 6.250 4.968 4.033
+ 10.192 10.958 11.627 11.272 9.757 7.870 6.625 6.404 6.710 6.719 6.075 5.188 4.795 5.259 6.276 7.206 7.666 7.771 7.869 8.078 8.151 7.784 7.010 6.237 5.875 5.944 6.073 5.908 5.497 5.239 5.428 5.866 5.973 5.341 4.194 3.287
+ 11.038 11.550 11.882 11.310 9.788 8.020 6.861 6.610 6.842 6.898 6.512 5.998 5.856 6.249 6.874 7.313 7.452 7.517 7.720 7.938 7.801 7.126 6.219 5.660 5.751 6.169 6.231 5.573 4.568 4.036 4.462 5.459 6.043 5.509 4.126 2.958
+ 10.495 10.927 11.132 10.448 8.887 7.182 6.163 6.042 6.290 6.185 5.510 4.718 4.461 4.956 5.798 6.371 6.424 6.241 6.275 6.649 7.032 6.996 6.459 5.763 5.315 5.187 5.096 4.782 4.357 4.231 4.655 5.359 5.697 5.223 4.162 3.289
+ 9.213 9.671 10.076 9.853 8.856 7.477 6.307 5.677 5.488 5.426 5.298 5.171 5.206 5.434 5.725 5.964 6.207 6.611 7.188 7.676 7.704 7.149 6.320 5.748 5.736 6.086 6.283 5.983 5.347 4.893 4.981 5.440 5.696 5.315 4.442 3.717
+ 9.447 9.304 8.845 7.968 6.879 6.038 5.832 6.245 6.857 7.162 6.951 6.434 6.010 5.928 6.130 6.381 6.514 6.553 6.619 6.760 6.901 6.949 6.908 6.865 6.857 6.773 6.453 5.885 5.309 5.055 5.249 5.642 5.782 5.393 4.645 4.051
+ 8.714 9.394 10.070 10.005 9.106 8.049 7.725 8.478 9.801 10.743 10.668 9.724 8.669 8.238 8.612 9.379 9.949 10.022 9.739 9.465 9.461 9.729 10.074 10.287 10.243 9.916 9.355 8.687 8.104 7.781 7.752 7.847 7.798 7.454 6.930 6.536
+ 8.356 8.712 8.931 8.505 7.438 6.326 5.901 6.425 7.454 8.177 8.039 7.148 6.137 5.648 5.865 6.452 6.891 6.896 6.575 6.267 6.244 6.521 6.898 7.128 7.066 6.718 6.207 5.703 5.363 5.264 5.348 5.436 5.332 4.967 4.477 4.127
+ 8.685 7.914 6.855 6.124 6.022 6.331 6.497 6.065 5.052 3.949 3.355 3.527 4.185 4.739 4.758 4.294 3.813 3.790 4.309 5.006 5.389 5.245 4.792 4.447 4.446 4.657 4.741 4.511 4.125 3.933 4.127 4.520 4.684 4.343 3.649 3.089
+ 6.327 6.151 5.882 5.638 5.497 5.458 5.451 5.390 5.226 4.974 4.690 4.439 4.254 4.142 4.098 4.133 4.273 4.535 4.889 5.245 5.474 5.459 5.168 4.684 4.182 3.853 3.808 4.026 4.354 4.590 4.572 4.251 3.699 3.069 2.534 2.229
+ 4.034 4.600 5.338 5.768 5.672 5.201 4.679 4.319 4.119 3.978 3.876 3.909 4.139 4.465 4.665 4.601 4.386 4.307 4.568 5.069 5.460 5.429 4.971 4.392 4.041 4.027 4.166 4.190 4.008 3.757 3.628 3.649 3.661 3.495 3.174 2.910
+ 3.869 4.431 5.159 5.567 5.434 4.927 4.410 4.141 4.105 4.105 3.982 3.746 3.528 3.427 3.438 3.499 3.602 3.817 4.199 4.682 5.077 5.199 5.009 4.630 4.239 3.933 3.704 3.519 3.410 3.450 3.643 3.848 3.852 3.548 3.065 2.700
+ 4.660 4.849 5.029 4.994 4.718 4.352 4.057 3.852 3.647 3.415 3.299 3.499 4.036 4.642 4.929 4.727 4.268 4.027 4.322 5.031 5.684 5.857 5.498 4.922 4.489 4.292 4.149 3.874 3.521 3.341 3.495 3.817 3.908 3.502 2.754 2.161
+ 5.511 5.103 4.650 4.534 4.797 5.091 5.002 4.445 3.765 3.451 3.714 4.303 4.722 4.658 4.235 3.894 4.009 4.581 5.258 5.639 5.581 5.260 4.961 4.819 4.736 4.524 4.119 3.673 3.427 3.503 3.778 3.959 3.791 3.245 2.557 2.084
+ 4.873 4.800 4.759 4.845 5.029 5.143 5.000 4.561 3.999 3.597 3.535 3.752 3.983 3.969 3.675 3.334 3.265 3.609 4.191 4.635 4.643 4.233 3.726 3.501 3.707 4.160 4.499 4.468 4.084 3.585 3.204 2.995 2.837 2.600 2.294 2.067
+ 6.073 5.269 4.199 3.540 3.624 4.213 4.714 4.654 4.047 3.364 3.147 3.559 4.250 4.636 4.380 3.668 3.073 3.095 3.766 4.620 5.061 4.814 4.107 3.451 3.232 3.448 3.784 3.929 3.819 3.618 3.495 3.418 3.198 2.706 2.067 1.607
+ 6.035 5.258 4.218 3.553 3.561 4.022 4.435 4.432 4.037 3.576 3.367 3.469 3.689 3.801 3.750 3.671 3.728 3.954 4.224 4.378 4.356 4.226 4.092 3.989 3.874 3.698 3.491 3.354 3.374 3.529 3.680 3.653 3.360 2.861 2.339 2.009
+ 3.699 3.979 4.418 4.798 4.882 4.538 3.854 3.146 2.805 3.068 3.840 4.729 5.279 5.251 4.760 4.180 3.879 3.991 4.361 4.696 4.773 4.572 4.242 3.966 3.834 3.814 3.814 3.765 3.666 3.550 3.444 3.332 3.187 3.000 2.812 2.691
+ 4.305 4.174 4.103 4.268 4.621 4.880 4.756 4.219 3.565 3.212 3.379 3.912 4.410 4.533 4.258 3.868 3.713 3.932 4.372 4.734 4.807 4.604 4.302 4.067 3.930 3.800 3.586 3.305 3.069 2.983 3.037 3.093 2.992 2.683 2.281 1.999
+ 4.100 3.994 3.901 3.947 4.147 4.371 4.437 4.252 3.911 3.636 3.631 3.941 4.421 4.842 5.048 5.032 4.901 4.761 4.641 4.503 4.323 4.142 4.039 4.042 4.063 3.952 3.623 3.151 2.749 2.608 2.735 2.924 2.908 2.567 2.046 1.659
+ 5.534 5.462 5.302 5.036 4.663 4.215 3.763 3.403 3.234 3.318 3.638 4.081 4.469 4.640 4.538 4.256 3.986 3.906 4.068 4.373 4.639 4.725 4.607 4.363 4.099 3.868 3.663 3.458 3.257 3.099 3.019 3.002 2.996 2.952 2.873 2.810
+ 5.202 4.572 3.783 3.403 3.658 4.271 4.705 4.582 3.958 3.240 2.856 2.958 3.368 3.777 3.978 3.973 3.891 3.845 3.859 3.900 3.938 3.970 3.976 3.899 3.675 3.317 2.947 2.746 2.830 3.148 3.494 3.626 3.412 2.909 2.338 1.964
+ 5.796 5.169 4.338 3.833 3.897 4.305 4.546 4.221 3.380 2.510 2.196 2.682 3.688 4.609 4.946 4.643 4.070 3.693 3.704 3.920 3.994 3.743 3.294 2.946 2.885 3.027 3.130 3.047 2.874 2.847 3.081 3.412 3.514 3.193 2.595 2.123
+ 6.703 5.829 4.664 3.914 3.870 4.209 4.300 3.753 2.768 1.999 2.046 2.977 4.263 5.159 5.231 4.623 3.888 3.545 3.728 4.165 4.471 4.454 4.217 3.986 3.874 3.795 3.594 3.247 2.929 2.866 3.118 3.483 3.639 3.409 2.925 2.536
+ 5.619 6.502 7.891 9.250 10.165 10.504 10.362 9.915 9.299 8.622 8.034 7.744 7.921 8.551 9.377 10.004 10.127 9.711 8.995 8.335 7.972 7.926 8.036 8.111 8.070 7.959 7.876 7.871 7.901 7.869 7.698 7.381 6.984 6.601 6.312 6.159
+ 5.627 6.114 7.143 8.664 10.357 11.683 12.133 11.520 10.093 8.410 7.080 6.531 6.900 8.022 9.467 10.657 11.062 10.474 9.155 7.735 6.848 6.738 7.149 7.567 7.647 7.451 7.317 7.488 7.857 8.058 7.815 7.213 6.641 6.444 6.627 6.874
+ 4.668 4.282 3.968 4.333 5.697 7.809 9.892 11.009 10.570 8.682 6.147 4.084 3.354 4.112 5.742 7.240 7.822 7.371 6.456 5.886 6.131 7.013 7.888 8.161 7.730 7.024 6.614 6.744 7.166 7.411 7.238 6.868 6.784 7.280 8.154 8.834
+ 4.736 4.814 4.893 4.974 5.246 5.963 7.159 8.466 9.274 9.160 8.250 7.189 6.696 7.061 7.965 8.763 8.980 8.609 8.016 7.585 7.422 7.358 7.178 6.836 6.475 6.271 6.275 6.397 6.515 6.576 6.601 6.615 6.599 6.521 6.397 6.299
+ 6.202 6.096 6.131 6.599 7.592 8.916 10.205 11.135 11.576 11.604 11.424 11.278 11.373 11.799 12.450 13.025 13.155 12.656 11.703 10.764 10.289 10.368 10.646 10.594 9.945 8.931 8.118 7.965 8.462 9.144 9.441 9.076 8.202 7.212 6.449 6.061
+ 11.136 11.305 11.572 11.859 12.163 12.580 13.240 14.171 15.198 15.991 16.263 15.999 15.513 15.247 15.432 15.872 16.056 15.552 14.373 13.010 12.070 11.803 11.902 11.762 11.000 9.812 8.867 8.813 9.772 11.213 12.282 12.326 11.243 9.481 7.753 6.705
+ 11.454 11.725 12.102 12.390 12.544 12.741 13.269 14.283 15.611 16.772 17.268 16.942 16.147 15.528 15.558 16.165 16.753 16.654 15.658 14.208 13.076 12.773 13.145 13.500 13.160 12.013 10.625 9.828 10.104 11.220 12.358 12.639 11.651 9.684 7.557 6.195
+ 11.782 11.905 12.123 12.388 12.681 13.061 13.672 14.622 15.807 16.840 17.230 16.749 15.704 14.829 14.793 15.670 16.818 17.320 16.692 15.279 14.011 13.674 14.294 15.120 15.229 14.256 12.676 11.424 11.186 11.897 12.811 13.031 12.095 10.236 8.221 6.931
+ 12.185 12.358 12.646 12.972 13.310 13.722 14.334 15.208 16.211 16.997 17.189 16.669 15.743 15.015 14.982 15.659 16.527 16.902 16.448 15.442 14.551 14.308 14.679 15.104 14.950 14.018 12.703 11.687 11.424 11.824 12.339 12.357 11.595 10.248 8.844 7.961
+ 12.617 12.790 13.062 13.360 13.698 14.186 14.931 15.903 16.866 17.456 17.392 16.675 15.646 14.839 14.683 15.249 16.205 17.016 17.277 16.952 16.362 15.934 15.869 15.998 15.909 15.280 14.165 13.009 12.360 12.464 13.047 13.461 13.115 11.910 10.356 9.274
+ 12.879 13.032 13.305 13.687 14.222 14.948 15.794 16.543 16.935 16.831 16.308 15.590 14.907 14.397 14.141 14.227 14.726 15.564 16.434 16.916 16.761 16.115 15.422 15.051 14.947 14.671 13.829 12.546 11.486 11.339 12.160 13.174 13.305 12.057 10.005 8.450
+ 13.166 13.449 13.951 14.592 15.304 15.997 16.512 16.662 16.360 15.731 15.056 14.575 14.308 14.097 13.845 13.710 14.023 14.945 16.189 17.125 17.239 16.575 15.704 15.214 15.155 14.998 14.186 12.801 11.656 11.635 12.799 14.107 14.121 12.210 9.217 6.978
+ 12.892 13.305 14.011 14.829 15.565 16.037 16.087 15.651 14.854 14.013 13.467 13.330 13.388 13.286 12.908 12.573 12.820 13.900 15.419 16.540 16.628 15.804 14.863 14.556 14.879 15.039 14.216 12.448 10.788 10.454 11.682 13.307 13.589 11.666 8.421 5.940
+ 13.066 13.665 14.531 15.225 15.463 15.217 14.649 13.966 13.355 12.963 12.861 12.966 13.036 12.836 12.389 12.077 12.392 13.479 14.877 15.779 15.673 14.824 14.103 14.213 14.987 15.439 14.626 12.608 10.578 9.944 11.068 12.794 13.291 11.585 8.489 6.076
+ 13.322 13.858 14.676 15.436 15.884 15.915 15.523 14.771 13.818 12.951 12.466 12.454 12.678 12.739 12.459 12.115 12.261 13.201 14.594 15.620 15.653 14.850 14.073 14.105 14.866 15.371 14.598 12.527 10.353 9.575 10.659 12.486 13.169 11.642 8.658 6.291
+ 13.842 14.378 15.150 15.793 16.114 16.122 15.874 15.355 14.547 13.600 12.852 12.595 12.801 13.099 13.113 12.857 12.778 13.346 14.541 15.769 16.333 16.058 15.456 15.216 15.498 15.714 15.093 13.528 11.867 11.255 12.068 13.407 13.740 12.212 9.497 7.386
+ 13.825 14.384 15.163 15.764 16.021 16.024 15.893 15.594 15.006 14.161 13.354 12.939 13.000 13.236 13.244 12.958 12.780 13.234 14.423 15.843 16.761 16.844 16.423 16.114 16.157 16.141 15.443 13.976 12.471 11.934 12.672 13.842 14.030 12.466 9.811 7.770
+ 13.686 14.347 15.257 15.921 16.115 15.956 15.664 15.304 14.779 14.048 13.292 12.814 12.749 12.903 12.932 12.707 12.503 12.778 13.729 15.048 16.134 16.586 16.493 16.253 16.112 15.901 15.271 14.189 13.147 12.798 13.289 13.955 13.766 12.217 9.901 8.183
+ 14.171 14.535 15.042 15.439 15.626 15.647 15.532 15.189 14.491 13.489 12.490 11.875 11.789 12.011 12.164 12.086 12.006 12.339 13.275 14.551 15.645 16.205 16.298 16.240 16.207 16.028 15.423 14.427 13.542 13.356 13.936 14.588 14.317 12.688 10.329 8.599
+ 14.319 14.586 14.862 14.890 14.660 14.404 14.336 14.407 14.337 13.887 13.110 12.319 11.810 11.615 11.532 11.393 11.285 11.491 12.200 13.285 14.367 15.116 15.471 15.583 15.550 15.278 14.623 13.694 12.928 12.785 13.268 13.761 13.433 11.945 9.863 8.353
+ 14.579 14.525 14.334 13.973 13.559 13.311 13.360 13.600 13.739 13.523 12.938 12.206 11.593 11.201 10.940 10.695 10.498 10.543 11.021 11.928 13.034 14.014 14.628 14.792 14.528 13.896 13.024 12.153 11.603 11.577 11.950 12.260 11.990 10.978 9.619 8.651
+ 15.472 15.280 14.772 13.896 12.847 12.010 11.681 11.822 12.068 12.017 11.543 10.865 10.335 10.137 10.179 10.229 10.166 10.085 10.195 10.616 11.280 11.980 12.497 12.668 12.394 11.658 10.598 9.571 9.047 9.322 10.234 11.163 11.402 10.677 9.402 8.427
+ 15.687 15.277 14.500 13.491 12.495 11.796 11.564 11.727 11.984 11.970 11.489 10.650 9.806 9.336 9.409 9.876 10.371 10.557 10.357 10.022 9.977 10.508 11.502 12.412 12.546 11.521 9.601 7.654 6.683 7.196 8.843 10.596 11.401 10.871 9.537 8.456
+ 15.551 15.194 14.546 13.732 12.916 12.273 11.933 11.913 12.065 12.119 11.816 11.096 10.182 9.485 9.342 9.767 10.418 10.833 10.781 10.461 10.359 10.851 11.827 12.674 12.653 11.447 9.469 7.697 7.081 7.948 9.763 11.458 12.091 11.428 10.062 9.003
+ 15.247 14.980 14.488 13.841 13.132 12.486 12.044 11.889 11.950 11.981 11.677 10.915 9.905 9.120 8.983 9.533 10.359 10.894 10.857 10.495 10.391 10.967 12.071 13.003 12.995 11.796 9.919 8.351 7.924 8.798 10.384 11.741 12.158 11.546 10.431 9.596
+ 14.873 14.676 14.316 13.853 13.355 12.894 12.528 12.266 12.041 11.717 11.175 10.428 9.672 9.200 9.200 9.597 10.076 10.302 10.197 10.035 10.260 11.120 12.419 13.569 13.964 13.393 12.212 11.128 10.754 11.229 12.146 12.843 12.819 12.042 10.953 10.184
+ 14.652 14.396 13.971 13.537 13.266 13.256 13.444 13.598 13.425 12.754 11.684 10.565 9.816 9.661 9.974 10.351 10.382 9.953 9.359 9.141 9.741 11.181 12.999 14.486 15.080 14.682 13.699 12.782 12.441 12.754 13.352 13.669 13.308 12.292 11.064 10.235
+ 13.832 13.884 13.874 13.706 13.439 13.259 13.296 13.454 13.426 12.924 11.946 10.840 10.087 9.946 10.247 10.503 10.284 9.576 8.837 8.703 9.552 11.221 13.083 14.415 14.822 14.431 13.764 13.382 13.543 14.065 14.457 14.221 13.158 11.500 9.820 8.767
+ 13.438 13.760 14.108 14.147 13.788 13.258 12.892 12.822 12.845 12.591 11.855 10.813 9.918 9.546 9.689 9.944 9.840 9.251 8.549 8.367 9.137 10.740 12.556 13.855 14.274 14.002 13.596 13.555 13.984 14.558 14.783 14.327 13.214 11.779 10.487 9.733
+ 13.338 13.706 14.126 14.226 13.870 13.254 12.720 12.454 12.329 12.029 11.351 10.414 9.597 9.230 9.317 9.510 9.403 8.894 8.328 8.273 9.096 10.646 12.320 13.450 13.748 13.463 13.162 13.298 13.903 14.585 14.831 14.339 13.185 11.747 10.485 9.762
+ 13.150 13.502 13.916 14.048 13.771 13.245 12.735 12.357 11.990 11.425 10.615 9.776 9.243 9.173 9.384 9.474 9.150 8.502 7.994 8.151 9.176 10.781 12.355 13.349 13.597 13.377 13.171 13.334 13.878 14.493 14.760 14.406 13.440 12.147 10.947 10.232
+ 13.016 13.416 13.907 14.115 13.889 13.374 12.847 12.452 12.099 11.586 10.837 10.016 9.401 9.150 9.145 9.099 8.818 8.414 8.275 8.791 10.052 11.734 13.264 14.148 14.241 13.795 13.276 13.085 13.341 13.844 14.208 14.076 13.321 12.124 10.907 10.144
+ 13.226 13.590 14.074 14.351 14.225 13.737 13.110 12.567 12.163 11.776 11.247 10.554 9.863 9.403 9.275 9.367 9.477 9.542 9.760 10.456 11.765 13.394 14.692 15.038 14.274 12.854 11.568 11.039 11.352 12.069 12.587 12.534 11.945 11.131 10.429 10.043
+ 13.129 13.529 14.098 14.490 14.434 13.888 13.062 12.277 11.731 11.371 10.977 10.404 9.763 9.362 9.438 9.924 10.490 10.847 11.042 11.424 12.276 13.410 14.157 13.822 12.288 10.232 8.737 8.546 9.565 10.981 11.890 11.904 11.288 10.583 10.149 9.996
+ 13.246 13.621 14.173 14.578 14.539 13.946 12.957 11.906 11.086 10.566 10.199 9.828 9.493 9.424 9.811 10.561 11.302 11.671 11.645 11.580 11.867 12.503 12.972 12.621 11.226 9.291 7.758 7.354 8.083 9.278 10.132 10.262 9.856 9.363 9.081 9.001
+ 13.395 13.742 14.247 14.602 14.514 13.893 12.948 12.080 11.600 11.485 11.392 10.975 10.231 9.569 9.491 10.154 11.197 12.018 12.260 12.083 11.946 12.122 12.380 12.172 11.152 9.580 8.201 7.695 8.165 9.080 9.714 9.680 9.111 8.430 7.959 7.759
+ 13.372 13.726 14.257 14.655 14.618 14.046 13.159 12.388 12.048 12.060 11.993 11.442 10.445 9.537 9.338 10.023 11.144 11.995 12.210 12.037 12.025 12.419 12.839 12.606 11.414 9.740 8.558 8.572 9.638 10.891 11.464 11.145 10.432 9.981 10.012 10.221
+ 13.439 13.797 14.311 14.684 14.680 14.265 13.618 13.002 12.566 12.240 11.819 11.184 10.462 9.972 9.969 10.426 11.048 11.539 11.871 12.287 13.003 13.877 14.373 13.933 12.474 10.577 9.158 8.853 9.586 10.667 11.315 11.182 10.482 9.689 9.145 8.911
+ 13.830 14.100 14.468 14.709 14.682 14.396 13.958 13.468 12.952 12.377 11.733 11.085 10.553 10.241 10.179 10.333 10.674 11.229 12.047 13.114 14.254 15.149 15.459 15.009 13.909 12.538 11.374 10.774 10.814 11.266 11.729 11.833 11.418 10.602 9.718 9.151
+ 14.427 14.338 14.220 14.129 14.054 13.919 13.647 13.227 12.718 12.191 11.669 11.127 10.557 10.027 9.676 9.637 9.953 10.561 11.349 12.221 13.104 13.887 14.386 14.395 13.819 12.813 11.768 11.133 11.157 11.718 12.368 12.578 12.048 10.889 9.580 8.723
+ 14.840 14.815 14.604 14.049 13.180 12.238 11.523 11.164 11.034 10.847 10.375 9.624 8.830 8.320 8.314 8.806 9.568 10.262 10.621 10.589 10.364 10.267 10.507 10.978 11.274 10.968 9.986 8.781 8.098 8.452 9.678 10.962 11.372 10.548 9.012 7.824
+ 15.049 14.886 14.507 13.879 13.069 12.239 11.546 11.052 10.693 10.338 9.882 9.295 8.645 8.087 7.832 8.066 8.815 9.847 10.714 10.997 10.608 9.903 9.461 9.651 10.300 10.802 10.588 9.632 8.526 8.047 8.533 9.603 10.461 10.542 9.963 9.377
+ 14.995 14.826 14.479 13.936 13.202 12.340 11.504 10.891 10.626 10.640 10.672 10.412 9.739 8.854 8.193 8.139 8.741 9.640 10.300 10.371 9.936 9.429 9.296 9.648 10.168 10.363 9.953 9.110 8.348 8.157 8.647 9.480 10.134 10.283 10.017 9.717
+ 14.546 14.560 14.359 13.731 12.743 11.745 11.106 10.917 10.936 10.801 10.322 9.602 8.897 8.406 8.163 8.104 8.186 8.406 8.734 9.069 9.310 9.471 9.683 10.032 10.384 10.410 9.869 8.924 8.152 8.159 9.071 10.344 11.132 10.936 10.024 9.217
+ 13.976 13.834 13.418 12.654 11.713 10.966 10.717 10.938 11.245 11.164 10.471 9.339 8.196 7.436 7.203 7.395 7.804 8.262 8.678 9.015 9.267 9.468 9.670 9.869 9.938 9.678 8.992 8.066 7.339 7.243 7.869 8.848 9.592 9.725 9.357 8.962
+ 12.628 12.534 12.102 11.167 9.945 8.979 8.734 9.189 9.816 9.991 9.479 8.590 7.883 7.700 7.940 8.225 8.267 8.094 7.948 8.024 8.304 8.622 8.842 8.943 8.941 8.778 8.343 7.629 6.855 6.378 6.434 6.935 7.523 7.857 7.870 7.763
+ 11.098 10.969 10.496 9.552 8.378 7.526 7.452 8.101 8.877 9.055 8.318 6.985 5.764 5.227 5.455 6.072 6.596 6.776 6.682 6.545 6.545 6.717 6.987 7.238 7.345 7.188 6.711 6.011 5.352 5.037 5.201 5.696 6.188 6.406 6.337 6.196
+ 8.207 8.317 8.170 7.456 6.358 5.550 5.699 6.884 8.426 9.319 8.933 7.449 5.707 4.608 4.548 5.266 6.135 6.626 6.596 6.266 5.994 6.033 6.404 6.900 7.194 7.009 6.290 5.291 4.475 4.244 4.668 5.418 5.984 6.049 5.706 5.358
+ 6.107 6.664 7.227 7.192 6.470 5.606 5.341 5.995 7.179 8.072 8.034 7.046 5.674 4.622 4.270 4.510 4.942 5.206 5.189 5.012 4.890 4.977 5.294 5.712 6.003 5.944 5.473 4.778 4.237 4.182 4.640 5.273 5.606 5.382 4.778 4.275
+ 8.132 8.377 8.726 9.004 9.127 9.141 9.147 9.202 9.273 9.288 9.221 9.120 9.065 9.091 9.163 9.226 9.272 9.353 9.524 9.768 9.984 10.072 10.041 10.039 10.272 10.842 11.645 12.398 12.791 12.656 12.050 11.206 10.395 9.797 9.454 9.313
+ 9.116 9.633 10.352 10.898 11.119 11.137 11.157 11.234 11.246 11.065 10.751 10.537 10.630 11.011 11.451 11.721 11.787 11.795 11.884 12.025 12.077 11.995 11.968 12.294 13.099 14.156 15.011 15.335 15.181 14.909 14.845 14.990 15.057 14.790 14.257 13.822
+ 9.737 9.908 10.150 10.350 10.467 10.537 10.593 10.596 10.463 10.166 9.809 9.586 9.648 9.984 10.435 10.822 11.081 11.290 11.559 11.916 12.287 12.597 12.884 13.307 14.019 15.022 16.118 17.023 17.536 17.648 17.514 17.323 17.196 17.150 17.152 17.162
+ 9.767 9.569 9.291 9.109 9.167 9.473 9.868 10.111 10.039 9.708 9.370 9.302 9.593 10.077 10.456 10.543 10.402 10.293 10.466 10.984 11.730 12.561 13.450 14.482 15.705 16.994 18.065 18.657 18.715 18.431 18.104 17.946 17.986 18.122 18.245 18.306
+ 9.804 10.047 10.356 10.503 10.374 10.045 9.719 9.587 9.709 9.994 10.284 10.455 10.476 10.394 10.291 10.243 10.319 10.580 11.072 11.798 12.702 13.688 14.670 15.608 16.506 17.354 18.089 18.591 18.754 18.573 18.184 17.813 17.656 17.768 18.030 18.239
+ 10.153 10.466 10.787 10.810 10.514 10.165 10.028 10.094 10.117 9.915 9.616 9.570 9.989 10.675 11.144 11.062 10.591 10.303 10.713 11.844 13.226 14.320 14.968 15.465 16.191 17.196 18.118 18.516 18.276 17.711 17.278 17.193 17.314 17.365 17.241 17.085
+ 11.537 11.206 10.621 9.958 9.465 9.330 9.530 9.822 9.929 9.772 9.549 9.545 9.846 10.240 10.416 10.306 10.221 10.625 11.720 13.203 14.473 15.096 15.156 15.155 15.561 16.399 17.254 17.648 17.456 16.979 16.648 16.651 16.835 16.930 16.839 16.701
+ 13.473 12.571 11.381 10.644 10.658 11.101 11.370 11.111 10.491 9.996 9.967 10.296 10.550 10.380 9.856 9.435 9.608 10.520 11.885 13.216 14.172 14.736 15.137 15.609 16.215 16.837 17.301 17.499 17.443 17.228 16.972 16.772 16.680 16.698 16.775 16.841
+ 11.627 11.140 10.583 10.410 10.703 11.105 11.153 10.707 10.085 9.769 9.951 10.341 10.416 9.906 9.090 8.630 9.062 10.369 11.988 13.236 13.814 13.979 14.273 15.051 16.191 17.202 17.618 17.340 16.678 16.083 15.810 15.777 15.707 15.409 14.952 14.605
+ 12.549 11.913 10.994 10.249 9.930 9.950 10.006 9.850 9.478 9.094 8.897 8.893 8.897 8.729 8.419 8.239 8.501 9.298 10.411 11.461 12.207 12.715 13.264 14.052 14.966 15.628 15.683 15.112 14.271 13.634 13.428 13.476 13.381 12.894 12.158 11.604
+ 13.639 13.678 13.835 14.185 14.698 15.200 15.443 15.257 14.673 13.926 13.296 12.921 12.723 12.521 12.245 12.052 12.209 12.841 13.753 14.512 14.763 14.512 14.118 13.979 14.178 14.392 14.178 13.378 12.301 11.494 11.299 11.579 11.861 11.757 11.298 10.880
+ 14.041 14.001 14.131 14.671 15.657 16.802 17.619 17.714 17.063 16.050 15.208 14.841 14.836 14.827 14.581 14.255 14.291 14.994 16.191 17.282 17.694 17.349 16.704 16.329 16.373 16.429 15.937 14.771 13.451 12.748 12.995 13.745 14.105 13.505 12.221 11.177
+ 13.309 13.475 13.830 14.439 15.376 16.589 17.786 18.503 18.383 17.467 16.223 15.230 14.776 14.715 14.708 14.634 14.733 15.349 16.495 17.705 18.351 18.172 17.492 16.922 16.783 16.834 16.562 15.775 14.893 14.602 15.156 16.008 16.179 15.117 13.273 11.847
+ 12.611 13.037 13.725 14.524 15.437 16.523 17.664 18.474 18.532 17.755 16.553 15.554 15.126 15.135 15.181 15.081 15.102 15.683 16.902 18.238 18.916 18.561 17.530 16.595 16.248 16.301 16.177 15.589 14.925 14.885 15.691 16.654 16.629 15.030 12.506 10.605
+ 12.437 12.928 13.582 14.108 14.585 15.365 16.624 18.017 18.837 18.582 17.408 16.030 15.147 14.935 15.065 15.175 15.288 15.744 16.732 17.933 18.689 18.560 17.719 16.770 16.179 15.881 15.491 14.878 14.475 14.903 16.223 17.577 17.709 16.036 13.321 11.268
+ 12.536 12.826 13.211 13.568 14.048 14.944 16.302 17.689 18.405 18.020 16.760 15.363 14.518 14.392 14.644 14.888 15.095 15.559 16.471 17.584 18.322 18.267 17.521 16.587 15.893 15.450 14.997 14.467 14.227 14.764 16.056 17.299 17.387 15.837 13.367 11.510
+ 12.329 12.628 13.052 13.486 14.043 14.955 16.237 17.486 18.085 17.675 16.484 15.186 14.392 14.235 14.402 14.555 14.697 15.125 16.035 17.191 18.029 18.100 17.435 16.473 15.640 15.031 14.489 13.987 13.833 14.401 15.620 16.749 16.809 15.397 13.169 11.502
+ 12.722 12.846 13.079 13.478 14.191 15.298 16.590 17.551 17.652 16.766 15.331 14.077 13.498 13.538 13.759 13.817 13.806 14.126 15.022 16.247 17.188 17.352 16.740 15.782 14.917 14.251 13.631 13.019 12.711 13.100 14.185 15.328 15.621 14.632 12.871 11.509
+ 12.591 12.735 13.013 13.470 14.205 15.236 16.321 16.981 16.781 15.682 14.150 12.854 12.199 12.078 12.076 11.929 11.796 12.089 13.017 14.306 15.368 15.773 15.555 15.086 14.644 14.152 13.361 12.292 11.435 11.418 12.397 13.749 14.463 13.944 12.564 11.409
+ 10.902 10.951 11.238 11.947 13.036 14.152 14.789 14.594 13.601 12.224 11.004 10.275 9.999 9.885 9.681 9.400 9.305 9.676 10.565 11.734 12.825 13.587 13.969 14.026 13.768 13.138 12.154 11.068 10.325 10.295 10.963 11.871 12.403 12.233 11.569 10.994
+ 9.908 9.219 8.273 7.713 8.032 9.257 10.872 12.072 12.236 11.310 9.835 8.568 7.981 8.003 8.199 8.199 8.027 8.045 8.586 9.616 10.714 11.371 11.339 10.744 9.919 9.138 8.511 8.059 7.844 7.947 8.329 8.739 8.838 8.457 7.786 7.267
+ 6.644 6.767 7.000 7.418 8.200 9.431 10.843 11.809 11.726 10.504 8.721 7.225 6.489 6.311 6.130 5.680 5.335 5.765 7.224 9.126 10.397 10.319 9.125 7.788 7.197 7.464 7.969 8.053 7.660 7.310 7.471 7.984 8.165 7.483 6.167 5.109
+ 6.980 6.623 6.242 6.294 7.052 8.370 9.701 10.386 10.064 8.909 7.510 6.454 5.942 5.742 5.509 5.189 5.128 5.758 7.145 8.792 9.921 10.016 9.178 7.999 7.092 6.686 6.601 6.574 6.559 6.720 7.143 7.614 7.720 7.222 6.343 5.659
+ 5.782 6.029 6.414 6.841 7.319 7.894 8.484 8.809 8.554 7.651 6.424 5.417 5.023 5.232 5.720 6.183 6.605 7.202 8.099 9.088 9.723 9.696 9.157 8.656 8.734 9.503 10.576 11.383 11.590 11.256 10.664 10.025 9.354 8.606 7.870 7.391
+ 5.989 6.107 6.217 6.279 6.483 7.105 8.150 9.162 9.458 8.671 7.127 5.698 5.189 5.768 6.909 7.873 8.295 8.360 8.489 8.860 9.249 9.320 9.028 8.746 8.955 9.809 10.964 11.837 12.038 11.604 10.866 10.131 9.494 8.912 8.390 8.060
+ 4.960 5.035 5.207 5.556 6.210 7.214 8.374 9.245 9.345 8.491 6.978 5.445 4.497 4.360 4.829 5.513 6.131 6.635 7.085 7.465 7.637 7.477 7.027 6.502 6.128 5.974 5.943 5.919 5.905 5.996 6.226 6.447 6.406 5.977 5.329 4.846
+ 5.003 4.728 4.354 4.202 4.604 5.707 7.287 8.766 9.480 9.069 7.713 6.048 4.788 4.326 4.593 5.219 5.844 6.308 6.635 6.875 6.995 6.909 6.588 6.118 5.659 5.348 5.243 5.352 5.661 6.121 6.591 6.841 6.662 6.044 5.247 4.691
+ 4.575 4.709 4.933 5.266 5.824 6.709 7.798 8.682 8.877 8.174 6.842 5.465 4.557 4.259 4.386 4.718 5.234 6.044 7.109 8.078 8.446 7.953 6.828 5.653 4.926 4.741 4.842 4.975 5.166 5.621 6.375 7.059 7.109 6.264 4.909 3.887
+ 7.539 7.688 8.009 8.466 8.915 9.164 9.129 8.927 8.811 8.951 9.283 9.547 9.524 9.260 9.075 9.321 10.078 11.047 11.731 11.790 11.273 10.578 10.174 10.303 10.877 11.612 12.256 12.730 13.097 13.435 13.731 13.883 13.796 13.487 13.099 12.834
+ 7.505 7.433 7.577 8.197 9.195 10.123 10.530 10.341 9.918 9.735 9.976 10.408 10.644 10.535 10.323 10.416 10.994 11.821 12.414 12.440 11.968 11.398 11.140 11.339 11.854 12.451 13.007 13.545 14.112 14.656 15.028 15.097 14.858 14.444 14.041 13.801
+ 5.196 5.161 5.213 5.476 5.944 6.468 6.861 7.045 7.095 7.147 7.266 7.389 7.401 7.272 7.121 7.133 7.410 7.863 8.259 8.384 8.199 7.867 7.642 7.712 8.111 8.745 9.497 10.296 11.112 11.897 12.541 12.901 12.890 12.561 12.113 11.801
+ 6.856 7.324 7.994 8.529 8.743 8.699 8.593 8.575 8.630 8.628 8.470 8.186 7.915 7.788 7.824 7.938 8.016 8.001 7.909 7.786 7.662 7.551 7.492 7.568 7.887 8.522 9.467 10.626 11.842 12.936 13.737 14.120 14.055 13.651 13.139 12.791
+ 10.462 11.153 12.061 12.596 12.473 11.842 11.081 10.461 9.998 9.573 9.149 8.834 8.744 8.826 8.872 8.713 8.415 8.254 8.465 9.003 9.546 9.764 9.614 9.389 9.482 10.070 10.993 11.914 12.590 13.008 13.294 13.536 13.697 13.702 13.571 13.439
+ 11.966 12.655 13.602 14.280 14.424 14.117 13.564 12.854 11.951 10.889 9.914 9.349 9.295 9.491 9.529 9.265 9.017 9.313 10.377 11.838 12.950 13.166 12.549 11.669 11.098 11.004 11.199 11.530 12.132 13.234 14.696 15.798 15.657 13.987 11.541 9.752
+ 12.461 12.873 13.589 14.413 15.105 15.422 15.193 14.409 13.276 12.164 11.421 11.161 11.187 11.156 10.874 10.502 10.464 11.093 12.303 13.576 14.297 14.186 13.470 12.665 12.170 12.040 12.095 12.227 12.551 13.231 14.155 14.822 14.637 13.428 11.724 10.494
+ 12.752 12.932 13.360 14.071 14.951 15.707 15.995 15.625 14.708 13.614 12.744 12.271 12.059 11.833 11.463 11.132 11.205 11.901 13.045 14.115 14.600 14.364 13.716 13.150 12.954 13.055 13.198 13.261 13.392 13.809 14.458 14.900 14.593 13.377 11.738 10.569
+ 12.783 12.782 12.959 13.528 14.529 15.683 16.463 16.396 15.415 13.986 12.826 12.397 12.572 12.794 12.618 12.173 12.083 12.881 14.414 15.828 16.208 15.338 13.907 12.930 12.899 13.434 13.741 13.454 13.021 13.230 14.308 15.468 15.450 13.646 10.818 8.696
+ 12.640 12.650 12.758 13.133 13.931 15.105 16.273 16.852 16.452 15.220 13.803 12.876 12.639 12.736 12.695 12.488 12.603 13.534 15.133 16.513 16.699 15.487 13.704 12.560 12.637 13.431 13.905 13.528 12.820 12.825 13.977 15.474 15.832 14.213 11.345 9.116
+ 12.635 12.491 12.436 12.791 13.734 15.096 16.360 16.921 16.478 15.269 13.917 12.997 12.650 12.607 12.574 12.605 13.066 14.181 15.603 16.500 16.181 14.736 13.076 12.237 12.544 13.362 13.725 13.268 12.593 12.690 13.889 15.363 15.707 14.179 11.492 9.414
+ 12.834 12.589 12.431 12.783 13.821 15.273 16.517 16.943 16.351 15.079 13.761 12.887 12.537 12.484 12.550 12.833 13.553 14.648 15.565 15.566 14.371 12.569 11.317 11.461 12.789 14.131 14.310 13.179 11.808 11.583 12.939 14.848 15.594 14.233 11.496 9.318
+ 12.657 12.261 11.882 12.008 12.794 13.936 14.887 15.241 14.951 14.256 13.435 12.640 11.949 11.517 11.602 12.361 13.585 14.652 14.864 13.961 12.408 11.169 11.049 12.091 13.505 14.226 13.711 12.368 11.259 11.290 12.502 14.014 14.685 13.992 12.441 11.194
+ 10.664 10.716 10.883 11.232 11.779 12.476 13.230 13.919 14.383 14.428 13.910 12.888 11.721 10.972 11.107 12.148 13.560 14.516 14.406 13.256 11.728 10.694 10.658 11.442 12.358 12.730 12.375 11.696 11.348 11.725 12.663 13.557 13.796 13.206 12.176 11.399
+ 10.570 10.204 9.712 9.405 9.464 9.863 10.438 11.006 11.411 11.516 11.218 10.536 9.709 9.157 9.250 10.025 11.097 11.869 11.932 11.343 10.562 10.107 10.198 10.675 11.217 11.646 12.040 12.595 13.388 14.278 15.016 15.443 15.591 15.611 15.620 15.639
+ 10.224 9.925 9.510 9.196 9.069 9.064 9.077 9.097 9.202 9.445 9.752 9.956 9.950 9.807 9.733 9.884 10.216 10.505 10.544 10.321 10.034 9.926 10.108 10.520 11.047 11.654 12.396 13.304 14.281 15.142 15.769 16.226 16.703 17.326 17.999 18.453
+ 9.585 9.108 8.527 8.263 8.429 8.779 8.980 8.942 8.872 9.025 9.393 9.663 9.507 8.915 8.270 8.044 8.401 9.040 9.449 9.330 8.849 8.495 8.692 9.495 10.595 11.606 12.351 12.933 13.575 14.403 15.359 16.270 16.987 17.460 17.722 17.834
+ 7.805 7.930 8.276 8.863 9.496 9.838 9.671 9.113 8.569 8.417 8.701 9.095 9.190 8.862 8.384 8.195 8.514 9.145 9.637 9.665 9.301 8.952 9.027 9.623 10.483 11.248 11.768 12.218 12.925 14.069 15.498 16.799 17.570 17.691 17.391 17.084
+ 7.842 8.201 8.629 8.826 8.762 8.680 8.823 9.160 9.390 9.229 8.683 8.060 7.699 7.690 7.854 7.986 8.084 8.328 8.844 9.497 9.967 10.049 9.871 9.810 10.151 10.845 11.581 12.129 12.592 13.302 14.446 15.797 16.829 17.154 16.875 16.502
+ 6.879 6.620 6.418 6.620 7.271 8.036 8.439 8.232 7.585 6.961 6.762 7.052 7.552 7.893 7.909 7.727 7.624 7.784 8.163 8.557 8.785 8.827 8.820 8.930 9.230 9.689 10.241 10.871 11.618 12.504 13.459 14.314 14.898 15.143 15.140 15.068
+ 3.674 4.655 6.260 7.924 9.107 9.504 9.150 8.367 7.602 7.196 7.233 7.511 7.698 7.561 7.130 6.686 6.548 6.827 7.325 7.676 7.632 7.270 6.942 7.010 7.566 8.378 9.100 9.567 9.914 10.419 11.214 12.122 12.786 12.964 12.748 12.486
+ 4.034 5.513 7.522 8.870 8.975 8.170 7.305 7.020 7.322 7.740 7.838 7.584 7.290 7.255 7.491 7.763 7.844 7.722 7.549 7.463 7.461 7.472 7.496 7.644 8.033 8.648 9.349 10.015 10.662 11.377 12.125 12.643 12.589 11.860 10.793 10.012
+ 4.082 5.796 8.093 9.575 9.593 8.603 7.642 7.433 7.899 8.406 8.431 8.007 7.599 7.599 7.966 8.323 8.355 8.108 7.894 7.966 8.279 8.584 8.726 8.831 9.200 10.024 11.205 12.430 13.403 14.009 14.274 14.235 13.886 13.265 12.563 12.089
+ 7.020 7.541 8.245 8.700 8.687 8.325 7.947 7.820 7.959 8.143 8.123 7.829 7.421 7.155 7.192 7.496 7.891 8.218 8.449 8.698 9.114 9.774 10.639 11.594 12.534 13.416 14.247 15.032 15.727 16.232 16.427 16.244 15.721 15.010 14.339 13.933
+ 8.535 9.127 9.948 10.559 10.773 10.748 10.783 11.028 11.375 11.598 11.576 11.397 11.236 11.175 11.132 10.983 10.730 10.537 10.600 10.970 11.521 12.081 12.602 13.187 13.968 14.931 15.892 16.623 17.024 17.159 17.153 17.055 16.817 16.408 15.931 15.601
+ 9.203 9.751 10.626 11.511 12.156 12.472 12.520 12.428 12.323 12.280 12.319 12.392 12.407 12.278 12.004 11.704 11.566 11.709 12.085 12.502 12.791 12.956 13.198 13.743 14.630 15.637 16.420 16.766 16.731 16.561 16.450 16.384 16.188 15.745 15.168 14.752
+ 12.832 12.846 13.015 13.424 13.926 14.180 13.913 13.155 12.247 11.571 11.258 11.123 10.900 10.548 10.328 10.577 11.362 12.337 12.962 12.926 12.404 11.948 12.068 12.843 13.861 14.541 14.550 14.030 13.440 13.198 13.376 13.686 13.741 13.369 12.751 12.284
+ 13.071 13.419 14.069 14.851 15.443 15.506 14.923 13.918 12.929 12.293 12.017 11.829 11.486 11.053 10.883 11.309 12.301 13.422 14.123 14.155 13.724 13.268 13.060 12.970 12.625 11.804 10.734 10.002 10.140 11.174 12.513 13.276 12.842 11.269 9.302 7.961
+ 13.382 13.495 13.823 14.384 14.962 15.175 14.755 13.797 12.720 11.961 11.647 11.542 11.321 10.921 10.648 10.928 11.916 13.295 14.458 14.906 14.560 13.725 12.797 11.981 11.262 10.609 10.190 10.336 11.261 12.744 14.080 14.409 13.232 10.801 8.086 6.309
+ 13.178 13.133 13.294 13.819 14.461 14.663 14.023 12.699 11.339 10.574 10.508 10.699 10.634 10.261 10.056 10.569 11.850 13.310 14.157 14.027 13.240 12.489 12.242 12.400 12.487 12.161 11.554 11.158 11.361 12.069 12.723 12.683 11.667 9.938 8.157 7.042
+ 11.530 11.514 11.721 12.272 12.860 12.885 11.975 10.397 8.919 8.210 8.297 8.615 8.584 8.200 8.047 8.726 10.227 11.847 12.736 12.582 11.817 11.169 11.015 11.111 10.928 10.224 9.314 8.793 8.987 9.660 10.201 10.102 9.299 8.137 7.087 6.488
+ 11.762 11.022 10.051 9.380 9.079 8.776 8.136 7.285 6.713 6.737 7.092 7.129 6.469 5.489 5.088 5.894 7.629 9.251 9.800 9.184 8.208 7.825 8.301 9.054 9.267 8.674 7.772 7.315 7.596 8.218 8.513 8.161 7.423 6.806 6.569 6.574
+ 11.448 11.429 11.119 10.226 8.752 7.088 5.817 5.331 5.561 6.026 6.180 5.807 5.167 4.788 5.063 5.954 7.044 7.852 8.182 8.209 8.275 8.568 8.974 9.201 9.056 8.616 8.160 7.927 7.932 7.992 7.919 7.700 7.492 7.454 7.585 7.728
+ 11.008 10.743 10.284 9.729 9.157 8.622 8.170 7.852 7.688 7.625 7.543 7.349 7.074 6.907 7.078 7.672 8.519 9.257 9.570 9.401 9.005 8.771 8.945 9.470 10.031 10.289 10.105 9.606 9.062 8.677 8.462 8.263 7.912 7.374 6.798 6.421
+ 12.640 12.635 12.795 13.247 13.869 14.295 14.172 13.455 12.474 11.704 11.413 11.485 11.576 11.466 11.288 11.434 12.186 13.399 14.532 15.019 14.701 13.953 13.387 13.376 13.782 14.113 13.986 13.473 13.043 13.107 13.588 13.873 13.271 11.613 9.517 8.057
+ 13.107 12.733 12.523 13.032 14.258 15.550 16.089 15.531 14.254 13.017 12.354 12.228 12.215 12.015 11.775 11.949 12.823 14.173 15.367 15.834 15.494 14.767 14.184 13.949 13.820 13.416 12.639 11.843 11.574 12.107 13.149 13.974 13.911 12.833 11.293 10.190
+ 13.021 12.563 12.267 12.800 14.229 15.860 16.720 16.284 14.850 13.272 12.299 12.072 12.183 12.176 12.016 12.104 12.846 14.181 15.523 16.183 15.909 15.072 14.321 14.018 13.947 13.559 12.555 11.273 10.517 10.910 12.305 13.768 14.210 13.209 11.379 9.972
+ 12.998 12.664 12.511 13.098 14.483 16.070 16.991 16.726 15.461 13.928 12.847 12.458 12.478 12.486 12.360 12.384 12.934 14.058 15.335 16.153 16.182 15.610 14.944 14.548 14.331 13.885 12.951 11.794 11.091 11.394 12.581 13.813 14.091 13.030 11.215 9.836
+ 13.237 12.885 12.699 13.229 14.524 15.993 16.797 16.467 15.222 13.770 12.769 12.396 12.362 12.286 12.087 12.040 12.493 13.503 14.740 15.709 16.097 15.951 15.544 15.100 14.630 14.019 13.262 12.598 12.384 12.793 13.588 14.198 14.087 13.145 11.827 10.885
+ 13.238 12.916 12.754 13.257 14.436 15.708 16.307 15.852 14.613 13.258 12.344 11.968 11.843 11.669 11.432 11.395 11.833 12.772 13.958 15.039 15.754 16.005 15.781 15.114 14.113 13.041 12.287 12.175 12.740 13.643 14.321 14.301 13.452 12.056 10.650 9.781
+ 13.121 12.850 12.744 13.247 14.343 15.469 15.909 15.335 14.035 12.676 11.799 11.489 11.451 11.378 11.246 11.302 11.790 12.704 13.774 14.674 15.233 15.467 15.439 15.133 14.487 13.556 12.623 12.104 12.283 13.061 13.944 14.306 13.764 12.431 10.883 9.858
+ 12.790 12.682 12.772 13.350 14.341 15.254 15.510 14.864 13.595 12.298 11.463 11.184 11.202 11.210 11.122 11.117 11.438 12.172 13.182 14.218 15.063 15.583 15.685 15.275 14.334 13.047 11.848 11.263 11.602 12.691 13.888 14.393 13.718 12.003 9.993 8.656
+ 12.449 12.604 13.005 13.683 14.471 15.015 14.983 14.292 13.185 12.087 11.343 11.034 11.001 11.030 11.029 11.088 11.389 12.063 13.096 14.312 15.426 16.108 16.077 15.218 13.695 11.972 10.681 10.340 11.073 12.483 13.814 14.312 13.621 11.980 10.117 8.898
+ 12.364 12.936 13.810 14.596 14.983 14.857 14.301 13.500 12.651 11.907 11.357 11.029 10.895 10.899 11.019 11.303 11.837 12.662 13.680 14.655 15.303 15.421 14.947 13.944 12.566 11.061 9.810 9.272 9.787 11.289 13.165 14.465 14.425 12.986 10.930 9.459
+ 12.437 13.290 14.445 15.192 15.145 14.440 13.537 12.828 12.387 12.036 11.627 11.250 11.168 11.551 12.261 12.894 13.067 12.720 12.178 11.913 12.183 12.813 13.281 13.054 11.951 10.300 8.797 8.137 8.636 10.038 11.623 12.568 12.379 11.161 9.573 8.480
+ 12.597 13.029 13.703 14.299 14.493 14.116 13.264 12.282 11.596 11.473 11.860 12.426 12.761 12.631 12.081 11.365 10.753 10.386 10.261 10.319 10.516 10.804 11.040 10.976 10.379 9.249 7.954 7.115 7.258 8.437 10.102 11.356 11.485 10.416 8.797 7.626
+ 12.201 12.593 13.233 13.848 14.116 13.832 13.071 12.202 11.681 11.744 12.219 12.633 12.534 11.810 10.733 9.740 9.121 8.884 8.868 8.957 9.180 9.591 10.075 10.297 9.908 8.858 7.563 6.728 6.916 8.142 9.808 11.022 11.132 10.121 8.625 7.555
+ 12.030 12.599 13.440 14.113 14.260 13.806 13.010 12.307 12.039 12.231 12.578 12.658 12.220 11.336 10.322 9.499 9.003 8.787 8.763 8.923 9.314 9.877 10.340 10.314 9.571 8.294 7.068 6.580 7.184 8.650 10.255 11.186 10.985 9.798 8.284 7.254
+ 11.779 12.455 13.497 14.416 14.771 14.411 13.579 12.784 12.480 12.749 13.238 13.405 12.902 11.814 10.562 9.592 9.095 8.986 9.101 9.380 9.848 10.436 10.852 10.702 9.814 8.483 7.391 7.202 8.115 9.699 11.133 11.689 11.118 9.739 8.221 7.254
+ 12.030 12.569 13.494 14.498 15.191 15.267 14.704 13.823 13.124 12.967 13.327 13.805 13.895 13.315 12.164 10.827 9.735 9.161 9.164 9.647 10.398 11.109 11.410 11.005 9.873 8.393 7.236 7.024 7.957 9.634 11.234 11.939 11.373 9.798 7.971 6.771
+ 12.899 13.096 13.583 14.377 15.263 15.831 15.740 14.989 13.974 13.251 13.160 13.595 14.084 14.121 13.492 12.395 11.285 10.597 10.523 10.964 11.623 12.141 12.226 11.737 10.758 9.607 8.749 8.604 9.305 10.576 11.806 12.337 11.822 10.431 8.802 7.721
+ 13.122 12.869 12.787 13.327 14.516 15.830 16.529 16.191 15.036 13.791 13.189 13.484 14.314 14.982 14.923 14.038 12.706 11.520 10.945 11.103 11.759 12.467 12.780 12.450 11.530 10.367 9.447 9.169 9.635 10.576 11.471 11.808 11.349 10.256 9.018 8.210
+ 12.761 12.596 12.607 13.168 14.333 15.697 16.620 16.638 15.780 14.565 13.680 13.574 14.201 15.083 15.602 15.358 14.381 13.095 12.079 11.741 12.099 12.776 13.223 13.051 12.260 11.234 10.492 10.368 10.812 11.455 11.850 11.739 11.154 10.349 9.625 9.209
+ 12.902 12.624 12.423 12.758 13.834 15.399 16.813 17.399 16.848 15.444 13.948 13.172 13.505 14.665 15.854 16.242 15.485 13.941 12.448 11.788 12.192 13.213 14.046 14.071 13.239 12.058 11.199 11.039 11.451 11.966 12.140 11.842 11.265 10.711 10.362 10.220
+ 12.869 12.721 12.640 12.927 13.760 15.035 16.332 17.088 16.893 15.767 14.238 13.107 13.006 13.990 15.451 16.452 16.308 15.041 13.391 12.334 12.436 13.484 14.649 15.077 14.463 13.210 12.084 11.647 11.901 12.384 12.571 12.255 11.615 10.988 10.590 10.429
+ 12.673 12.458 12.317 12.610 13.495 14.798 16.090 16.917 17.008 16.384 15.335 14.312 13.761 13.926 14.693 15.593 16.031 15.647 14.597 13.492 13.017 13.443 14.416 15.184 15.127 14.182 12.873 11.915 11.719 12.153 12.695 12.813 12.297 11.329 10.325 9.699
+ 12.850 12.628 12.486 12.786 13.649 14.854 15.975 16.630 16.648 16.082 15.148 14.161 13.495 13.466 14.148 15.221 16.055 16.068 15.140 13.773 12.797 12.800 13.702 14.803 15.296 14.851 13.829 12.978 12.857 13.433 14.116 14.188 13.274 11.581 9.773 8.620
+ 12.895 12.532 12.240 12.515 13.496 14.837 15.954 16.414 16.151 15.394 14.463 13.632 13.134 13.170 13.802 14.790 15.589 15.630 14.744 13.382 12.371 12.342 13.247 14.375 14.870 14.371 13.253 12.322 12.189 12.836 13.651 13.877 13.118 11.569 9.880 8.796
+ 12.595 12.102 11.708 12.077 13.356 15.021 16.257 16.526 15.854 14.682 13.505 12.646 12.280 12.529 13.401 14.611 15.535 15.521 14.391 12.709 11.497 11.522 12.701 14.122 14.722 14.080 12.720 11.680 11.709 12.721 13.879 14.201 13.203 11.174 8.976 7.572
+ 12.091 11.864 11.857 12.517 13.811 15.154 15.818 15.453 14.289 12.910 11.843 11.342 11.443 12.098 13.173 14.310 14.928 14.529 13.143 11.492 10.602 11.079 12.595 14.068 14.451 13.520 12.044 11.189 11.638 13.085 14.474 14.726 13.421 11.002 8.477 6.894
+ 11.546 11.821 12.337 12.976 13.518 13.721 13.466 12.832 12.050 11.357 10.900 10.742 10.928 11.477 12.275 12.991 13.185 12.597 11.427 10.315 9.951 10.569 11.728 12.599 12.565 11.691 10.668 10.296 10.889 12.052 12.970 12.960 11.867 10.103 8.370 7.318
+ 11.723 11.959 12.441 13.094 13.691 13.941 13.678 12.996 12.192 11.563 11.233 11.171 11.326 11.728 12.399 13.182 13.691 13.521 12.594 11.333 10.452 10.464 11.287 12.284 12.732 12.372 11.600 11.151 11.524 12.576 13.590 13.738 12.620 10.520 8.273 6.837
+ 12.304 12.232 12.384 13.013 13.994 14.829 15.019 14.451 13.458 12.526 11.937 11.691 11.707 12.027 12.759 13.798 14.664 14.738 13.764 12.191 10.968 10.876 11.924 13.317 14.060 13.721 12.736 12.024 12.245 13.283 14.329 14.467 13.280 11.101 8.806 7.356
+ 12.477 12.203 12.152 12.805 14.095 15.369 15.878 15.364 14.200 13.025 12.247 11.876 11.775 11.976 12.658 13.808 14.952 15.346 14.565 12.974 11.583 11.328 12.325 13.763 14.540 14.137 13.004 12.169 12.396 13.585 14.846 15.142 13.981 11.707 9.273 7.725
+ 12.616 12.209 12.018 12.673 14.148 15.697 16.426 15.986 14.768 13.483 12.588 12.095 11.857 11.936 12.584 13.837 15.190 15.798 15.140 13.553 12.099 11.772 12.709 14.071 14.740 14.233 13.060 12.262 12.543 13.712 14.863 15.061 13.969 11.994 9.975 8.729
+ 12.522 12.313 12.355 13.088 14.432 15.758 16.364 15.997 14.977 13.842 12.924 12.247 11.796 11.759 12.420 13.756 15.203 15.922 15.447 14.142 12.987 12.823 13.669 14.712 14.998 14.231 12.993 12.222 12.434 13.331 14.085 13.996 12.946 11.381 9.936 9.099
+ 12.598 12.649 12.928 13.588 14.544 15.450 15.894 15.661 14.850 13.787 12.829 12.226 12.099 12.471 13.265 14.271 15.158 15.614 15.528 15.067 14.553 14.197 13.939 13.525 12.773 11.816 11.067 10.942 11.526 12.474 13.199 13.233 12.479 11.233 9.997 9.244
+ 12.471 12.661 13.064 13.683 14.447 15.159 15.537 15.347 14.576 13.508 12.606 12.251 12.528 13.219 14.004 14.691 15.269 15.751 15.989 15.694 14.675 13.097 11.477 10.374 10.004 10.123 10.293 10.293 10.293 10.611 11.284 11.879 11.776 10.721 9.162 8.014
+ 12.171 12.421 12.923 13.640 14.432 15.049 15.205 14.736 13.751 12.636 11.871 11.758 12.257 13.054 13.823 14.423 14.889 15.213 15.188 14.503 13.054 11.183 9.569 8.778 8.842 9.246 9.375 9.057 8.703 8.895 9.764 10.744 10.964 10.001 8.327 7.041
+ 11.826 12.050 12.573 13.406 14.350 15.016 15.042 14.345 13.218 12.176 11.655 11.780 12.365 13.106 13.794 14.361 14.758 14.826 14.318 13.115 11.423 9.763 8.681 8.379 8.566 8.688 8.369 7.728 7.287 7.522 8.412 9.378 9.690 9.036 7.813 6.863
+ 11.909 12.118 12.640 13.503 14.486 15.148 15.096 14.289 13.127 12.218 11.996 12.454 13.206 13.809 14.060 14.049 13.948 13.747 13.211 12.105 10.497 8.833 7.692 7.378 7.684 8.050 7.996 7.495 6.962 6.880 7.353 7.978 8.154 7.587 6.567 5.778
+ 12.007 12.294 12.914 13.824 14.774 15.358 15.256 14.494 13.494 12.832 12.860 13.467 14.174 14.495 14.287 13.811 13.444 13.314 13.152 12.524 11.240 9.593 8.193 7.522 7.559 7.816 7.751 7.219 6.579 6.357 6.754 7.435 7.789 7.448 6.619 5.934
+ 11.978 12.195 12.729 13.602 14.573 15.189 15.061 14.198 13.082 12.393 12.540 13.357 14.212 14.476 13.985 13.135 12.534 12.476 12.687 12.553 11.637 10.073 8.485 7.506 7.295 7.470 7.488 7.142 6.723 6.719 7.305 8.115 8.503 8.095 7.148 6.372
+ 10.830 11.122 11.810 12.899 14.099 14.867 14.733 13.681 12.279 11.372 11.516 12.560 13.722 14.147 13.544 12.394 11.558 11.566 12.167 12.519 11.876 10.213 8.272 6.990 6.782 7.276 7.704 7.575 7.065 6.769 7.104 7.888 8.502 8.454 7.841 7.258
+ 11.219 11.686 12.546 13.629 14.651 15.258 15.172 14.387 13.280 12.480 12.503 13.360 14.469 15.019 14.560 13.375 12.285 11.996 12.507 13.084 12.858 11.545 9.681 8.162 7.502 7.468 7.402 6.920 6.316 6.281 7.201 8.691 9.849 10.005 9.307 8.580
+ 11.624 12.021 12.706 13.514 14.258 14.744 14.778 14.268 13.367 12.511 12.222 12.737 13.751 14.549 14.498 13.554 12.335 11.650 11.841 12.490 12.737 11.983 10.358 8.601 7.456 7.140 7.312 7.501 7.565 7.737 8.281 9.117 9.833 10.052 9.798 9.475
+ 10.430 11.086 12.113 13.152 13.967 14.460 14.537 14.077 13.098 11.965 11.327 11.686 12.911 14.189 14.565 13.693 12.166 11.064 11.069 11.889 12.503 12.017 10.406 8.492 7.238 6.987 7.312 7.541 7.399 7.184 7.361 8.034 8.828 9.271 9.246 9.057
+ 10.860 11.615 12.744 13.804 14.595 15.142 15.420 15.208 14.308 12.938 11.830 11.773 12.923 14.523 15.402 14.901 13.429 12.128 11.902 12.642 13.357 13.056 11.596 9.751 8.478 8.108 8.183 8.033 7.481 6.972 7.071 7.844 8.766 9.230 9.108 8.814
+ 11.967 12.405 13.120 13.915 14.654 15.246 15.542 15.323 14.474 13.203 12.067 11.680 12.263 13.422 14.380 14.524 13.846 12.920 12.422 12.595 13.084 13.260 12.727 11.604 10.373 9.483 9.060 8.920 8.819 8.667 8.544 8.555 8.705 8.900 9.048 9.117
+ 12.124 12.425 13.008 13.793 14.611 15.214 15.366 14.955 14.075 13.018 12.166 11.833 12.126 12.896 13.801 14.454 14.594 14.199 13.485 12.791 12.395 12.374 12.563 12.660 12.406 11.744 10.858 10.068 9.646 9.656 9.926 10.159 10.115 9.757 9.265 8.917
+ 12.204 12.194 12.479 13.306 14.505 15.497 15.705 14.987 13.732 12.543 11.820 11.611 11.782 12.255 13.034 13.998 14.768 14.872 14.138 12.957 12.074 12.041 12.757 13.522 13.598 12.808 11.681 11.016 11.249 12.133 12.955 13.067 12.296 10.977 9.679 8.897
+ 12.303 12.287 12.564 13.377 14.545 15.490 15.667 14.993 13.883 12.881 12.259 11.952 11.831 11.975 12.594 13.674 14.748 15.116 14.418 13.028 11.868 11.711 12.557 13.617 13.961 13.278 12.113 11.403 11.718 12.823 13.895 14.132 13.274 11.690 10.080 9.093
+ 12.780 12.637 12.654 13.085 13.807 14.362 14.353 13.791 13.055 12.508 12.186 11.883 11.524 11.394 11.910 13.105 14.363 14.775 13.887 12.189 10.839 10.777 11.962 13.400 13.953 13.245 11.925 11.082 11.357 12.483 13.572 13.819 13.034 11.634 10.273 9.468
+ 11.557 11.878 12.441 13.056 13.450 13.407 12.930 12.273 11.752 11.489 11.320 10.988 10.458 10.056 10.240 11.175 12.473 13.381 13.308 12.276 10.921 10.029 9.983 10.561 11.208 11.536 11.604 11.794 12.414 13.394 14.305 14.669 14.278 13.320 12.257 11.575
+ 10.059 10.391 10.941 11.475 11.699 11.406 10.638 9.703 8.999 8.734 8.791 8.859 8.740 8.566 8.709 9.446 10.645 11.771 12.235 11.828 10.879 10.020 9.734 10.052 10.621 11.059 11.299 11.626 12.407 13.725 15.230 16.322 16.536 15.864 14.787 14.001
+ 9.504 9.772 10.262 10.811 11.125 10.923 10.160 9.128 8.292 7.950 8.018 8.132 7.996 7.685 7.597 8.089 9.103 10.130 10.574 10.222 9.430 8.858 8.980 9.752 10.717 11.417 11.769 12.107 12.859 14.156 15.669 16.805 17.101 16.541 15.577 14.863
+ 9.140 9.394 9.852 10.383 10.776 10.817 10.407 9.652 8.823 8.204 7.927 7.923 8.015 8.089 8.187 8.438 8.905 9.462 9.850 9.864 9.533 9.137 9.026 9.388 10.135 11.009 11.814 12.571 13.464 14.620 15.899 16.913 17.270 16.886 16.101 15.490
+ 10.893 10.871 10.808 10.695 10.555 10.451 10.435 10.500 10.548 10.432 10.050 9.443 8.826 8.498 8.683 9.367 10.265 10.944 11.060 10.562 9.738 9.056 8.900 9.368 10.262 11.271 12.199 13.075 14.050 15.185 16.295 17.005 17.000 16.286 15.266 14.538
+ 10.982 10.381 9.798 9.860 10.572 11.278 11.260 10.400 9.279 8.635 8.697 9.036 9.058 8.640 8.283 8.618 9.743 11.026 11.582 11.017 9.758 8.712 8.569 9.358 10.583 11.744 12.717 13.695 14.824 15.927 16.588 16.484 15.646 14.444 13.349 12.717
+ 11.689 10.860 9.924 9.667 10.232 11.007 11.199 10.529 9.425 8.564 8.236 8.156 7.872 7.329 7.011 7.491 8.816 10.319 11.087 10.680 9.490 8.432 8.268 9.119 10.513 11.832 12.724 13.168 13.271 13.081 12.608 11.953 11.347 11.007 10.958 11.026
+ 11.916 11.495 10.982 10.744 10.881 11.181 11.343 11.241 10.959 10.605 10.141 9.433 8.500 7.662 7.387 7.896 8.891 9.697 9.749 9.040 8.135 7.723 8.080 8.884 9.513 9.554 9.094 8.580 8.426 8.700 9.148 9.443 9.434 9.195 8.907 8.726
+ 12.922 12.844 12.590 12.061 11.267 10.387 9.683 9.344 9.340 9.420 9.272 8.756 8.038 7.511 7.534 8.175 9.143 9.967 10.287 10.057 9.518 8.994 8.671 8.530 8.440 8.308 8.144 8.023 7.997 8.060 8.187 8.386 8.693 9.103 9.525 9.798
+ 13.422 13.437 13.230 12.601 11.651 10.770 10.331 10.361 10.507 10.341 9.727 8.942 8.441 8.483 8.948 9.475 9.766 9.788 9.715 9.708 9.772 9.785 9.645 9.366 9.027 8.676 8.297 7.897 7.581 7.524 7.825 8.385 8.949 9.288 9.365 9.325
+ 13.972 13.724 13.161 12.310 11.415 10.833 10.743 10.944 10.966 10.449 9.475 8.551 8.233 8.690 9.580 10.328 10.570 10.376 10.116 10.097 10.319 10.526 10.457 10.071 9.544 9.099 8.847 8.766 8.801 8.936 9.176 9.482 9.753 9.893 9.896 9.852
+ 14.154 13.920 13.442 12.777 12.092 11.586 11.338 11.216 10.969 10.443 9.745 9.195 9.089 9.468 10.092 10.637 10.941 11.097 11.315 11.693 12.107 12.297 12.068 11.429 10.573 9.729 9.052 8.603 8.394 8.427 8.672 9.030 9.354 9.534 9.565 9.536
+ 13.889 13.727 13.315 12.623 11.791 11.072 10.621 10.354 10.023 9.479 8.865 8.539 8.767 9.465 10.221 10.609 10.525 10.260 10.251 10.721 11.506 12.184 12.364 11.904 10.937 9.757 8.710 8.125 8.241 9.077 10.319 11.385 11.721 11.171 10.135 9.337
+ 13.743 13.460 13.001 12.502 12.035 11.580 11.078 10.514 9.961 9.547 9.374 9.451 9.689 9.942 10.079 10.039 9.866 9.705 9.745 10.118 10.788 11.500 11.863 11.546 10.499 9.050 7.779 7.238 7.653 8.806 10.154 11.114 11.358 10.944 10.247 9.741
+ 13.746 13.429 13.020 12.791 12.848 13.048 13.112 12.821 12.178 11.404 10.808 10.617 10.860 11.355 11.789 11.870 11.493 10.833 10.281 10.208 10.694 11.406 11.765 11.321 10.103 8.645 7.668 7.613 8.382 9.451 10.264 10.577 10.520 10.376 10.320 10.335
+ 13.303 13.018 12.781 12.954 13.590 14.338 14.682 14.301 13.297 12.116 11.265 11.041 11.416 12.101 12.702 12.884 12.523 11.785 11.086 10.869 11.288 12.026 12.420 11.894 10.412 8.592 7.353 7.325 8.434 9.991 11.170 11.518 11.126 10.420 9.805 9.479
+ 13.685 13.420 13.197 13.346 13.907 14.551 14.807 14.400 13.429 12.288 11.423 11.121 11.427 12.161 12.982 13.480 13.347 12.583 11.575 10.919 11.008 11.681 12.249 11.954 10.575 8.681 7.315 7.292 8.646 10.626 12.221 12.792 12.350 11.382 10.451 9.916
+ 13.720 13.488 13.326 13.533 14.088 14.625 14.714 14.187 13.229 12.199 11.404 11.010 11.104 11.707 12.665 13.555 13.829 13.215 12.047 11.151 11.233 12.228 13.210 13.047 11.343 8.873 7.097 7.096 8.780 11.008 12.473 12.605 11.788 10.824 10.241 10.047
+ 13.446 13.460 13.568 13.826 14.172 14.423 14.391 13.993 13.287 12.436 11.660 11.197 11.256 11.895 12.893 13.761 13.994 13.434 12.473 11.828 12.005 12.836 13.517 13.185 11.630 9.553 8.128 8.176 9.596 11.471 12.747 12.918 12.213 11.247 10.515 10.168
+ 13.076 13.203 13.467 13.835 14.190 14.364 14.222 13.731 12.975 12.114 11.351 10.912 10.993 11.635 12.609 13.435 13.629 13.050 12.082 11.422 11.573 12.403 13.151 12.959 11.543 9.486 7.890 7.636 8.796 10.628 12.120 12.628 12.166 11.212 10.310 9.797
+ 12.687 13.032 13.573 14.086 14.372 14.341 14.015 13.472 12.787 12.029 11.317 10.865 10.917 11.565 12.585 13.474 13.726 13.200 12.283 11.657 11.789 12.526 13.134 12.805 11.288 9.149 7.448 7.050 8.077 9.873 11.465 12.164 11.869 10.973 10.023 9.446
+ 12.566 13.052 13.789 14.427 14.687 14.477 13.897 13.129 12.327 11.582 10.986 10.701 10.914 11.679 12.760 13.664 13.917 13.416 12.558 12.006 12.183 12.904 13.437 13.028 11.485 9.397 7.778 7.400 8.305 9.829 11.092 11.544 11.196 10.446 9.737 9.337
+ 12.321 12.846 13.677 14.450 14.809 14.584 13.884 13.014 12.273 11.775 11.471 11.326 11.456 12.036 13.021 13.988 14.333 13.747 12.576 11.665 11.711 12.636 13.541 13.378 11.826 9.632 8.096 8.087 9.398 10.964 11.723 11.387 10.493 9.802 9.627 9.722
+ 13.251 13.532 13.954 14.291 14.340 14.022 13.428 12.755 12.178 11.756 11.463 11.300 11.376 11.812 12.567 13.323 13.639 13.273 12.442 11.728 11.653 12.220 12.834 12.716 11.525 9.690 8.173 7.816 8.758 10.371 11.698 12.065 11.409 10.175 8.969 8.254
+ 13.333 13.509 13.717 13.770 13.569 13.162 12.695 12.290 11.949 11.583 11.155 10.801 10.788 11.303 12.216 13.064 13.322 12.801 11.845 11.128 11.146 11.805 12.449 12.350 11.289 9.768 8.661 8.586 9.473 10.664 11.423 11.431 10.891 10.250 9.820 9.644
+ 12.922 12.748 12.533 12.435 12.506 12.645 12.666 12.417 11.877 11.177 10.556 10.271 10.482 11.145 11.975 12.542 12.509 11.878 11.045 10.574 10.788 11.489 12.038 11.802 10.647 9.093 7.989 7.941 8.904 10.243 11.187 11.312 10.711 9.807 9.026 8.601
+ 10.733 11.143 11.792 12.433 12.872 13.031 12.920 12.561 11.958 11.154 10.323 9.785 9.854 10.602 11.708 12.575 12.699 12.036 11.088 10.567 10.862 11.703 12.314 11.983 10.628 8.922 7.855 8.059 9.381 11.017 12.064 12.068 11.193 9.976 8.940 8.376
+ 11.404 11.525 11.733 11.969 12.164 12.278 12.316 12.282 12.127 11.750 11.111 10.368 9.889 10.044 10.898 12.056 12.873 12.913 12.299 11.632 11.497 11.934 12.357 12.032 10.729 9.013 7.876 7.994 9.220 10.697 11.502 11.268 10.313 9.261 8.546 8.238
+ 11.907 11.964 12.137 12.453 12.830 13.111 13.177 13.025 12.732 12.358 11.920 11.469 11.173 11.264 11.833 12.653 13.261 13.291 12.797 12.256 12.171 12.595 13.018 12.756 11.575 9.994 8.969 9.190 10.538 12.151 13.042 12.740 11.505 10.000 8.812 8.201
+ 11.071 11.128 11.416 12.062 12.933 13.681 13.997 13.837 13.395 12.887 12.381 11.861 11.426 11.345 11.845 12.813 13.751 14.130 13.842 13.330 13.186 13.553 13.903 13.457 11.937 9.967 8.719 9.024 10.698 12.648 13.670 13.267 11.856 10.282 9.170 8.662
+ 13.009 12.333 11.710 11.929 13.104 14.561 15.412 15.250 14.362 13.340 12.547 11.973 11.529 11.366 11.792 12.866 14.133 14.892 14.795 14.201 13.854 14.141 14.631 14.416 12.991 10.880 9.361 9.468 11.124 13.164 14.237 13.786 12.302 10.744 9.752 9.363
+ 13.029 12.129 11.276 11.510 13.015 14.958 16.181 16.119 15.105 13.906 13.016 12.406 11.859 11.442 11.532 12.382 13.716 14.854 15.297 15.167 15.038 15.275 15.562 15.155 13.666 11.616 10.165 10.174 11.449 12.872 13.324 12.576 11.346 10.555 10.502 10.750
+ 13.998 13.287 12.553 12.573 13.544 14.941 15.974 16.190 15.690 14.860 13.965 13.051 12.167 11.582 11.671 12.548 13.846 14.952 15.503 15.665 15.873 16.267 16.422 15.705 13.976 11.951 10.780 11.136 12.614 14.019 14.313 13.419 12.161 11.459 11.540 11.882
+ 14.243 13.334 12.294 12.042 12.903 14.386 15.602 15.934 15.388 14.423 13.499 12.798 12.298 12.007 12.052 12.538 13.359 14.232 14.915 15.400 15.822 16.190 16.233 15.594 14.238 12.667 11.669 11.734 12.640 13.584 13.774 12.994 11.674 10.468 9.752 9.484
+ 14.214 13.228 12.000 11.463 12.063 13.473 14.876 15.548 15.285 14.405 13.408 12.636 12.162 11.916 11.846 11.975 12.340 12.938 13.723 14.633 15.557 16.286 16.517 16.011 14.814 13.351 12.252 11.974 12.491 13.286 13.658 13.144 11.760 9.945 8.304 7.345
+ 13.940 13.093 12.017 11.507 11.981 13.219 14.548 15.299 15.187 14.386 13.320 12.380 11.765 11.482 11.438 11.533 11.718 12.031 12.588 13.490 14.681 15.843 16.475 16.165 14.905 13.201 11.834 11.410 11.982 13.014 13.716 13.508 12.314 10.548 8.861 7.849
+ 13.901 13.193 12.272 11.794 12.145 13.195 14.395 15.126 15.053 14.271 13.183 12.226 11.642 11.416 11.371 11.338 11.287 11.353 11.753 12.636 13.935 15.308 16.231 16.223 15.134 13.297 11.449 10.380 10.510 11.611 12.878 13.353 12.463 10.382 7.986 6.401
+ 13.998 13.361 12.507 11.986 12.116 12.797 13.621 14.141 14.120 13.600 12.816 12.058 11.548 11.364 11.411 11.465 11.315 10.950 10.654 10.874 11.891 13.502 14.998 15.533 14.673 12.738 10.672 9.484 9.641 10.819 12.136 12.711 12.147 10.693 9.048 7.983
+ 13.707 13.084 12.297 11.877 12.016 12.474 12.862 12.979 12.903 12.776 12.572 12.126 11.390 10.615 10.218 10.408 10.937 11.272 11.083 10.596 10.446 11.098 12.338 13.323 13.199 11.811 9.898 8.614 8.724 10.095 11.835 12.909 12.770 11.603 10.120 9.124
+ 12.933 12.303 11.513 11.132 11.392 12.050 12.632 12.810 12.593 12.205 11.822 11.436 10.966 10.442 10.066 10.048 10.397 10.878 11.205 11.282 11.265 11.358 11.542 11.508 10.893 9.646 8.191 7.240 7.334 8.469 10.064 11.304 11.619 10.993 9.936 9.159
+ 12.647 12.067 11.307 10.835 10.817 11.035 11.148 11.013 10.770 10.636 10.631 10.538 10.134 9.469 8.892 8.789 9.250 9.992 10.595 10.845 10.854 10.864 10.936 10.833 10.229 9.064 7.709 6.793 6.792 7.711 9.085 10.280 10.862 10.795 10.381 10.034
+ 9.477 10.002 10.644 10.900 10.555 9.839 9.223 9.050 9.263 9.462 9.234 8.480 7.509 6.810 6.705 7.145 7.791 8.300 8.576 8.792 9.178 9.768 10.309 10.418 9.867 8.790 7.643 6.965 7.078 7.927 9.147 10.274 10.987 11.224 11.154 11.030
+ 8.986 9.065 9.223 9.420 9.559 9.535 9.326 9.011 8.688 8.357 7.891 7.167 6.242 5.398 4.996 5.220 5.941 6.817 7.551 8.076 8.504 8.921 9.229 9.214 8.780 8.115 7.616 7.595 8.032 8.576 8.801 8.509 7.829 7.068 6.489 6.198
+ 7.061 7.735 8.720 9.484 9.602 9.003 8.017 7.181 6.905 7.203 7.678 7.783 7.204 6.080 4.931 4.333 4.580 5.548 6.831 7.993 8.773 9.115 9.095 8.831 8.456 8.122 7.972 8.063 8.305 8.485 8.386 7.917 7.165 6.339 5.661 5.287
+ 7.433 7.852 8.432 8.815 8.753 8.247 7.531 6.920 6.624 6.635 6.761 6.760 6.499 6.025 5.532 5.254 5.347 5.827 6.582 7.428 8.173 8.676 8.873 8.793 8.542 8.270 8.107 8.108 8.213 8.278 8.135 7.681 6.940 6.062 5.280 4.819
+ 8.301 8.596 9.026 9.332 9.264 8.725 7.849 6.952 6.351 6.166 6.249 6.306 6.125 5.727 5.342 5.227 5.498 6.084 6.822 7.561 8.191 8.606 8.696 8.420 7.905 7.455 7.382 7.783 8.422 8.854 8.702 7.903 6.718 5.543 4.680 4.245
+ 7.422 7.812 8.529 9.346 9.845 9.619 8.588 7.151 5.963 5.477 5.610 5.845 5.692 5.124 4.597 4.657 5.471 6.690 7.740 8.254 8.279 8.111 7.982 7.893 7.733 7.496 7.345 7.448 7.759 7.990 7.822 7.163 6.222 5.338 4.743 4.471
+ 7.198 8.126 9.350 10.024 9.649 8.371 6.854 5.814 5.559 5.851 6.151 6.040 5.504 4.892 4.618 4.861 5.479 6.175 6.735 7.139 7.481 7.796 7.975 7.863 7.436 6.884 6.519 6.547 6.908 7.299 7.373 6.954 6.128 5.163 4.352 3.900
+ 7.154 7.911 8.894 9.403 9.026 7.897 6.574 5.638 5.324 5.418 5.485 5.227 4.703 4.256 4.234 4.724 5.506 6.229 6.664 6.810 6.822 6.831 6.832 6.736 6.500 6.217 6.056 6.115 6.321 6.461 6.335 5.897 5.274 4.668 4.230 4.013
+ 6.190 6.920 8.009 8.887 9.070 8.423 7.235 6.050 5.323 5.143 5.226 5.185 4.862 4.452 4.311 4.642 5.313 5.986 6.405 6.575 6.681 6.836 6.944 6.806 6.390 5.946 5.837 6.202 6.769 7.032 6.654 5.750 4.797 4.242 4.159 4.269
+ 7.511 7.673 7.973 8.288 8.378 8.028 7.264 6.411 5.887 5.861 6.087 6.100 5.641 4.928 4.521 4.863 5.889 7.054 7.743 7.723 7.254 6.794 6.607 6.610 6.565 6.373 6.174 6.167 6.357 6.506 6.329 5.757 4.997 4.355 3.992 3.863
+ 7.888 7.590 7.214 6.989 6.949 6.924 6.749 6.450 6.229 6.247 6.417 6.454 6.149 5.616 5.271 5.506 6.340 7.348 7.952 7.853 7.240 6.631 6.480 6.884 7.569 8.148 8.382 8.269 7.944 7.526 7.050 6.517 5.958 5.448 5.071 4.874
+ 8.025 7.762 7.489 7.466 7.697 7.918 7.829 7.369 6.758 6.291 6.073 5.958 5.752 5.460 5.336 5.651 6.412 7.269 7.746 7.596 6.994 6.406 6.252 6.632 7.308 7.915 8.201 8.128 7.799 7.333 6.807 6.270 5.778 5.393 5.150 5.039
+ 7.438 7.841 8.495 9.108 9.334 8.968 8.127 7.221 6.686 6.646 6.808 6.711 6.144 5.373 4.943 5.219 6.064 6.924 7.264 6.965 6.351 5.869 5.729 5.828 5.971 6.116 6.380 6.814 7.221 7.245 6.693 5.767 4.958 4.658 4.842 5.121
+ 7.507 8.198 9.220 10.027 10.180 9.593 8.584 7.668 7.209 7.165 7.156 6.807 6.112 5.489 5.463 6.214 7.366 8.221 8.259 7.505 6.478 5.782 5.687 6.033 6.460 6.724 6.811 6.796 6.664 6.300 5.655 4.900 4.358 4.252 4.501 4.775
+ 6.392 7.595 9.282 10.473 10.536 9.550 8.184 7.197 6.910 7.043 7.015 6.473 5.624 5.096 5.440 6.653 8.117 9.001 8.827 7.761 6.431 5.465 5.107 5.200 5.452 5.706 5.973 6.259 6.413 6.193 5.493 4.509 3.644 3.212 3.205 3.339
+ 5.922 7.138 8.890 10.225 10.475 9.605 8.153 6.835 6.102 5.941 6.030 6.068 6.024 6.121 6.583 7.390 8.235 8.714 8.609 8.019 7.261 6.635 6.248 6.018 5.823 5.648 5.579 5.688 5.913 6.064 5.943 5.490 4.818 4.132 3.609 3.338
+ 5.347 6.212 7.588 8.915 9.681 9.639 8.911 7.883 6.982 6.459 6.319 6.428 6.679 7.059 7.580 8.142 8.509 8.438 7.878 7.053 6.335 5.982 5.971 6.046 5.953 5.663 5.379 5.350 5.638 6.044 6.243 6.010 5.358 4.508 3.750 3.314
+ 5.047 5.905 7.295 8.663 9.439 9.324 8.480 7.466 6.894 7.024 7.609 8.109 8.120 7.667 7.123 6.854 6.909 7.031 6.932 6.568 6.146 5.879 5.762 5.596 5.240 4.825 4.690 5.076 5.856 6.574 6.763 6.289 5.411 4.549 3.977 3.728
+ 6.198 7.081 8.333 9.232 9.274 8.455 7.249 6.298 6.023 6.404 7.049 7.490 7.480 7.101 6.632 6.313 6.197 6.177 6.143 6.089 6.102 6.224 6.365 6.343 6.047 5.581 5.244 5.351 5.989 6.910 7.639 7.728 7.015 5.725 4.368 3.510
+ 7.178 8.005 9.018 9.452 9.012 8.064 7.286 7.112 7.433 7.767 7.702 7.197 6.531 6.008 5.728 5.605 5.560 5.647 5.973 6.518 7.049 7.255 6.970 6.317 5.619 5.199 5.208 5.611 6.260 6.954 7.446 7.474 6.871 5.730 4.457 3.617
+ 7.318 7.954 8.796 9.277 9.073 8.313 7.473 7.050 7.231 7.793 8.271 8.272 7.711 6.827 6.006 5.546 5.524 5.817 6.226 6.586 6.801 6.826 6.630 6.220 5.679 5.189 4.974 5.179 5.769 6.510 7.061 7.134 6.648 5.769 4.849 4.268
+ 7.221 7.932 8.811 9.199 8.829 7.998 7.286 7.102 7.409 7.837 8.021 7.847 7.453 7.022 6.626 6.236 5.847 5.555 5.492 5.695 6.048 6.359 6.492 6.433 6.255 6.042 5.874 5.862 6.128 6.704 7.402 7.827 7.603 6.677 5.449 4.584
+ 6.771 7.663 8.848 9.524 9.223 8.098 6.802 6.062 6.229 7.108 8.120 8.667 8.449 7.569 6.416 5.433 4.924 4.962 5.424 6.079 6.690 7.087 7.193 7.018 6.648 6.227 5.928 5.908 6.228 6.792 7.345 7.574 7.283 6.529 5.635 5.035
+ 6.847 7.342 8.181 9.042 9.507 9.270 8.389 7.337 6.752 7.001 7.888 8.756 8.930 8.183 6.865 5.635 5.012 5.106 5.664 6.335 6.889 7.243 7.371 7.241 6.875 6.433 6.185 6.348 6.903 7.565 7.952 7.825 7.222 6.398 5.661 5.240
+ 7.686 7.597 7.586 7.823 8.289 8.738 8.863 8.549 8.010 7.668 7.840 8.461 9.071 9.116 8.355 7.065 5.883 5.381 5.687 6.430 7.036 7.131 6.749 6.228 5.899 5.874 6.054 6.309 6.621 7.033 7.497 7.795 7.658 7.016 6.138 5.509
+ 7.715 7.890 8.112 8.274 8.414 8.653 8.994 9.236 9.122 8.622 8.045 7.820 8.101 8.572 8.672 8.083 7.042 6.186 6.036 6.568 7.260 7.548 7.283 6.784 6.494 6.572 6.827 6.987 7.006 7.073 7.330 7.617 7.554 6.913 5.926 5.181
+ 8.147 8.192 8.273 8.406 8.633 8.949 9.228 9.261 8.923 8.353 7.923 7.982 8.527 9.127 9.206 8.498 7.303 6.303 6.059 6.595 7.391 7.802 7.531 6.799 6.111 5.859 6.089 6.582 7.089 7.486 7.740 7.798 7.566 7.033 6.379 5.923
+ 7.802 7.455 7.028 6.940 7.533 8.777 10.148 10.857 10.390 8.953 7.437 6.807 7.376 8.545 9.273 8.922 7.754 6.681 6.473 7.134 7.964 8.216 7.732 6.997 6.632 6.825 7.253 7.493 7.463 7.441 7.666 7.968 7.850 6.998 5.695 4.713
+ 5.841 6.464 7.341 8.057 8.470 8.743 9.048 9.304 9.209 8.571 7.590 6.787 6.595 6.990 7.515 7.675 7.366 6.932 6.821 7.166 7.677 7.917 7.692 7.180 6.729 6.548 6.606 6.773 7.020 7.413 7.914 8.239 8.006 7.081 5.820 4.914
+ 6.545 6.723 6.905 6.958 6.969 7.167 7.653 8.207 8.429 8.105 7.451 6.964 6.995 7.424 7.768 7.638 7.123 6.728 6.918 7.673 8.473 8.722 8.229 7.330 6.572 6.284 6.422 6.758 7.155 7.629 8.154 8.484 8.263 7.358 6.115 5.219
+ 6.761 6.945 7.036 6.828 6.490 6.459 6.988 7.798 8.226 7.796 6.690 5.657 5.398 5.987 6.832 7.228 6.973 6.501 6.420 6.929 7.641 7.959 7.624 6.916 6.364 6.279 6.562 6.915 7.186 7.468 7.867 8.250 8.276 7.732 6.832 6.141
+ 7.364 7.241 7.097 7.115 7.463 8.142 8.894 9.291 9.032 8.206 7.279 6.765 6.822 7.125 7.178 6.775 6.230 6.112 6.733 7.820 8.701 8.839 8.260 7.495 7.117 7.297 7.755 8.112 8.243 8.310 8.471 8.597 8.345 7.524 6.394 5.572
+ 7.179 7.083 6.877 6.671 6.759 7.414 8.557 9.641 9.973 9.260 7.916 6.794 6.541 7.101 7.823 8.059 7.728 7.333 7.445 8.143 8.934 9.195 8.726 7.897 7.292 7.213 7.518 7.866 8.084 8.265 8.523 8.729 8.552 7.799 6.724 5.931
+ 7.334 7.152 6.818 6.503 6.553 7.276 8.611 9.999 10.667 10.186 8.842 7.483 6.915 7.325 8.193 8.756 8.620 8.010 7.500 7.488 7.897 8.312 8.376 8.081 7.710 7.562 7.723 8.071 8.435 8.716 8.858 8.775 8.359 7.617 6.774 6.205
+ 6.453 6.089 5.557 5.232 5.536 6.679 8.407 10.036 10.814 10.427 9.230 8.000 7.382 7.469 7.843 8.014 7.844 7.589 7.575 7.841 8.109 8.078 7.744 7.416 7.420 7.794 8.260 8.513 8.497 8.410 8.434 8.484 8.261 7.580 6.640 5.952
+ 5.911 6.054 6.207 6.332 6.646 7.452 8.758 10.083 10.726 10.330 9.224 8.188 7.824 8.087 8.415 8.317 7.854 7.547 7.809 8.478 8.929 8.662 7.804 7.020 6.911 7.480 8.171 8.434 8.244 8.060 8.274 8.732 8.828 8.120 6.851 5.849
+ 6.319 6.523 6.787 6.993 7.200 7.613 8.358 9.293 10.033 10.206 9.720 8.829 7.954 7.419 7.321 7.574 8.038 8.576 9.027 9.200 8.968 8.398 7.771 7.421 7.490 7.827 8.139 8.262 8.302 8.487 8.871 9.184 9.012 8.186 7.024 6.179
+ 7.252 7.206 7.074 6.892 6.856 7.222 8.071 9.138 9.904 9.911 9.081 7.792 6.648 6.140 6.418 7.292 8.387 9.305 9.737 9.540 8.804 7.872 7.208 7.138 7.626 8.286 8.668 8.601 8.319 8.215 8.451 8.765 8.677 7.938 6.826 5.998
+ 8.129 7.944 7.596 7.199 6.988 7.192 7.828 8.608 9.078 8.924 8.190 7.239 6.496 6.202 6.355 6.850 7.594 8.494 9.342 9.806 9.610 8.794 7.774 7.107 7.094 7.585 8.137 8.412 8.434 8.479 8.715 8.950 8.773 7.969 6.817 5.970
+ 8.354 7.949 7.296 6.678 6.406 6.665 7.379 8.208 8.718 8.637 8.001 7.116 6.352 5.957 5.999 6.429 7.161 8.068 8.934 9.476 9.485 8.984 8.261 7.701 7.534 7.711 8.009 8.258 8.475 8.770 9.125 9.295 8.959 8.036 6.861 6.037
+ 8.285 7.661 6.891 6.570 6.987 7.949 8.960 9.582 9.668 9.325 8.710 7.896 6.932 6.008 5.495 5.749 6.810 8.253 9.379 9.648 9.035 8.034 7.301 7.196 7.579 7.999 8.104 7.922 7.802 8.061 8.659 9.166 9.086 8.269 7.092 6.239
+ 7.513 6.988 6.354 6.147 6.650 7.687 8.737 9.272 9.080 8.348 7.469 6.750 6.255 5.900 5.661 5.697 6.226 7.264 8.480 9.329 9.415 8.784 7.907 7.336 7.309 7.638 7.935 7.990 7.934 8.061 8.472 8.900 8.903 8.263 7.256 6.499
+ 6.013 5.923 5.769 5.645 5.703 6.066 6.688 7.319 7.630 7.433 6.813 6.069 5.500 5.247 5.290 5.579 6.128 6.961 7.970 8.859 9.283 9.099 8.492 7.865 7.550 7.597 7.810 7.980 8.075 8.208 8.435 8.605 8.448 7.843 7.005 6.398
+ 5.177 5.243 5.385 5.649 6.105 6.756 7.436 7.830 7.656 6.906 5.916 5.180 5.028 5.423 6.044 6.583 6.985 7.423 8.055 8.795 9.329 9.361 8.862 8.105 7.452 7.114 7.070 7.197 7.422 7.745 8.109 8.322 8.137 7.482 6.611 5.990
+ 6.135 5.771 5.334 5.227 5.689 6.583 7.407 7.584 6.872 5.597 4.488 4.191 4.809 5.858 6.666 6.927 6.904 7.146 7.936 8.982 9.632 9.419 8.461 7.371 6.765 6.817 7.226 7.580 7.736 7.858 8.132 8.469 8.544 8.127 7.378 6.788
+ 5.171 5.067 4.969 5.049 5.430 6.074 6.737 7.069 6.844 6.154 5.399 5.043 5.296 5.974 6.654 7.015 7.077 7.138 7.475 8.063 8.568 8.614 8.112 7.352 6.808 6.801 7.301 7.992 8.518 8.700 8.577 8.301 8.003 7.745 7.552 7.446
+ 4.099 3.813 3.591 3.879 4.881 6.345 7.660 8.207 7.746 6.586 5.385 4.735 4.809 5.331 5.874 6.217 6.475 6.904 7.586 8.277 8.578 8.280 7.568 6.913 6.723 7.064 7.666 8.181 8.450 8.544 8.594 8.595 8.414 7.964 7.372 6.947
+ 6.221 5.843 5.325 5.017 5.165 5.746 6.444 6.833 6.673 6.092 5.504 5.298 5.535 5.915 6.061 5.881 5.688 5.947 6.843 8.053 8.937 9.008 8.304 7.353 6.779 6.865 7.428 8.053 8.441 8.570 8.584 8.578 8.507 8.294 7.978 7.737
+ 5.727 5.038 4.172 3.782 4.190 5.154 6.038 6.269 5.739 4.872 4.291 4.366 4.962 5.582 5.781 5.519 5.180 5.255 5.937 6.967 7.824 8.108 7.813 7.283 6.938 6.986 7.348 7.798 8.159 8.386 8.497 8.479 8.271 7.866 7.387 7.059
+ 5.623 4.991 4.188 3.811 4.173 5.080 5.973 6.322 5.989 5.297 4.761 4.692 4.993 5.300 5.341 5.206 5.288 5.942 7.135 8.402 9.153 9.092 8.416 7.644 7.223 7.258 7.534 7.788 7.938 8.080 8.301 8.505 8.470 8.073 7.466 7.010
+ 6.203 5.622 4.800 4.236 4.312 5.052 6.082 6.839 6.916 6.322 5.454 4.806 4.629 4.817 5.097 5.340 5.702 6.446 7.609 8.831 9.529 9.322 8.341 7.181 6.499 6.590 7.253 8.011 8.483 8.587 8.479 8.338 8.223 8.100 7.956 7.849
+ 3.528 4.075 4.775 5.198 5.249 5.196 5.358 5.767 6.146 6.209 5.958 5.678 5.632 5.796 5.917 5.846 5.779 6.130 7.093 8.343 9.181 9.072 8.096 6.913 6.260 6.414 7.072 7.710 8.039 8.144 8.235 8.323 8.180 7.624 6.811 6.202
+ 4.599 4.173 3.741 3.788 4.458 5.418 6.124 6.243 5.892 5.511 5.473 5.788 6.125 6.145 5.832 5.540 5.715 6.513 7.630 8.502 8.696 8.207 7.431 6.857 6.742 7.004 7.382 7.685 7.911 8.154 8.413 8.519 8.250 7.562 6.704 6.109
+ 4.230 4.010 3.869 4.128 4.819 5.620 6.094 6.025 5.568 5.100 4.913 5.023 5.225 5.336 5.377 5.551 6.046 6.848 7.723 8.367 8.594 8.421 8.015 7.576 7.258 7.141 7.243 7.521 7.863 8.119 8.162 7.957 7.575 7.152 6.812 6.628
+ 4.717 5.032 5.472 5.850 6.157 6.513 6.957 7.304 7.266 6.740 5.981 5.440 5.401 5.740 6.074 6.156 6.146 6.462 7.339 8.493 9.264 9.123 8.128 6.907 6.187 6.268 6.882 7.512 7.831 7.874 7.838 7.790 7.585 7.087 6.411 5.913
+ 6.914 6.753 6.787 7.330 8.257 9.012 9.046 8.290 7.231 6.508 6.412 6.707 6.929 6.845 6.647 6.732 7.293 8.120 8.777 8.951 8.661 8.158 7.674 7.283 6.973 6.800 6.905 7.353 7.971 8.407 8.374 7.889 7.261 6.829 6.702 6.732
+ 6.906 6.861 7.041 7.689 8.709 9.654 10.035 9.691 8.890 8.103 7.661 7.596 7.750 7.990 8.302 8.687 9.032 9.120 8.816 8.225 7.643 7.331 7.301 7.348 7.276 7.112 7.090 7.399 7.962 8.454 8.558 8.227 7.706 7.307 7.158 7.158
+ 5.776 6.077 6.656 7.470 8.444 9.442 10.254 10.642 10.455 9.749 8.806 8.017 7.689 7.891 8.450 9.089 9.581 9.825 9.815 9.559 9.057 8.343 7.541 6.862 6.505 6.552 6.922 7.424 7.864 8.117 8.138 7.933 7.542 7.045 6.577 6.291
+ 5.870 6.169 6.794 7.756 8.978 10.240 11.186 11.450 10.853 9.564 8.089 7.056 6.881 7.536 8.574 9.410 9.672 9.390 8.900 8.552 8.448 8.412 8.194 7.726 7.219 7.012 7.291 7.911 8.468 8.572 8.121 7.362 6.700 6.409 6.462 6.604
+ 7.450 7.359 7.427 7.944 8.970 10.217 11.170 11.383 10.751 9.585 8.436 7.801 7.870 8.467 9.190 9.653 9.676 9.329 8.835 8.400 8.108 7.907 7.710 7.495 7.339 7.357 7.584 7.916 8.150 8.110 7.772 7.282 6.861 6.654 6.647 6.704
+ 7.648 7.435 7.297 7.593 8.471 9.698 10.746 11.089 10.542 9.396 8.263 7.705 7.909 8.614 9.329 9.680 9.619 9.367 9.185 9.156 9.155 9.010 8.670 8.258 7.963 7.889 8.001 8.179 8.322 8.387 8.354 8.174 7.797 7.243 6.662 6.286
+ 6.268 6.673 7.514 8.735 10.089 11.165 11.582 11.210 10.268 9.200 8.437 8.182 8.374 8.796 9.240 9.584 9.772 9.761 9.513 9.053 8.509 8.089 7.956 8.116 8.398 8.563 8.470 8.171 7.857 7.700 7.714 7.743 7.593 7.196 6.690 6.337
+ 5.575 6.496 8.014 9.641 10.939 11.649 11.715 11.217 10.325 9.282 8.376 7.868 7.889 8.371 9.088 9.770 10.219 10.349 10.150 9.653 8.942 8.179 7.592 7.374 7.558 7.977 8.365 8.527 8.449 8.259 8.071 7.879 7.582 7.123 6.604 6.252
+ 7.320 7.561 8.098 8.945 9.963 10.854 11.269 10.999 10.104 8.902 7.825 7.222 7.224 7.733 8.501 9.254 9.785 9.989 9.864 9.494 9.013 8.570 8.277 8.176 8.228 8.350 8.455 8.496 8.459 8.339 8.118 7.763 7.274 6.710 6.200 5.894
+ 7.416 7.948 8.799 9.663 10.293 10.579 10.514 10.124 9.441 8.552 7.661 7.070 7.046 7.647 8.644 9.616 10.169 10.155 9.722 9.192 8.837 8.733 8.759 8.736 8.574 8.330 8.142 8.106 8.191 8.257 8.146 7.780 7.205 6.560 6.014 5.705
+ 8.440 8.653 9.068 9.628 10.206 10.617 10.671 10.255 9.386 8.226 7.050 6.171 5.845 6.172 7.036 8.133 9.092 9.644 9.743 9.563 9.361 9.308 9.403 9.517 9.524 9.403 9.235 9.101 8.994 8.812 8.446 7.872 7.183 6.532 6.048 5.798
+ 8.565 8.165 7.800 7.966 8.775 9.812 10.410 10.125 9.051 7.736 6.797 6.542 6.855 7.391 7.872 8.229 8.539 8.841 9.048 9.016 8.707 8.278 8.000 8.084 8.523 9.105 9.544 9.651 9.411 8.932 8.341 7.708 7.057 6.420 5.884 5.571
+ 8.175 8.300 8.611 9.144 9.805 10.355 10.498 10.050 9.062 7.816 6.699 6.018 5.884 6.212 6.812 7.494 8.115 8.575 8.801 8.768 8.528 8.219 8.001 7.950 8.004 8.005 7.826 7.485 7.134 6.940 6.934 6.972 6.847 6.472 5.972 5.614
+ 8.167 7.662 7.028 6.747 7.063 7.800 8.480 8.632 8.080 7.041 5.978 5.345 5.371 5.995 6.936 7.847 8.453 8.636 8.449 8.065 7.678 7.422 7.319 7.306 7.309 7.300 7.305 7.357 7.437 7.463 7.331 6.988 6.470 5.895 5.406 5.129
+ 7.451 7.202 6.978 7.125 7.786 8.757 9.565 9.740 9.101 7.876 6.581 5.734 5.596 6.087 6.893 7.677 8.230 8.505 8.537 8.376 8.067 7.670 7.282 6.995 6.844 6.790 6.770 6.758 6.788 6.892 7.020 7.030 6.775 6.245 5.622 5.200
+ 5.865 6.270 6.980 7.794 8.441 8.698 8.513 8.029 7.460 6.939 6.466 6.031 5.755 5.888 6.593 7.707 8.726 9.100 8.646 7.712 6.936 6.768 7.135 7.549 7.539 7.049 6.462 6.246 6.548 7.086 7.394 7.193 6.558 5.800 5.206 4.903
+ 5.959 6.194 6.590 7.036 7.433 7.717 7.851 7.802 7.543 7.081 6.504 5.978 5.712 5.859 6.441 7.313 8.212 8.866 9.102 8.917 8.463 7.963 7.598 7.434 7.411 7.410 7.346 7.221 7.110 7.086 7.152 7.230 7.220 7.079 6.870 6.715
+ 4.883 5.639 6.881 8.158 9.017 9.193 8.730 7.941 7.218 6.794 6.624 6.482 6.193 5.834 5.716 6.156 7.208 8.540 9.597 9.922 9.430 8.445 7.490 6.974 6.996 7.355 7.725 7.872 7.758 7.512 7.320 7.306 7.484 7.776 8.062 8.236
+ 4.732 5.552 6.867 8.158 8.929 8.947 8.362 7.607 7.114 7.028 7.132 7.063 6.651 6.111 5.910 6.389 7.440 8.522 9.019 8.685 7.827 7.091 7.004 7.622 8.525 9.133 9.095 8.477 7.657 7.044 6.839 6.981 7.262 7.494 7.608 7.638
+ 5.624 6.231 7.164 8.018 8.463 8.377 7.846 7.083 6.320 5.739 5.423 5.348 5.422 5.569 5.818 6.291 7.078 8.068 8.913 9.214 8.831 8.069 7.529 7.691 8.536 9.519 9.967 9.583 8.656 7.800 7.444 7.511 7.549 7.187 6.500 5.946
+ 6.454 7.193 8.292 9.249 9.745 9.745 9.375 8.750 7.936 7.033 6.247 5.803 5.779 6.044 6.401 6.788 7.327 8.121 9.002 9.536 9.352 8.542 7.725 7.632 8.511 9.872 10.830 10.788 9.885 8.816 8.208 8.110 8.051 7.573 6.728 6.050
+ 7.371 7.185 7.077 7.348 8.052 8.879 9.313 8.988 7.971 6.744 5.875 5.614 5.755 5.884 5.812 5.796 6.312 7.551 9.094 10.114 10.011 8.958 7.852 7.656 8.635 10.129 11.080 10.871 9.774 8.650 8.174 8.287 8.349 7.810 6.775 5.937
+ 7.630 7.532 7.554 7.945 8.739 9.610 9.993 9.440 7.982 6.204 4.912 4.596 5.098 5.781 6.087 6.014 6.085 6.811 8.129 9.351 9.707 9.046 8.030 7.619 8.267 9.529 10.449 10.373 9.478 8.539 8.179 8.297 8.218 7.407 6.061 5.013
+ 6.570 6.639 6.958 7.691 8.737 9.658 9.885 9.104 7.537 5.887 4.913 4.930 5.609 6.265 6.427 6.216 6.214 6.909 8.195 9.382 9.748 9.158 8.222 7.811 8.351 9.478 10.371 10.445 9.798 9.031 8.640 8.552 8.249 7.346 6.054 5.091
+ 5.218 6.033 7.315 8.586 9.488 9.879 9.742 9.099 8.036 6.796 5.784 5.366 5.620 6.254 6.836 7.145 7.327 7.705 8.393 9.112 9.400 9.047 8.360 7.960 8.285 9.214 10.161 10.550 10.245 9.568 8.917 8.397 7.793 6.901 5.864 5.141
+ 3.593 5.032 7.130 8.913 9.865 10.103 10.008 9.753 9.206 8.245 7.082 6.201 5.945 6.195 6.507 6.584 6.606 7.036 8.072 9.301 9.967 9.642 8.675 7.944 8.106 9.019 9.898 10.046 9.467 8.783 8.551 8.671 8.484 7.481 5.920 4.727
+ 4.796 5.245 6.079 7.155 8.247 9.072 9.367 9.012 8.121 7.013 6.059 5.484 5.281 5.297 5.431 5.750 6.400 7.381 8.406 9.020 8.931 8.282 7.593 7.391 7.801 8.459 8.832 8.672 8.205 7.884 7.928 8.077 7.813 6.864 5.542 4.578
+ 5.602 6.484 7.739 8.717 9.059 8.852 8.430 8.054 7.746 7.388 6.922 6.432 6.068 5.922 6.007 6.330 6.920 7.731 8.524 8.910 8.618 7.766 6.874 6.517 6.873 7.577 8.031 7.928 7.503 7.280 7.524 7.919 7.819 6.858 5.384 4.277
+ 5.403 6.381 7.837 9.092 9.691 9.576 8.985 8.207 7.435 6.776 6.306 6.080 6.071 6.174 6.307 6.526 6.993 7.766 8.610 9.056 8.744 7.772 6.718 6.241 6.564 7.302 7.805 7.728 7.312 7.108 7.385 7.795 7.642 6.545 4.901 3.676
+ 5.527 6.621 8.187 9.381 9.658 9.027 7.939 6.922 6.283 6.028 5.984 5.967 5.888 5.776 5.761 6.019 6.658 7.588 8.471 8.870 8.540 7.659 6.770 6.427 6.792 7.522 8.053 8.051 7.650 7.268 7.171 7.201 6.929 6.099 4.953 4.117
+ 4.311 5.382 6.951 8.253 8.800 8.572 7.876 7.056 6.323 5.784 5.509 5.521 5.713 5.867 5.833 5.718 5.854 6.488 7.450 8.160 8.049 7.081 5.889 5.333 5.812 6.933 7.835 7.906 7.259 6.547 6.303 6.432 6.341 5.568 4.311 3.339
+ 5.853 6.353 7.176 8.021 8.571 8.617 8.156 7.395 6.644 6.143 5.939 5.897 5.846 5.750 5.763 6.098 6.804 7.632 8.134 7.956 7.124 6.078 5.405 5.441 6.040 6.697 6.933 6.643 6.137 5.837 5.903 6.087 5.957 5.297 4.343 3.643
+ 4.522 5.466 6.891 8.166 8.840 8.818 8.285 7.501 6.670 5.937 5.419 5.197 5.251 5.466 5.736 6.073 6.600 7.365 8.165 8.586 8.299 7.374 6.329 5.789 6.016 6.716 7.295 7.354 6.992 6.648 6.627 6.783 6.650 5.924 4.827 4.001
+ 4.635 5.645 7.130 8.360 8.834 8.511 7.714 6.864 6.236 5.898 5.772 5.728 5.656 5.514 5.375 5.418 5.815 6.553 7.341 7.750 7.522 6.815 6.140 5.983 6.408 6.995 7.192 6.807 6.181 5.876 6.136 6.616 6.650 5.858 4.552 3.553
+ 4.939 5.532 6.449 7.302 7.791 7.825 7.514 7.051 6.584 6.165 5.779 5.416 5.119 4.976 5.074 5.440 6.007 6.624 7.107 7.315 7.203 6.845 6.381 5.948 5.617 5.397 5.281 5.285 5.439 5.715 5.975 6.009 5.655 4.945 4.138 3.601
+ 4.701 5.377 6.351 7.136 7.444 7.300 6.911 6.467 6.052 5.693 5.431 5.292 5.222 5.099 4.883 4.745 4.998 5.803 6.910 7.712 7.667 6.757 5.569 4.866 4.981 5.568 5.939 5.697 5.090 4.752 5.058 5.719 6.001 5.410 4.199 3.220
+ 5.430 5.961 6.666 7.126 7.178 6.971 6.728 6.491 6.102 5.443 4.655 4.121 4.177 4.849 5.834 6.749 7.383 7.729 7.816 7.570 6.894 5.890 4.954 4.571 4.940 5.773 6.494 6.692 6.429 6.111 6.057 6.167 6.021 5.328 4.288 3.505
+ 5.138 5.229 5.588 6.296 7.096 7.476 7.065 5.997 4.887 4.388 4.692 5.406 5.914 5.931 5.736 5.903 6.738 7.932 8.744 8.567 7.426 5.987 5.075 5.098 5.805 6.553 6.822 6.567 6.154 5.988 6.146 6.328 6.124 5.390 4.405 3.704
+ 3.532 4.716 6.284 7.264 7.242 6.592 6.062 6.104 6.539 6.795 6.464 5.670 4.950 4.801 5.306 6.132 6.828 7.138 7.071 6.768 6.338 5.843 5.374 5.076 5.069 5.331 5.684 5.930 5.993 5.937 5.831 5.633 5.215 4.531 3.756 3.231
+ 4.938 5.631 6.475 6.870 6.668 6.268 6.207 6.632 7.155 7.203 6.548 5.543 4.852 4.937 5.724 6.710 7.358 7.434 7.045 6.444 5.832 5.325 5.022 5.031 5.376 5.909 6.356 6.499 6.337 6.047 5.791 5.538 5.107 4.397 3.570 2.999
+ 5.351 5.744 6.225 6.472 6.454 6.473 6.867 7.644 8.367 8.441 7.589 6.138 4.866 4.502 5.234 6.598 7.809 8.273 7.925 7.164 6.502 6.206 6.194 6.203 6.056 5.793 5.595 5.596 5.747 5.846 5.690 5.216 4.532 3.834 3.297 3.014
+ 4.913 5.364 5.889 6.119 6.070 6.134 6.668 7.560 8.224 8.065 7.030 5.746 5.103 5.592 6.948 8.361 9.060 8.798 7.895 6.890 6.148 5.719 5.478 5.348 5.361 5.570 5.925 6.267 6.428 6.333 5.998 5.472 4.799 4.050 3.372 2.960
+ 5.535 5.681 5.847 5.923 5.958 6.154 6.682 7.455 8.089 8.118 7.358 6.137 5.179 5.177 6.313 8.081 9.564 9.990 9.192 7.682 6.277 5.589 5.710 6.288 6.864 7.198 7.343 7.466 7.629 7.695 7.450 6.785 5.795 4.731 3.865 3.389
+ 6.690 6.180 5.586 5.421 5.889 6.776 7.656 8.192 8.261 7.887 7.151 6.232 5.511 5.494 6.491 8.246 9.916 10.541 9.718 7.935 6.259 5.572 5.986 6.873 7.475 7.518 7.329 7.404 7.868 8.331 8.246 7.389 6.039 4.721 3.815 3.399
+ 7.357 6.874 6.281 6.075 6.552 7.594 8.721 9.360 9.164 8.204 6.920 5.898 5.585 6.099 7.203 8.432 9.292 9.465 8.929 7.959 6.997 6.438 6.437 6.834 7.277 7.452 7.297 7.029 6.961 7.223 7.600 7.635 6.947 5.558 3.969 2.910
+ 6.985 6.703 6.422 6.479 6.999 7.794 8.485 8.735 8.402 7.563 6.444 5.366 4.695 4.747 5.614 7.018 8.354 8.982 8.616 7.531 6.393 5.815 5.955 6.457 6.777 6.612 6.115 5.725 5.784 6.243 6.685 6.614 5.794 4.412 2.979 2.076
+ 6.157 6.656 7.359 7.892 8.050 7.898 7.646 7.422 7.158 6.670 5.881 4.982 4.377 4.441 5.252 6.497 7.628 8.162 7.937 7.164 6.266 5.619 5.361 5.380 5.448 5.413 5.306 5.296 5.530 5.969 6.344 6.291 5.587 4.339 2.990 2.115
+ 3.280 4.616 6.479 7.864 8.275 7.963 7.557 7.445 7.474 7.188 6.340 5.200 4.384 4.370 5.136 6.197 6.968 7.144 6.800 6.228 5.695 5.324 5.116 5.018 4.958 4.856 4.679 4.499 4.488 4.769 5.243 5.556 5.318 4.427 3.241 2.400
+ 3.009 3.870 5.060 5.936 6.232 6.193 6.275 6.668 7.085 7.007 6.166 4.865 3.838 3.743 4.687 6.139 7.292 7.595 7.060 6.169 5.481 5.260 5.361 5.419 5.150 4.555 3.902 3.536 3.646 4.151 4.741 5.056 4.881 4.270 3.520 3.013
+ 5.636 5.592 5.588 5.705 5.942 6.217 6.435 6.546 6.524 6.328 5.912 5.330 4.808 4.674 5.120 5.980 6.758 6.931 6.350 5.377 4.641 4.562 5.030 5.511 5.482 4.844 3.977 3.421 3.461 3.948 4.482 4.731 4.635 4.358 4.095 3.954
+ 5.802 6.040 6.355 6.550 6.541 6.390 6.212 6.044 5.805 5.397 4.847 4.360 4.211 4.546 5.248 5.988 6.423 6.406 6.052 5.627 5.361 5.323 5.440 5.616 5.828 6.124 6.535 6.986 7.306 7.330 7.016 6.485 5.942 5.553 5.362 5.303
+ 4.954 5.489 6.170 6.542 6.449 6.098 5.809 5.693 5.584 5.259 4.719 4.240 4.131 4.442 4.902 5.151 5.049 4.773 4.623 4.742 5.000 5.160 5.124 5.024 5.079 5.361 5.715 5.899 5.802 5.522 5.255 5.102 5.008 4.865 4.656 4.492
+ 3.822 4.445 5.360 6.096 6.310 5.954 5.265 4.586 4.160 4.029 4.078 4.171 4.256 4.361 4.515 4.678 4.752 4.676 4.503 4.384 4.461 4.751 5.117 5.371 5.406 5.272 5.111 5.035 5.033 5.001 4.848 4.585 4.315 4.144 4.097 4.108
+ 5.195 5.179 5.250 5.487 5.816 6.013 5.858 5.309 4.563 3.927 3.631 3.695 3.974 4.292 4.564 4.797 5.016 5.195 5.271 5.225 5.131 5.122 5.290 5.603 5.924 6.103 6.079 5.909 5.706 5.540 5.389 5.174 4.833 4.389 3.958 3.690
+ 5.683 6.075 6.688 7.216 7.337 6.887 6.000 5.050 4.422 4.233 4.271 4.204 3.897 3.549 3.520 3.983 4.734 5.338 5.495 5.291 5.106 5.262 5.741 6.229 6.430 6.340 6.225 6.329 6.602 6.728 6.421 5.710 4.929 4.432 4.308 4.360
+ 4.358 5.104 6.148 6.872 6.857 6.121 5.077 4.233 3.873 3.915 4.053 4.047 3.925 3.938 4.305 4.994 5.710 6.130 6.158 5.990 5.926 6.095 6.348 6.415 6.171 5.784 5.570 5.713 6.079 6.308 6.111 5.501 4.767 4.229 4.000 3.963
+ 2.222 3.484 5.266 6.587 6.862 6.219 5.302 4.757 4.805 5.194 5.478 5.386 4.974 4.524 4.306 4.422 4.795 5.282 5.757 6.145 6.404 6.514 6.487 6.372 6.231 6.097 5.955 5.773 5.539 5.285 5.052 4.856 4.678 4.497 4.329 4.221
+ 3.648 4.591 5.856 6.637 6.490 5.612 4.657 4.253 4.579 5.295 5.846 5.875 5.446 4.934 4.723 4.937 5.411 5.872 6.152 6.267 6.340 6.453 6.587 6.669 6.664 6.610 6.550 6.455 6.214 5.736 5.065 4.402 3.993 3.950 4.163 4.375
+ 4.915 5.387 5.931 6.081 5.692 5.061 4.686 4.877 5.538 6.259 6.630 6.498 6.006 5.437 5.037 4.932 5.156 5.675 6.381 7.071 7.509 7.553 7.264 6.878 6.649 6.671 6.830 6.912 6.767 6.401 5.925 5.445 4.999 4.587 4.238 4.029
+ 4.010 5.357 6.898 7.345 6.390 4.925 4.212 4.772 6.011 6.842 6.669 5.834 5.171 5.181 5.642 5.967 5.876 5.690 5.963 6.852 7.890 8.383 8.053 7.283 6.751 6.816 7.238 7.468 7.181 6.522 5.882 5.474 5.169 4.733 4.155 3.718
+ 5.014 6.105 7.339 7.697 7.027 6.156 6.094 7.061 8.255 8.560 7.533 5.772 4.383 4.054 4.599 5.294 5.631 5.723 6.053 6.872 7.881 8.496 8.401 7.821 7.287 7.140 7.271 7.320 7.072 6.636 6.250 5.969 5.596 4.941 4.112 3.513
+ 4.906 5.429 6.074 6.447 6.555 6.764 7.365 8.178 8.628 8.262 7.212 6.149 5.734 6.073 6.674 6.942 6.739 6.481 6.694 7.472 8.358 8.746 8.424 7.736 7.245 7.234 7.514 7.678 7.501 7.089 6.660 6.249 5.661 4.748 3.689 2.955
+ 4.825 5.190 5.707 6.120 6.327 6.427 6.595 6.886 7.162 7.197 6.876 6.313 5.780 5.516 5.559 5.757 5.925 6.015 6.146 6.473 7.011 7.572 7.881 7.770 7.317 6.799 6.500 6.517 6.697 6.753 6.445 5.728 4.756 3.778 3.018 2.612
+ 4.027 4.895 5.981 6.563 6.466 6.165 6.301 7.053 7.957 8.307 7.774 6.666 5.642 5.171 5.233 5.478 5.639 5.765 6.092 6.717 7.449 7.959 8.083 7.946 7.809 7.804 7.834 7.721 7.413 7.026 6.675 6.294 5.677 4.726 3.658 2.934
+ 5.188 5.495 5.834 5.942 5.856 5.908 6.404 7.297 8.145 8.435 7.976 7.028 6.083 5.493 5.280 5.255 5.279 5.407 5.796 6.494 7.338 8.059 8.467 8.545 8.383 8.061 7.616 7.109 6.684 6.481 6.480 6.432 6.015 5.122 4.030 3.273
+ 5.475 5.964 6.570 6.891 6.857 6.782 7.050 7.730 8.476 8.783 8.379 7.405 6.272 5.348 4.769 4.493 4.474 4.746 5.341 6.164 6.988 7.594 7.916 8.047 8.091 8.046 7.841 7.484 7.138 6.994 7.044 6.984 6.417 5.226 3.787 2.794
+ 5.381 5.972 6.677 6.967 6.717 6.305 6.271 6.845 7.752 8.436 8.468 7.802 6.720 5.583 4.653 4.072 3.928 4.242 4.889 5.594 6.074 6.256 6.339 6.601 7.106 7.596 7.710 7.348 6.814 6.559 6.725 6.931 6.555 5.313 3.625 2.408
+ 5.825 5.906 6.010 6.099 6.216 6.446 6.811 7.178 7.314 7.044 6.391 5.585 4.914 4.541 4.439 4.463 4.492 4.516 4.618 4.886 5.353 5.972 6.642 7.217 7.535 7.481 7.079 6.532 6.142 6.099 6.310 6.414 6.025 5.055 3.855 3.024
+ 3.706 4.146 4.788 5.342 5.684 5.915 6.217 6.643 7.022 7.080 6.662 5.883 5.079 4.581 4.508 4.709 4.904 4.898 4.725 4.618 4.838 5.489 6.426 7.306 7.768 7.625 6.980 6.171 5.585 5.429 5.606 5.784 5.628 5.049 4.279 3.736
+ 5.005 5.210 5.456 5.571 5.538 5.509 5.654 5.985 6.324 6.440 6.243 5.856 5.503 5.323 5.273 5.200 5.010 4.765 4.649 4.807 5.232 5.756 6.167 6.326 6.228 5.965 5.669 5.451 5.372 5.413 5.465 5.366 4.994 4.370 3.694 3.251
+ 4.900 5.374 5.953 6.206 5.995 5.577 5.374 5.603 6.083 6.374 6.124 5.350 4.436 3.868 3.917 4.502 5.299 5.973 6.366 6.518 6.574 6.644 6.736 6.766 6.632 6.287 5.786 5.281 4.936 4.833 4.895 4.922 4.716 4.237 3.653 3.251
+ 6.435 6.101 5.606 5.157 4.848 4.648 4.510 4.487 4.695 5.171 5.753 6.151 6.159 5.852 5.560 5.631 6.160 6.913 7.511 7.715 7.579 7.356 7.263 7.305 7.311 7.113 6.712 6.281 6.020 5.996 6.102 6.143 5.986 5.641 5.251 4.995
+ 5.023 4.894 4.767 4.775 4.932 5.129 5.253 5.314 5.434 5.705 6.055 6.265 6.159 5.795 5.493 5.619 6.292 7.259 8.033 8.233 7.847 7.230 6.845 6.942 7.415 7.923 8.163 8.072 7.828 7.676 7.728 7.899 8.004 7.926 7.714 7.537
+ 3.450 4.057 4.983 5.793 6.124 5.884 5.303 4.791 4.682 5.014 5.533 5.898 5.961 5.875 5.961 6.418 7.137 7.765 7.990 7.795 7.486 7.459 7.894 8.628 9.283 9.552 9.397 9.043 8.779 8.757 8.917 9.080 9.091 8.926 8.685 8.513
+ 3.692 4.527 5.638 6.350 6.376 5.965 5.600 5.572 5.788 5.954 5.897 5.710 5.612 5.715 5.958 6.237 6.574 7.097 7.855 8.669 9.229 9.363 9.219 9.153 9.402 9.854 10.155 10.052 9.659 9.358 9.432 9.770 9.957 9.672 9.022 8.481
+ 4.905 5.051 5.304 5.600 5.889 6.151 6.394 6.632 6.843 6.961 6.905 6.648 6.277 5.988 6.009 6.463 7.277 8.186 8.858 9.078 8.864 8.465 8.209 8.327 8.829 9.520 10.129 10.460 10.476 10.283 10.034 9.847 9.755 9.734 9.742 9.751
+ 6.817 6.534 6.163 5.957 6.059 6.396 6.731 6.828 6.614 6.226 5.911 5.855 6.070 6.436 6.831 7.239 7.735 8.363 9.031 9.539 9.731 9.643 9.500 9.553 9.868 10.277 10.512 10.433 10.148 9.916 9.924 10.136 10.341 10.353 10.181 10.007
+ 5.433 5.693 6.176 6.736 7.118 7.102 6.709 6.262 6.171 6.587 7.226 7.558 7.265 6.560 6.094 6.456 7.687 9.205 10.224 10.334 9.777 9.212 9.181 9.717 10.377 10.654 10.380 9.824 9.440 9.503 9.923 10.350 10.450 10.141 9.627 9.246
+ 7.254 6.881 6.521 6.557 6.974 7.370 7.354 6.960 6.648 6.866 7.597 8.326 8.497 8.048 7.519 7.606 8.544 9.857 10.721 10.618 9.734 8.779 8.402 8.710 9.272 9.554 9.372 9.007 8.904 9.259 9.840 10.159 9.841 8.902 7.762 6.993
+ 9.132 8.504 7.681 7.166 7.149 7.405 7.564 7.464 7.269 7.256 7.506 7.812 7.893 7.704 7.524 7.714 8.356 9.117 9.482 9.170 8.378 7.640 7.402 7.689 8.112 8.211 7.837 7.256 6.923 7.114 7.703 8.264 8.380 7.941 7.221 6.687
+ 12.534 12.085 11.609 11.575 12.077 12.746 13.039 12.661 11.739 10.644 9.664 8.851 8.157 7.659 7.606 8.186 9.229 10.174 10.410 9.741 8.593 7.733 7.707 8.425 9.238 9.453 8.881 7.987 7.526 7.956 9.059 10.086 10.285 9.449 8.080 7.062
+ 13.410 12.899 12.419 12.577 13.508 14.719 15.449 15.221 14.141 12.737 11.538 10.771 10.391 10.323 10.600 11.262 12.125 12.731 12.606 11.652 10.321 9.358 9.271 9.950 10.746 10.979 10.480 9.735 9.496 10.172 11.453 12.478 12.435 11.162 9.321 7.997
+ 12.829 12.566 12.402 12.765 13.782 15.113 16.132 16.301 15.505 14.096 12.654 11.662 11.311 11.529 12.137 12.945 13.735 14.211 14.068 13.190 11.828 10.551 9.910 10.049 10.588 10.917 10.726 10.312 10.364 11.342 12.934 14.109 13.806 11.787 8.981 6.976
+ 12.500 12.331 12.178 12.314 12.930 13.975 15.100 15.762 15.486 14.140 12.073 10.003 8.698 8.612 9.677 11.357 12.914 13.746 13.612 12.676 11.366 10.144 9.316 8.939 8.880 8.963 9.113 9.381 9.853 10.482 11.004 11.037 10.321 8.956 7.441 6.446
+ 12.630 12.333 12.045 12.141 12.786 13.794 14.727 15.132 14.751 13.612 12.009 10.407 9.324 9.146 9.940 11.354 12.729 13.425 13.182 12.257 11.229 10.588 10.417 10.412 10.196 9.684 9.182 9.139 9.768 10.813 11.669 11.734 10.784 9.105 7.358 6.258
+ 12.294 12.129 11.894 11.800 12.121 12.994 14.193 15.118 15.109 13.916 11.964 10.167 9.373 9.847 11.150 12.488 13.226 13.195 12.626 11.867 11.145 10.534 10.049 9.706 9.499 9.378 9.299 9.322 9.609 10.246 11.036 11.483 11.089 9.775 8.076 6.887
+ 12.413 12.136 11.752 11.573 11.921 12.907 14.245 15.289 15.377 14.280 12.434 10.734 10.003 10.487 11.754 13.023 13.666 13.521 12.841 12.010 11.287 10.733 10.300 9.937 9.624 9.372 9.236 9.335 9.795 10.601 11.463 11.866 11.373 9.980 8.255 7.070
+ 12.582 12.310 11.936 11.760 12.100 13.082 14.456 15.622 15.925 15.081 13.423 11.768 10.940 11.273 12.433 13.667 14.288 14.054 13.210 12.232 11.502 11.117 10.930 10.720 10.363 9.918 9.599 9.663 10.245 11.207 12.117 12.415 11.729 10.170 8.362 7.156
+ 12.741 12.548 12.262 12.110 12.399 13.310 14.669 15.901 16.318 15.579 13.993 12.395 11.629 12.021 13.194 14.362 14.849 14.464 13.514 12.520 11.881 11.699 11.794 11.854 11.602 10.961 10.151 9.638 9.883 10.983 12.455 13.391 13.006 11.220 8.853 7.191
+ 12.758 12.588 12.319 12.146 12.369 13.204 14.526 15.794 16.302 15.656 14.118 12.525 11.776 12.248 13.557 14.833 15.294 14.719 13.500 12.318 11.694 11.723 12.108 12.395 12.258 11.668 10.913 10.445 10.626 11.469 12.544 13.160 12.768 11.362 9.569 8.329
+ 12.710 12.569 12.328 12.153 12.344 13.146 14.466 15.762 16.308 15.692 14.189 12.657 11.999 12.545 13.844 14.990 15.244 14.487 13.218 12.155 11.771 12.059 12.628 12.973 12.754 11.961 10.917 10.137 10.070 10.803 11.927 12.697 12.466 11.151 9.370 8.111
+ 12.433 12.336 12.118 11.893 11.992 12.755 14.151 15.589 16.220 15.556 13.918 12.307 11.715 12.419 13.800 14.829 14.808 13.803 12.486 11.588 11.428 11.824 12.328 12.533 12.238 11.478 10.499 9.719 9.579 10.265 11.471 12.448 12.436 11.230 9.430 8.114
+ 12.334 12.216 11.971 11.739 11.863 12.675 14.105 15.526 16.086 15.338 13.674 12.132 11.667 12.460 13.805 14.665 14.435 13.310 12.030 11.284 11.275 11.719 12.162 12.280 11.971 11.297 10.448 9.751 9.598 10.207 11.350 12.341 12.428 11.363 9.688 8.442
+ 12.473 12.342 12.086 11.858 12.010 12.860 14.311 15.715 16.218 15.405 13.720 12.231 11.882 12.791 14.177 14.962 14.568 13.266 11.882 11.138 11.206 11.739 12.238 12.383 12.111 11.512 10.754 10.089 9.839 10.217 11.078 11.874 11.961 11.092 9.699 8.654
+ 12.597 12.503 12.288 12.072 12.202 13.007 14.406 15.744 16.168 15.294 13.617 12.236 12.049 13.067 14.416 15.027 14.446 13.094 11.839 11.304 11.486 11.936 12.210 12.151 11.830 11.342 10.740 10.169 9.928 10.283 11.125 11.845 11.688 10.374 8.460 7.059
+ 12.881 12.705 12.390 12.128 12.278 13.113 14.477 15.698 15.989 15.066 13.477 12.264 12.195 13.168 14.302 14.640 13.878 12.522 11.412 11.062 11.379 11.904 12.251 12.312 12.138 11.735 11.079 10.325 9.883 10.152 11.078 11.990 12.001 10.737 8.765 7.291
+ 12.976 12.646 12.149 11.820 12.051 13.015 14.410 15.521 15.668 14.758 13.433 12.628 12.840 13.730 14.396 14.123 12.948 11.588 10.819 10.891 11.451 11.973 12.211 12.243 12.170 11.866 11.118 10.022 9.134 9.110 10.060 11.264 11.622 10.560 8.607 7.081
+ 12.946 12.387 11.663 11.334 11.794 12.983 14.369 15.241 15.173 14.330 13.359 12.927 13.216 13.798 13.978 13.349 12.098 10.835 10.129 10.135 10.601 11.173 11.650 11.988 12.110 11.822 10.995 9.835 8.915 8.813 9.607 10.697 11.196 10.626 9.344 8.304
+ 12.809 12.010 11.081 10.835 11.607 13.007 14.243 14.715 14.421 13.858 13.561 13.665 13.845 13.641 12.860 11.733 10.718 10.160 10.092 10.318 10.637 10.995 11.416 11.833 12.007 11.664 10.759 9.610 8.764 8.643 9.236 10.090 10.622 10.531 9.999 9.526
+ 12.870 12.008 11.013 10.715 11.362 12.476 13.346 13.666 13.715 13.944 14.393 14.546 13.771 11.970 9.806 8.287 8.031 8.847 9.944 10.583 10.587 10.326 10.281 10.588 10.960 10.974 10.434 9.496 8.525 7.856 7.661 7.959 8.668 9.612 10.520 11.082
+ 12.174 11.726 11.163 10.866 10.956 11.265 11.565 11.809 12.115 12.510 12.726 12.318 11.058 9.251 7.646 6.946 7.291 8.169 8.827 8.854 8.461 8.240 8.623 9.508 10.340 10.542 9.941 8.860 7.867 7.412 7.621 8.334 9.269 10.171 10.863 11.235
+ 10.146 9.798 9.270 8.817 8.650 8.827 9.230 9.630 9.810 9.670 9.257 8.711 8.189 7.808 7.636 7.695 7.944 8.274 8.545 8.674 8.719 8.864 9.265 9.867 10.355 10.329 9.620 8.494 7.553 7.351 7.996 9.066 9.899 10.083 9.729 9.334
+ 9.573 9.110 8.360 7.598 7.086 6.979 7.283 7.865 8.512 8.989 9.118 8.844 8.275 7.654 7.259 7.254 7.580 7.981 8.160 7.991 7.628 7.411 7.621 8.244 8.943 9.277 9.023 8.359 7.763 7.670 8.162 8.904 9.404 9.382 8.971 8.587
+ 10.976 9.910 8.327 6.981 6.396 6.621 7.322 8.063 8.557 8.722 8.600 8.258 7.786 7.335 7.099 7.198 7.558 7.908 7.963 7.647 7.184 6.949 7.190 7.823 8.487 8.810 8.693 8.383 8.280 8.617 9.271 9.838 9.918 9.415 8.622 8.038
+ 11.136 9.902 8.332 7.475 7.689 8.430 8.800 8.342 7.362 6.561 6.372 6.630 6.838 6.706 6.423 6.408 6.845 7.461 7.789 7.635 7.279 7.218 7.687 8.426 8.907 8.812 8.324 7.966 8.166 8.917 9.811 10.366 10.358 9.908 9.339 8.966
+ 10.665 9.749 8.487 7.614 7.520 8.014 8.511 8.491 7.867 7.000 6.383 6.256 6.465 6.645 6.557 6.277 6.111 6.310 6.862 7.521 8.034 8.348 8.601 8.933 9.291 9.453 9.251 8.796 8.471 8.654 9.390 10.305 10.856 10.750 10.179 9.671
+ 10.038 9.745 9.153 8.333 7.485 6.873 6.658 6.775 6.979 7.031 6.876 6.653 6.544 6.597 6.695 6.683 6.545 6.442 6.598 7.117 7.900 8.704 9.294 9.548 9.466 9.131 8.685 8.323 8.261 8.632 9.373 10.213 10.809 10.978 10.813 10.606
+ 9.710 9.221 8.452 7.704 7.216 7.064 7.165 7.346 7.436 7.329 7.017 6.596 6.229 6.072 6.182 6.467 6.739 6.857 6.853 6.937 7.341 8.110 9.007 9.624 9.650 9.095 8.315 7.799 7.875 8.525 9.419 10.138 10.412 10.241 9.857 9.562
+ 10.080 8.978 7.523 6.608 6.587 7.075 7.366 7.056 6.338 5.732 5.583 5.780 5.939 5.815 5.535 5.436 5.704 6.192 6.587 6.756 6.904 7.382 8.305 9.367 10.028 9.942 9.255 8.513 8.269 8.698 9.504 10.168 10.308 9.901 9.251 8.782
+ 10.051 9.665 9.028 8.342 7.793 7.491 7.446 7.572 7.705 7.654 7.295 6.668 5.993 5.566 5.560 5.894 6.283 6.458 6.402 6.377 6.721 7.541 8.572 9.334 9.472 9.026 8.412 8.124 8.405 9.107 9.842 10.257 10.235 9.906 9.508 9.253
+ 10.181 9.611 8.688 7.775 7.242 7.309 7.937 8.811 9.477 9.571 9.014 8.070 7.192 6.751 6.810 7.102 7.235 6.991 6.495 6.133 6.277 7.002 8.013 8.839 9.135 8.896 8.428 8.120 8.193 8.599 9.105 9.473 9.597 9.524 9.375 9.268
+ 9.649 9.005 8.057 7.301 7.138 7.655 8.582 9.438 9.797 9.513 8.795 8.060 7.671 7.714 7.955 8.016 7.650 6.929 6.223 5.957 6.334 7.192 8.105 8.649 8.651 8.264 7.825 7.626 7.751 8.087 8.453 8.736 8.934 9.096 9.241 9.334
+ 8.293 7.769 7.077 6.716 7.025 7.993 9.270 10.360 10.883 10.744 10.156 9.509 9.154 9.211 9.499 9.638 9.281 8.364 7.185 6.265 6.033 6.551 7.472 8.256 8.521 8.258 7.792 7.517 7.629 8.026 8.428 8.598 8.472 8.161 7.836 7.640
+ 9.234 8.609 7.765 7.299 7.658 8.872 10.486 11.781 12.165 11.510 10.231 9.045 8.545 8.863 9.623 10.212 10.163 9.418 8.320 7.373 6.951 7.121 7.658 8.205 8.470 8.354 7.978 7.599 7.461 7.652 8.046 8.372 8.385 8.031 7.501 7.115
+ 7.685 7.583 7.503 7.650 8.211 9.231 10.512 11.641 12.171 11.876 10.918 9.793 9.067 9.042 9.582 10.202 10.369 9.825 8.732 7.560 6.808 6.730 7.219 7.900 8.358 8.366 7.987 7.506 7.240 7.346 7.730 8.119 8.246 8.028 7.620 7.307
+ 9.217 8.402 7.395 6.988 7.588 8.971 10.493 11.540 11.856 11.555 10.916 10.183 9.524 9.091 9.000 9.227 9.510 9.445 8.769 7.620 6.533 6.104 6.570 7.602 8.525 8.776 8.288 7.501 7.009 7.134 7.715 8.255 8.294 7.728 6.874 6.255
+ 8.554 7.932 7.210 7.040 7.735 9.065 10.444 11.327 11.504 11.107 10.434 9.756 9.247 9.011 9.065 9.292 9.421 9.152 8.390 7.384 6.637 6.578 7.240 8.204 8.868 8.851 8.232 7.455 6.995 7.035 7.387 7.668 7.586 7.118 6.503 6.079
+ 9.075 8.373 7.574 7.420 8.237 9.699 11.079 11.742 11.511 10.673 9.714 9.024 8.769 8.921 9.327 9.731 9.826 9.376 8.407 7.281 6.541 6.570 7.311 8.270 8.846 8.729 8.093 7.427 7.167 7.394 7.825 8.045 7.801 7.147 6.385 5.884
+ 7.816 7.764 7.809 8.162 8.960 10.140 11.392 12.246 12.289 11.401 9.894 8.414 7.630 7.856 8.842 9.895 10.284 9.698 8.440 7.226 6.708 7.055 7.878 8.528 8.560 8.010 7.315 6.961 7.137 7.637 8.043 8.024 7.521 6.736 5.983 5.535
+ 7.881 7.685 7.507 7.651 8.330 9.504 10.832 11.797 11.952 11.173 9.768 8.356 7.553 7.637 8.392 9.231 9.537 9.024 7.900 6.730 6.090 6.240 6.991 7.858 8.364 8.310 7.849 7.337 7.085 7.172 7.422 7.544 7.334 6.803 6.175 5.754
+ 5.879 6.188 6.672 7.210 7.822 8.627 9.627 10.549 10.906 10.337 8.951 7.396 6.511 6.785 7.991 9.303 9.825 9.180 7.734 6.323 5.680 5.989 6.850 7.635 7.936 7.772 7.462 7.309 7.370 7.470 7.403 7.116 6.731 6.424 6.272 6.232
+ 6.952 6.819 6.600 6.430 6.521 7.055 8.015 9.096 9.820 9.818 9.100 8.091 7.380 7.333 7.847 8.416 8.490 7.850 6.759 5.785 5.423 5.796 6.609 7.369 7.694 7.512 7.045 6.619 6.454 6.558 6.768 6.883 6.785 6.500 6.162 5.939
+ 7.416 6.872 6.248 6.134 6.811 8.069 9.355 10.125 10.124 9.462 8.497 7.657 7.289 7.527 8.209 8.891 9.039 8.360 7.050 5.749 5.157 5.557 6.604 7.573 7.873 7.445 6.733 6.286 6.332 6.671 6.919 6.851 6.540 6.218 6.040 5.990
+ 8.432 7.945 7.310 7.004 7.350 8.308 9.478 10.309 10.417 9.803 8.854 8.111 7.939 8.315 8.858 9.077 8.690 7.789 6.774 6.095 5.978 6.323 6.806 7.106 7.099 6.886 6.681 6.635 6.749 6.899 6.951 6.850 6.645 6.429 6.273 6.197
+ 7.767 7.031 6.119 5.761 6.347 7.656 9.003 9.695 9.469 8.622 7.765 7.397 7.611 8.114 8.491 8.494 8.156 7.681 7.253 6.943 6.742 6.656 6.720 6.926 7.150 7.197 6.951 6.521 6.205 6.275 6.742 7.298 7.529 7.236 6.613 6.115
+ 7.434 7.568 7.717 7.789 7.846 8.036 8.396 8.732 8.745 8.318 7.688 7.305 7.470 8.068 8.637 8.736 8.278 7.555 6.960 6.678 6.620 6.618 6.631 6.746 6.994 7.221 7.184 6.822 6.390 6.287 6.685 7.317 7.649 7.342 6.574 5.935
+ 8.009 7.981 7.964 8.045 8.322 8.809 9.340 9.604 9.342 8.571 7.652 7.083 7.159 7.742 8.347 8.493 8.043 7.279 6.669 6.527 6.839 7.332 7.713 7.841 7.742 7.519 7.272 7.088 7.051 7.210 7.494 7.699 7.595 7.115 6.457 5.984
+ 7.777 7.756 7.849 8.195 8.775 9.375 9.684 9.490 8.819 7.929 7.168 6.806 6.909 7.343 7.847 8.151 8.086 7.662 7.076 6.638 6.626 7.119 7.916 8.613 8.834 8.463 7.749 7.174 7.154 7.758 8.638 9.228 9.093 8.222 7.057 6.244
+ 7.279 7.295 7.568 8.273 9.216 9.859 9.691 8.634 7.134 5.859 5.251 5.316 5.754 6.276 6.770 7.229 7.570 7.613 7.276 6.788 6.651 7.292 8.663 10.162 10.985 10.697 9.581 8.468 8.168 8.901 10.142 10.975 10.704 9.318 7.507 6.255
+ 6.905 6.458 6.339 7.315 9.302 11.260 11.950 10.903 8.773 6.788 5.832 5.915 6.415 6.745 6.807 6.859 7.063 7.244 7.111 6.697 6.504 7.127 8.668 10.495 11.626 11.459 10.253 8.954 8.499 9.143 10.319 11.065 10.704 9.270 7.471 6.249
+ 7.966 7.531 7.460 8.495 10.432 12.089 12.216 10.558 8.110 6.342 6.068 6.924 7.845 8.030 7.516 6.926 6.756 6.930 7.020 6.846 6.777 7.410 8.917 10.717 11.829 11.644 10.439 9.191 8.847 9.626 10.898 11.672 11.288 9.826 8.019 6.802
+ 7.955 7.949 8.326 9.417 11.020 12.371 12.642 11.569 9.681 7.942 7.094 7.207 7.773 8.177 8.140 7.797 7.441 7.239 7.185 7.271 7.637 8.482 9.801 11.209 12.089 12.004 11.070 9.947 9.417 9.827 10.810 11.510 11.175 9.704 7.767 6.414
+ 8.987 8.616 8.542 9.416 11.133 12.751 13.164 11.977 9.828 7.897 7.046 7.290 7.980 8.434 8.426 8.175 7.967 7.864 7.767 7.713 7.999 8.949 10.516 12.125 12.992 12.700 11.562 10.440 10.141 10.831 11.916 12.456 11.804 10.041 7.944 6.542
+ 7.959 7.713 7.838 8.923 10.840 12.669 13.331 12.412 10.470 8.593 7.603 7.570 7.971 8.244 8.216 8.071 8.014 8.032 8.001 7.959 8.213 9.078 10.495 11.904 12.572 12.157 11.024 10.037 9.952 10.868 12.143 12.830 12.300 10.653 8.658 7.318
+ 7.907 8.152 8.845 10.106 11.669 12.907 13.192 12.341 10.762 9.192 8.225 7.990 8.193 8.428 8.463 8.306 8.070 7.835 7.651 7.640 8.016 8.932 10.259 11.520 12.117 11.748 10.687 9.682 9.484 10.321 11.685 12.628 12.377 10.873 8.858 7.446
--- /dev/null
+ 6.527 -1.576 0.212 0.163 -0.132 0.155 0.062 0.060 -0.166 -0.093 -0.090 -0.043 0.028
+ 6.580 -1.617 0.267 0.095 -0.232 0.101 -0.184 -0.056 -0.243 -0.201 -0.064 -0.001 -0.118
+ 6.787 -1.367 0.280 0.030 -0.339 -0.004 -0.209 0.050 -0.200 -0.107 -0.097 -0.035 -0.197
+ 6.833 -1.400 0.087 0.101 -0.386 0.172 -0.168 -0.191 -0.145 -0.007 -0.139 -0.060 0.011
+ 6.604 -1.366 0.049 0.178 -0.321 -0.034 -0.122 -0.117 -0.093 0.102 -0.214 -0.072 0.057
+ 6.752 -1.445 0.071 0.264 -0.229 -0.181 -0.077 -0.108 -0.209 0.069 -0.254 -0.209 -0.028
+ 6.551 -1.400 0.037 0.175 -0.225 -0.126 0.072 -0.003 -0.294 0.024 -0.273 -0.017 -0.029
+ 6.268 -1.333 0.095 0.301 0.026 -0.069 -0.129 -0.171 -0.173 -0.007 -0.182 -0.162 -0.102
+ 6.378 -1.177 0.009 0.228 -0.127 -0.070 -0.317 -0.114 -0.123 0.092 -0.095 -0.170 -0.073
+ 6.334 -1.275 -0.197 0.101 0.078 -0.074 -0.254 -0.120 -0.065 0.139 -0.074 -0.048 0.008
+ 6.125 -1.225 -0.070 -0.042 -0.091 -0.025 -0.122 -0.214 -0.278 -0.101 -0.136 -0.123 -0.044
+ 5.942 -0.978 0.098 0.038 -0.091 -0.141 -0.171 0.010 0.001 0.093 0.014 -0.085 -0.038
+ 6.246 -0.575 0.512 0.362 -0.002 0.096 0.085 -0.153 -0.096 -0.083 -0.054 -0.007 -0.156
+ 5.614 -0.336 0.285 0.198 -0.020 0.020 0.026 0.021 0.018 0.021 0.004 -0.111 -0.222
+ 5.514 -0.452 0.211 0.030 -0.064 0.021 -0.043 -0.032 0.054 0.118 -0.075 -0.026 -0.202
+ 5.175 -0.549 0.098 0.068 -0.024 -0.038 -0.018 -0.150 -0.170 -0.038 -0.170 0.033 0.055
+ 4.895 -0.130 0.032 0.116 0.132 -0.039 -0.026 -0.092 -0.166 0.214 -0.042 -0.147 -0.124
+ 4.424 -0.038 0.045 0.170 0.032 -0.175 -0.314 -0.100 -0.157 0.106 -0.040 -0.164 -0.066
+ 3.939 0.097 -0.248 -0.008 0.015 -0.029 -0.222 -0.119 -0.110 0.150 0.098 -0.034 0.021
+ 3.849 0.105 -0.269 0.013 -0.062 -0.013 -0.251 -0.244 -0.233 -0.108 0.072 0.044 0.046
+ 4.145 0.262 -0.109 -0.014 -0.222 -0.001 -0.152 -0.178 -0.151 -0.020 -0.101 -0.123 -0.113
+ 4.230 0.273 0.040 -0.017 0.029 -0.053 0.003 -0.123 -0.081 -0.140 -0.154 -0.192 -0.260
+ 4.000 0.417 0.057 0.206 0.011 -0.019 -0.297 -0.288 -0.173 -0.044 -0.098 -0.226 0.020
+ 4.173 0.361 0.156 0.078 0.105 -0.123 -0.172 -0.406 -0.208 -0.038 0.040 0.004 0.076
+ 7.068 -0.518 0.568 0.066 -0.482 0.103 -0.074 -0.271 -0.027 -0.074 -0.134 0.030 -0.173
+ 9.454 -0.227 0.593 0.302 -0.427 -0.153 -0.260 -0.208 -0.062 -0.302 -0.196 0.076 -0.287
+ 10.594 0.197 0.328 0.570 -0.235 -0.480 -0.531 -0.003 -0.256 -0.318 -0.225 -0.048 -0.306
+ 12.189 -0.192 0.303 0.566 -0.308 -0.556 -0.614 -0.056 -0.362 -0.315 -0.271 0.042 -0.256
+ 13.377 -0.265 0.159 0.461 -0.377 -0.571 -0.597 0.003 -0.469 -0.268 -0.343 0.133 -0.288
+ 13.760 0.015 -0.072 0.453 -0.386 -0.609 -0.711 0.037 -0.530 -0.191 -0.385 0.157 -0.249
+ 14.185 0.091 -0.206 0.450 -0.436 -0.700 -0.730 0.009 -0.565 -0.071 -0.394 0.210 -0.213
+ 14.378 0.113 -0.290 0.420 -0.431 -0.819 -0.712 0.044 -0.584 0.018 -0.387 0.235 -0.179
+ 14.016 0.468 -0.549 0.433 -0.415 -0.788 -0.774 0.163 -0.605 0.025 -0.276 0.066 -0.040
+ 14.132 0.576 -0.706 0.340 -0.337 -0.784 -0.781 0.064 -0.441 0.006 -0.198 -0.055 0.032
+ 14.319 0.637 -0.726 0.197 -0.352 -0.568 -0.962 0.037 -0.492 0.174 -0.233 -0.131 0.007
+ 14.131 0.726 -0.589 -0.049 -0.335 -0.392 -0.815 -0.154 -0.672 0.294 -0.139 -0.296 -0.057
+ 13.575 0.980 -0.518 -0.145 -0.465 -0.244 -0.520 -0.262 -0.968 0.211 -0.036 -0.226 -0.129
+ 13.009 1.092 -0.339 -0.249 -0.467 -0.304 -0.327 -0.239 -1.013 0.053 -0.044 -0.151 -0.061
+ 12.814 1.204 -0.443 -0.215 -0.482 -0.216 -0.385 -0.132 -1.119 0.074 -0.137 -0.053 -0.182
+ 12.960 1.093 -0.399 -0.174 -0.407 -0.230 -0.421 -0.185 -1.105 0.142 -0.150 -0.093 -0.283
+ 13.230 0.902 -0.401 -0.141 -0.223 -0.252 -0.485 -0.272 -0.984 0.209 -0.133 -0.221 -0.292
+ 13.508 0.776 -0.563 0.027 -0.061 -0.372 -0.665 -0.239 -0.787 0.213 -0.228 -0.339 -0.197
+ 13.814 0.426 -0.512 0.193 0.094 -0.613 -0.737 -0.085 -0.640 0.116 -0.382 -0.233 -0.100
+ 14.000 0.195 -0.498 0.445 -0.012 -0.827 -0.669 0.099 -0.700 -0.014 -0.330 -0.113 -0.086
+ 14.293 -0.074 -0.376 0.566 -0.210 -0.917 -0.531 0.125 -0.770 -0.008 -0.287 -0.059 -0.109
+ 14.128 -0.094 -0.313 0.611 -0.375 -0.869 -0.491 0.066 -0.729 -0.005 -0.291 0.021 -0.119
+ 14.074 -0.145 -0.189 0.514 -0.457 -0.826 -0.436 -0.063 -0.559 -0.064 -0.263 0.085 -0.159
+ 14.085 0.032 -0.328 0.440 -0.499 -0.804 -0.465 -0.041 -0.460 -0.120 -0.215 0.134 -0.152
+ 13.946 0.158 -0.383 0.321 -0.547 -0.699 -0.607 0.081 -0.419 -0.121 -0.194 0.198 -0.241
+ 13.902 0.222 -0.457 0.219 -0.549 -0.652 -0.654 0.144 -0.382 -0.057 -0.269 0.254 -0.265
+ 13.927 0.312 -0.595 0.181 -0.554 -0.547 -0.717 0.093 -0.251 -0.113 -0.233 0.165 -0.182
+ 13.848 0.440 -0.698 0.088 -0.473 -0.528 -0.766 0.022 -0.203 -0.061 -0.289 0.142 -0.122
+ 13.671 0.429 -0.567 -0.132 -0.273 -0.574 -0.757 -0.110 -0.175 0.027 -0.369 0.108 -0.050
+ 13.321 0.282 -0.354 -0.267 -0.203 -0.553 -0.555 -0.489 -0.047 0.124 -0.464 0.029 0.028
+ 13.222 0.088 -0.128 -0.297 -0.402 -0.135 -0.604 -0.629 -0.048 0.139 -0.307 -0.061 -0.114
+ 13.318 0.361 -0.024 -0.383 -0.632 0.261 -0.864 -0.492 -0.175 0.136 -0.269 0.128 -0.394
+ 13.509 0.506 0.011 -0.533 -0.810 0.290 -0.814 -0.360 -0.419 0.291 -0.286 0.286 -0.435
+ 13.473 0.481 0.188 -0.727 -0.879 0.224 -0.753 -0.204 -0.557 0.239 -0.276 0.467 -0.456
+ 13.061 0.688 0.283 -0.867 -0.916 0.140 -0.650 -0.042 -0.658 0.043 -0.249 0.498 -0.407
+ 12.807 0.670 0.473 -0.902 -0.966 0.103 -0.596 0.052 -0.699 0.016 -0.358 0.398 -0.260
+ 12.435 0.810 0.452 -0.701 -1.162 0.066 -0.430 -0.085 -0.521 -0.035 -0.482 0.411 -0.308
+ 11.783 0.872 0.644 -0.626 -1.193 0.002 -0.431 -0.080 -0.377 -0.072 -0.657 0.329 -0.278
+ 11.266 0.871 0.799 -0.588 -1.177 -0.010 -0.445 -0.018 -0.356 -0.087 -0.759 0.249 -0.301
+ 11.068 0.825 0.921 -0.594 -1.104 -0.080 -0.431 0.003 -0.360 -0.154 -0.758 0.170 -0.364
+ 10.991 0.794 1.013 -0.584 -1.091 -0.126 -0.451 -0.003 -0.354 -0.128 -0.705 0.124 -0.462
+ 11.031 0.716 1.035 -0.597 -1.116 -0.131 -0.500 -0.067 -0.273 -0.060 -0.625 0.001 -0.476
+ 11.417 0.621 0.932 -0.582 -1.119 -0.178 -0.524 -0.057 -0.203 -0.063 -0.640 0.008 -0.343
+ 12.427 0.378 0.817 -0.769 -1.205 -0.132 -0.443 -0.021 -0.353 0.020 -0.494 0.013 -0.140
+ 13.176 0.323 0.412 -0.930 -1.227 -0.046 -0.403 0.066 -0.341 -0.105 -0.357 0.200 -0.073
+ 13.232 0.294 0.339 -0.990 -1.243 0.102 -0.468 0.050 -0.309 -0.024 -0.295 0.256 -0.094
+ 13.323 0.252 0.255 -1.041 -1.249 0.199 -0.501 0.147 -0.300 0.020 -0.225 0.222 -0.174
+ 13.446 0.273 0.132 -1.090 -1.193 0.274 -0.552 0.233 -0.348 0.078 -0.184 0.211 -0.270
+ 13.566 0.337 -0.012 -1.098 -1.119 0.280 -0.477 0.190 -0.344 0.104 -0.152 0.165 -0.316
+ 13.716 0.251 -0.063 -1.068 -1.043 0.278 -0.430 0.133 -0.304 0.097 -0.067 0.047 -0.370
+ 13.443 0.471 -0.236 -0.990 -0.952 0.252 -0.411 0.038 -0.254 0.057 0.048 -0.010 -0.373
+ 13.269 0.537 -0.385 -0.847 -0.834 0.209 -0.394 -0.011 -0.228 0.027 0.125 -0.066 -0.381
+ 12.757 0.534 -0.347 -0.719 -0.776 0.156 -0.404 -0.024 -0.244 0.046 0.148 0.003 -0.445
+ 12.691 0.456 -0.356 -0.612 -0.703 0.084 -0.305 -0.253 -0.111 0.073 0.040 0.107 -0.552
+ 12.648 0.409 -0.479 -0.283 -0.694 0.025 -0.386 -0.335 -0.073 0.229 -0.097 0.086 -0.576
+ 12.394 0.423 -0.637 0.077 -0.518 -0.282 -0.510 -0.189 0.028 0.177 -0.256 0.123 -0.461
+ 11.791 0.449 -0.605 0.361 -0.430 -0.418 -0.622 -0.005 0.058 0.023 -0.355 0.282 -0.518
+ 11.195 0.313 -0.265 0.536 -0.454 -0.498 -0.549 0.100 0.148 -0.269 -0.280 0.349 -0.569
+ 10.704 0.176 0.114 0.199 -0.132 -0.506 -0.416 0.131 0.038 -0.342 -0.106 -0.078 -0.404
+ 9.875 0.420 0.326 0.087 0.020 -0.447 -0.418 0.261 -0.356 -0.261 0.099 -0.356 -0.292
+ 8.935 0.715 0.237 0.170 0.106 -0.371 -0.464 0.321 -0.442 -0.101 -0.136 -0.345 -0.257
+ 7.719 0.828 0.622 0.204 -0.009 -0.387 -0.324 0.087 -0.207 -0.149 -0.366 -0.160 -0.170
+ 7.406 0.627 0.742 -0.123 0.168 -0.478 0.071 -0.171 -0.009 -0.117 -0.429 -0.195 -0.090
+ 8.612 -0.126 0.533 -0.142 0.169 -0.265 0.129 -0.086 -0.024 -0.270 -0.224 -0.069 -0.179
+ 9.818 -0.292 0.134 0.080 -0.077 -0.182 -0.055 -0.034 -0.072 -0.160 -0.265 0.062 -0.185
+ 9.895 -0.311 0.268 0.210 0.077 -0.419 -0.238 -0.206 0.076 -0.168 -0.364 0.009 -0.105
+ 10.841 -0.049 0.223 0.126 -0.033 -0.448 -0.442 -0.329 -0.056 -0.053 -0.447 0.014 -0.114
+ 11.381 -0.048 0.069 0.073 0.097 -0.444 -0.636 -0.469 -0.104 -0.080 -0.497 -0.025 -0.019
+ 11.139 0.120 0.125 -0.070 -0.031 -0.302 -0.566 -0.495 -0.108 -0.049 -0.448 -0.090 -0.054
+ 10.764 -0.162 0.386 -0.013 0.000 -0.294 -0.556 -0.511 -0.034 -0.174 -0.297 -0.213 -0.001
+ 10.827 -0.993 0.581 -0.042 0.172 -0.133 -0.162 -0.060 0.031 -0.140 -0.304 -0.178 -0.041
+ 10.619 -1.211 0.666 -0.024 0.125 -0.253 -0.037 -0.040 -0.020 -0.083 -0.338 -0.229 -0.175
+ 10.766 -1.313 0.644 -0.033 0.365 -0.075 0.041 -0.018 -0.060 -0.091 -0.292 -0.052 -0.265
+ 10.855 -1.277 0.577 -0.097 0.494 -0.249 -0.261 -0.101 -0.080 -0.255 -0.201 -0.045 -0.163
+ 11.207 -1.251 0.536 -0.160 0.398 -0.322 -0.129 0.003 -0.105 -0.221 -0.203 -0.111 -0.142
+ 11.529 -1.056 0.595 -0.083 0.384 -0.329 -0.026 -0.063 -0.019 -0.282 -0.221 0.061 -0.105
+ 11.263 -1.528 0.452 -0.138 0.324 -0.268 -0.004 -0.054 -0.121 -0.394 -0.233 -0.039 -0.127
+ 11.468 -1.644 0.387 0.003 0.358 -0.190 -0.078 -0.090 -0.156 -0.108 -0.169 -0.029 -0.046
+ 10.859 -1.522 0.104 0.203 0.295 -0.591 0.033 0.027 -0.182 -0.279 0.051 -0.024 -0.071
+ 7.399 -1.040 -0.014 0.330 0.622 -0.541 -0.018 0.134 -0.105 -0.346 0.104 0.060 -0.239
+ 4.866 -0.548 0.099 -0.173 0.379 -0.225 0.120 -0.000 -0.115 -0.022 0.012 -0.062 -0.191
+ 4.760 -0.447 0.163 -0.280 0.182 -0.481 -0.019 -0.147 -0.201 -0.189 -0.056 0.045 0.007
+ 9.003 -0.451 -0.045 0.373 -0.654 -0.571 -0.147 -0.138 -0.101 -0.003 -0.163 -0.100 -0.079
+ 12.107 -0.746 -0.282 -0.041 -0.724 -0.550 -0.057 -0.245 -0.220 -0.025 -0.189 0.009 -0.036
+ 12.612 -0.523 -0.082 0.401 -0.351 -0.707 -0.301 -0.237 -0.254 -0.218 -0.094 -0.005 -0.160
+ 13.774 -0.172 -0.485 0.317 -0.451 -0.712 -0.651 -0.093 -0.198 -0.093 -0.236 0.244 -0.321
+ 14.097 -0.142 -0.631 0.094 -0.515 -0.672 -0.732 0.010 -0.165 0.104 -0.321 0.276 -0.315
+ 14.146 -0.083 -0.704 -0.105 -0.601 -0.638 -0.699 0.072 -0.046 0.196 -0.273 0.043 -0.223
+ 14.273 -0.159 -0.688 -0.189 -0.566 -0.508 -0.761 0.126 -0.053 0.246 -0.315 -0.038 -0.240
+ 14.437 -0.040 -0.761 -0.223 -0.603 -0.398 -0.765 0.205 -0.130 0.264 -0.346 -0.165 -0.223
+ 14.378 -0.092 -0.719 -0.181 -0.671 -0.290 -0.869 0.188 -0.187 0.328 -0.405 -0.042 -0.302
+ 14.160 0.013 -0.725 -0.177 -0.680 -0.315 -0.913 0.185 -0.126 0.295 -0.424 0.018 -0.291
+ 13.665 0.079 -0.683 -0.203 -0.648 -0.444 -0.951 0.142 -0.018 0.262 -0.385 0.094 -0.236
+ 12.462 0.396 -0.529 -0.100 -0.493 -0.570 -0.812 -0.034 0.164 -0.067 -0.176 0.221 -0.128
+ 11.095 -0.243 -0.057 0.182 -0.541 -0.396 -0.368 0.047 0.142 -0.147 -0.353 0.002 0.063
+ 11.625 -1.083 0.450 0.685 -0.330 -0.111 -0.313 -0.200 0.132 -0.120 -0.238 -0.015 -0.075
+ 12.127 -1.375 0.614 0.761 -0.319 -0.037 0.035 -0.179 0.005 -0.094 -0.393 -0.065 -0.156
+ 12.332 -1.614 0.649 0.659 -0.412 -0.027 0.022 -0.145 -0.093 -0.032 -0.275 -0.108 -0.179
+ 12.348 -2.053 0.287 0.509 -0.533 -0.158 0.051 -0.061 0.079 0.043 -0.315 -0.140 -0.183
+ 12.363 -2.284 0.303 0.799 -0.438 -0.209 -0.168 -0.019 0.062 -0.086 -0.196 -0.049 -0.101
+ 12.124 -2.227 0.167 0.564 -0.558 -0.210 -0.098 0.069 0.141 0.034 -0.054 -0.166 -0.026
+ 12.496 -1.767 0.330 0.879 -0.144 -0.098 -0.049 -0.132 -0.023 -0.047 -0.231 -0.183 0.054
+ 11.892 -1.213 0.346 0.812 -0.148 -0.355 -0.004 0.009 0.019 -0.014 -0.310 -0.114 0.057
+ 11.102 -1.048 0.308 0.695 0.019 -0.157 -0.082 0.003 0.044 -0.135 -0.208 -0.040 -0.013
+ 11.998 0.326 -0.408 0.208 -0.422 -0.335 -0.273 -0.069 0.039 0.096 -0.180 -0.069 -0.030
+ 12.207 0.709 -0.540 0.019 -0.360 -0.332 -0.431 -0.111 0.020 0.092 -0.444 0.182 -0.279
+ 12.091 0.492 -0.500 0.100 -0.447 -0.301 -0.466 -0.219 0.087 0.190 -0.399 0.136 -0.224
+ 11.442 0.457 -0.433 0.205 -0.384 -0.306 -0.310 -0.421 0.086 0.254 -0.395 0.035 -0.263
+ 11.004 0.015 0.111 0.295 -0.332 -0.341 -0.138 -0.310 -0.084 0.215 -0.474 -0.008 -0.196
+ 11.169 -0.158 0.157 0.242 -0.170 -0.403 -0.140 -0.217 -0.174 0.325 -0.536 0.029 -0.326
+ 11.282 0.088 -0.387 0.061 0.049 -0.144 -0.564 -0.270 -0.151 0.374 -0.255 0.032 -0.221
+ 12.184 0.235 -0.538 -0.087 -0.100 -0.334 -0.644 -0.121 -0.122 0.299 -0.205 -0.049 -0.251
+ 12.222 0.260 -0.570 -0.091 -0.272 -0.345 -0.735 -0.086 -0.074 0.417 -0.282 0.015 -0.343
+ 12.563 0.264 -0.713 -0.056 -0.458 -0.328 -0.708 -0.126 0.024 0.384 -0.216 -0.005 -0.286
+ 12.558 0.443 -0.703 -0.121 -0.344 -0.459 -0.471 -0.318 -0.120 0.343 -0.268 0.008 -0.232
+ 11.133 0.722 -0.475 -0.305 -0.183 -0.410 -0.361 -0.510 -0.285 0.234 -0.116 -0.208 -0.269
+ 9.966 0.908 -0.464 -0.158 -0.165 -0.351 -0.316 -0.530 -0.449 0.210 0.006 -0.218 -0.285
+ 6.511 0.764 -0.019 -0.009 -0.015 -0.062 -0.213 -0.159 -0.103 0.229 -0.058 -0.275 -0.254
+ 6.005 0.772 -0.044 0.064 -0.176 0.024 -0.175 -0.224 0.069 0.183 -0.007 -0.279 -0.255
+ 5.644 0.899 0.246 0.175 -0.237 -0.270 -0.371 -0.340 -0.000 0.101 -0.084 -0.186 -0.092
+ 5.558 0.597 0.367 0.171 -0.195 -0.345 -0.295 -0.205 -0.067 0.222 -0.199 -0.155 -0.118
+ 8.199 0.001 0.321 -0.178 -0.128 -0.370 -0.359 -0.103 -0.185 -0.043 -0.355 -0.145 -0.189
+ 8.766 0.111 -0.148 -0.094 -0.027 -0.264 -0.166 -0.089 0.081 0.164 -0.070 -0.203 -0.041
+ 12.074 0.000 -0.661 -0.012 -0.394 -0.400 -0.437 -0.172 -0.042 0.119 -0.165 -0.143 -0.007
+ 13.145 -0.034 -0.662 -0.098 -0.572 -0.558 -0.579 -0.128 -0.003 0.310 -0.223 -0.100 0.001
+ 13.351 -0.007 -0.782 -0.020 -0.602 -0.581 -0.502 -0.104 0.073 0.217 -0.311 -0.081 -0.007
+ 13.622 -0.133 -0.854 -0.005 -0.648 -0.526 -0.533 -0.047 0.074 0.204 -0.347 -0.046 -0.098
+ 13.418 -0.098 -0.892 -0.049 -0.710 -0.422 -0.639 0.111 -0.063 0.336 -0.493 0.046 -0.131
+ 13.653 -0.206 -0.873 -0.129 -0.708 -0.401 -0.680 0.207 -0.106 0.435 -0.636 0.003 -0.190
+ 13.786 -0.049 -0.940 -0.169 -0.612 -0.421 -0.583 0.182 -0.142 0.425 -0.603 -0.116 -0.147
+ 13.769 0.004 -0.991 -0.287 -0.577 -0.349 -0.522 0.192 -0.247 0.420 -0.570 -0.188 -0.123
+ 13.393 0.038 -1.072 -0.435 -0.580 -0.332 -0.466 0.213 -0.223 0.462 -0.652 -0.232 -0.123
+ 13.445 -0.002 -0.975 -0.431 -0.661 -0.277 -0.528 0.238 -0.253 0.557 -0.629 -0.251 -0.143
+ 13.744 0.037 -0.976 -0.422 -0.681 -0.182 -0.553 0.220 -0.294 0.537 -0.580 -0.305 -0.135
+ 13.752 -0.083 -0.888 -0.530 -0.651 -0.197 -0.484 0.218 -0.334 0.484 -0.505 -0.347 -0.123
+ 13.300 -0.004 -0.820 -0.603 -0.755 -0.119 -0.535 0.231 -0.350 0.616 -0.507 -0.424 -0.136
+ 13.696 -0.039 -0.734 -0.594 -0.742 -0.083 -0.541 0.167 -0.408 0.611 -0.449 -0.379 -0.143
+ 13.688 0.045 -0.610 -0.685 -0.681 -0.078 -0.590 0.083 -0.467 0.563 -0.328 -0.312 -0.205
+ 13.030 0.163 -0.422 -0.806 -0.677 -0.117 -0.593 -0.020 -0.361 0.515 -0.242 -0.320 -0.208
+ 12.805 0.193 -0.398 -0.867 -0.696 -0.164 -0.565 -0.085 -0.360 0.550 -0.215 -0.221 -0.223
+ 12.574 0.527 -0.422 -0.803 -0.736 -0.223 -0.481 -0.359 -0.351 0.544 -0.276 0.014 -0.192
+ 12.487 0.279 -0.194 -0.749 -0.608 -0.210 -0.481 -0.507 -0.429 0.501 -0.394 0.170 -0.218
+ 11.090 0.251 0.011 -0.808 -0.512 -0.249 -0.441 -0.698 -0.409 0.663 -0.304 0.251 -0.126
+ 11.251 0.371 0.060 -0.654 -0.326 -0.215 -0.343 -0.758 -0.492 0.280 -0.390 0.127 -0.209
+ 7.809 0.619 0.267 -0.567 -0.392 -0.224 -0.378 -0.713 -0.376 0.494 -0.544 0.135 -0.254
+ 6.426 0.810 0.139 -0.174 -0.377 -0.234 -0.255 -0.062 0.098 0.344 -0.138 -0.130 -0.138
+ 6.248 0.884 0.194 -0.076 -0.404 -0.184 -0.336 -0.034 -0.004 0.393 -0.119 -0.115 -0.021
+ 5.638 0.677 -0.093 -0.358 -0.553 -0.278 -0.317 -0.091 -0.011 0.446 -0.038 -0.126 -0.090
+ 5.239 0.604 -0.117 -0.269 -0.449 -0.187 -0.369 0.044 -0.008 0.199 -0.044 -0.280 -0.158
+ 4.960 0.496 -0.017 -0.200 -0.551 -0.161 -0.101 0.060 0.055 0.382 0.059 -0.086 -0.069
+ 6.617 0.047 -0.288 0.123 -0.577 -0.462 0.012 -0.012 -0.099 -0.093 -0.201 0.076 -0.027
+ 5.999 0.139 -0.295 -0.052 -0.645 -0.348 0.040 -0.164 -0.138 -0.094 -0.217 0.057 -0.046
+ 4.453 0.368 -0.094 -0.038 -0.535 -0.202 -0.140 -0.122 -0.100 0.215 0.070 0.133 -0.081
+ 4.253 0.341 -0.357 0.015 -0.292 -0.165 -0.106 -0.125 0.062 0.311 0.011 0.016 0.037
+ 4.338 0.374 -0.219 -0.125 -0.335 -0.165 -0.122 -0.249 -0.027 0.121 0.130 0.211 -0.079
+ 4.038 0.117 -0.302 -0.166 -0.311 -0.095 -0.013 -0.162 -0.183 0.131 0.137 0.028 0.052
+ 4.005 0.303 -0.339 -0.130 -0.183 -0.052 -0.111 -0.021 -0.067 0.090 0.048 0.109 -0.036
+ 3.883 0.253 -0.213 0.179 -0.094 -0.112 -0.258 -0.182 -0.125 0.238 0.165 0.101 -0.018
+ 3.748 0.203 -0.263 -0.017 -0.197 -0.126 -0.205 -0.236 -0.186 0.195 0.068 0.038 -0.025
+ 3.788 0.249 -0.293 0.027 -0.304 -0.101 -0.083 -0.180 -0.178 -0.076 -0.116 0.133 0.054
+ 3.804 0.307 -0.223 0.066 -0.112 0.115 -0.246 -0.253 -0.111 0.068 -0.044 0.079 -0.203
+ 3.777 0.447 -0.175 0.056 -0.142 -0.114 -0.155 -0.120 -0.165 0.100 0.051 0.054 -0.104
+ 3.657 0.365 -0.121 0.193 -0.096 -0.138 -0.206 -0.236 -0.084 0.121 0.027 -0.141 -0.041
+ 3.873 0.518 0.092 0.193 -0.159 -0.026 -0.022 -0.131 -0.108 -0.021 -0.007 0.093 0.060
+ 3.813 0.633 0.021 -0.058 -0.159 0.176 -0.105 -0.220 -0.199 -0.066 0.088 0.065 -0.142
+ 4.497 0.388 0.128 -0.155 -0.085 -0.162 0.039 -0.327 -0.063 -0.079 -0.231 -0.180 0.019
+ 6.254 0.517 0.428 -0.139 -0.010 -0.316 0.152 -0.331 0.025 -0.074 -0.508 -0.356 0.037
+ 5.443 0.172 0.251 0.242 -0.028 -0.217 0.082 0.106 -0.151 -0.060 -0.250 -0.154 -0.286
+ 5.412 0.072 0.159 0.151 -0.100 -0.223 0.044 -0.074 -0.135 -0.108 -0.212 -0.041 -0.337
+ 4.915 -0.019 -0.166 -0.302 -0.376 -0.266 0.144 -0.183 -0.145 0.146 -0.209 -0.095 -0.148
+ 5.157 0.321 -0.265 -0.135 -0.328 -0.246 0.153 -0.025 -0.182 0.008 -0.399 -0.059 -0.013
+ 5.292 0.214 -0.355 -0.162 -0.383 -0.256 0.123 0.015 -0.142 -0.163 -0.347 -0.209 0.018
+ 5.599 0.151 -0.491 -0.098 -0.238 -0.256 -0.055 -0.106 -0.148 -0.165 -0.517 -0.141 0.115
+ 5.552 -0.266 -0.521 0.066 -0.198 -0.177 -0.074 -0.190 -0.110 -0.092 -0.289 0.022 0.072
+ 5.827 -0.799 -0.145 0.380 -0.075 -0.077 -0.069 -0.330 -0.209 -0.054 -0.170 0.054 0.140
+ 5.780 -0.486 -0.472 0.234 -0.235 -0.268 -0.070 -0.199 -0.212 -0.206 -0.492 -0.051 0.097
+ 5.148 0.456 -0.234 0.033 -0.438 -0.379 -0.028 0.106 0.070 -0.015 -0.452 -0.270 -0.051
+ 4.839 0.313 -0.072 -0.224 -0.524 -0.301 0.149 -0.004 0.098 0.080 -0.473 -0.146 -0.190
+ 4.253 0.076 -0.032 -0.164 -0.329 -0.228 0.262 0.091 0.005 0.035 -0.323 -0.067 -0.306
+ 4.281 -0.090 0.054 0.045 0.059 -0.208 -0.021 -0.098 -0.099 0.027 -0.141 -0.033 -0.301
+ 4.514 -0.172 0.197 0.091 -0.180 -0.225 0.073 -0.240 -0.178 -0.004 -0.066 0.129 -0.112
+ 4.582 -0.172 0.245 0.037 -0.068 -0.208 0.022 -0.291 -0.136 -0.085 -0.121 -0.007 -0.110
+ 4.418 -0.105 0.150 0.085 -0.034 -0.212 0.128 -0.100 -0.158 0.011 -0.102 0.019 -0.122
+ 4.346 -0.106 0.042 -0.014 -0.204 -0.338 -0.050 -0.134 -0.112 0.093 -0.032 0.046 -0.127
+ 4.244 0.069 0.159 0.001 -0.124 -0.168 0.034 -0.193 -0.099 0.054 -0.037 0.058 -0.072
+ 4.285 0.059 0.157 0.021 -0.136 -0.293 -0.083 -0.058 -0.097 0.233 -0.024 -0.082 -0.185
+ 4.120 0.215 -0.094 -0.074 -0.247 -0.399 -0.021 -0.091 -0.090 0.171 0.021 0.012 -0.005
+ 4.455 0.476 0.033 0.081 -0.394 -0.278 0.127 0.025 0.030 -0.005 -0.033 -0.027 -0.108
+ 4.287 0.732 -0.056 -0.023 -0.540 -0.042 0.159 0.147 -0.062 -0.046 -0.253 -0.124 -0.150
+ 4.476 0.570 -0.280 -0.090 -0.539 -0.214 0.078 0.159 0.147 0.143 -0.219 -0.220 -0.012
+ 4.193 0.361 -0.335 -0.045 -0.428 -0.256 0.066 0.188 0.221 0.239 -0.303 -0.184 -0.015
+ 3.596 0.430 -0.179 0.076 -0.277 -0.032 0.085 0.015 -0.125 -0.068 -0.188 -0.098 0.028
+ 4.239 0.522 -0.357 0.215 0.042 -0.234 -0.090 -0.253 -0.115 0.111 -0.047 -0.007 0.020
+ 4.022 0.152 -0.347 0.256 -0.268 -0.244 -0.109 -0.059 -0.061 0.236 -0.069 0.088 -0.004
+ 3.610 0.272 -0.149 0.177 -0.083 -0.177 -0.062 0.007 -0.320 0.068 0.047 0.009 -0.001
+ 5.081 0.840 -0.847 -0.176 0.012 -0.324 -0.243 -0.031 -0.225 -0.029 -0.032 -0.076 -0.106
+ 4.316 0.540 -0.599 0.031 -0.042 -0.185 -0.169 -0.092 -0.141 0.039 -0.009 -0.015 -0.039
+ 3.581 0.347 -0.119 0.238 0.097 0.026 -0.160 -0.127 -0.122 -0.053 -0.058 -0.019 -0.188
+ 3.896 0.544 -0.146 0.024 -0.105 -0.089 -0.079 -0.066 -0.297 -0.078 -0.084 -0.002 -0.069
+ 5.302 0.901 -0.432 -0.206 -0.379 -0.207 -0.042 0.039 -0.635 -0.117 -0.013 0.049 -0.054
+ 4.048 0.366 -0.238 0.020 -0.238 -0.023 0.053 -0.121 -0.202 0.004 0.133 0.093 0.044
+ 3.709 0.417 0.102 0.187 -0.112 -0.056 -0.279 -0.105 -0.068 0.073 0.032 0.022 -0.098
+ 3.586 0.195 -0.180 -0.020 -0.210 -0.021 -0.095 -0.133 -0.144 0.119 -0.006 -0.041 -0.004
+ 3.516 0.399 -0.139 -0.035 -0.121 0.032 -0.045 -0.048 -0.248 0.189 0.070 -0.015 0.113
+ 3.444 0.248 -0.120 0.283 -0.182 -0.034 -0.025 -0.062 -0.199 0.178 0.129 0.026 -0.013
+ 3.320 0.202 0.113 0.330 -0.123 -0.079 -0.254 -0.205 -0.103 0.111 0.013 -0.122 -0.082
+ 3.597 0.395 -0.019 0.298 -0.087 -0.044 -0.142 -0.243 -0.232 0.093 0.082 -0.044 -0.109
+ 3.508 0.370 -0.149 0.082 -0.064 -0.165 -0.270 -0.278 -0.180 0.197 0.215 -0.002 -0.153
+ 3.183 0.267 -0.120 0.202 -0.115 0.060 -0.130 -0.287 -0.060 0.062 0.076 -0.030 -0.042
+ 3.266 0.394 -0.156 0.103 -0.002 -0.037 -0.039 -0.162 -0.157 0.105 -0.089 -0.121 -0.018
+ 3.376 0.372 -0.317 -0.004 -0.091 -0.161 -0.134 -0.080 -0.258 0.052 -0.077 0.025 0.040
+ 3.249 0.173 -0.184 0.214 -0.205 -0.191 -0.173 -0.033 -0.001 0.094 0.038 -0.028 0.045
+ 3.238 0.314 -0.152 0.223 0.027 -0.017 -0.026 -0.045 -0.087 0.021 0.058 0.037 0.075
+ 3.845 0.563 -0.007 0.281 -0.000 -0.128 -0.177 -0.275 -0.278 -0.018 0.049 0.220 0.133
+ 6.223 1.203 0.312 -0.003 -0.133 -0.226 -0.305 -0.168 -0.263 -0.051 -0.115 -0.103 -0.157
+ 7.483 1.243 0.361 0.100 -0.113 -0.280 -0.358 -0.200 -0.330 -0.053 -0.094 -0.109 -0.220
+ 6.799 1.408 -0.079 0.517 -0.201 -0.622 -0.154 -0.211 -0.412 0.114 -0.099 -0.172 -0.181
+ 5.804 1.122 0.307 0.438 -0.185 -0.424 -0.204 -0.231 -0.334 0.051 0.043 -0.139 -0.140
+ 4.883 0.514 0.505 0.398 -0.272 -0.006 -0.366 -0.298 -0.325 0.009 0.017 -0.047 -0.140
+ 3.711 0.415 0.231 0.022 -0.320 -0.083 -0.267 -0.322 -0.153 -0.036 0.022 -0.049 0.059
+ 5.384 0.281 -0.098 0.083 -0.433 -0.315 -0.071 -0.151 -0.160 -0.060 -0.148 -0.104 -0.066
+ 8.235 0.145 -0.281 0.074 -0.529 -0.287 0.085 0.036 -0.025 0.070 -0.247 -0.231 -0.208
+ 5.642 0.078 0.079 0.011 -0.337 -0.244 0.304 0.033 0.139 0.035 -0.270 -0.262 -0.199
+ 4.873 -0.745 0.087 0.070 -0.156 -0.287 0.143 -0.130 -0.039 -0.148 -0.177 -0.050 -0.155
+ 5.557 -0.726 0.007 0.014 -0.086 -0.311 -0.179 -0.054 0.103 0.003 -0.138 -0.025 -0.050
+ 5.830 -0.801 -0.297 -0.166 -0.201 -0.462 -0.230 0.056 0.348 0.025 -0.191 0.074 -0.054
+ 6.114 -0.563 -0.247 -0.146 -0.193 -0.473 -0.118 0.203 0.311 -0.052 -0.349 -0.096 -0.120
+ 5.266 -0.339 -0.281 -0.082 -0.214 -0.425 -0.037 -0.049 0.148 0.064 -0.259 -0.087 -0.253
+ 4.731 -0.028 -0.073 -0.197 -0.320 -0.152 0.119 0.163 -0.050 -0.048 -0.031 0.019 -0.043
+ 4.477 0.333 0.165 0.103 -0.096 -0.065 -0.098 -0.032 -0.193 -0.032 -0.092 -0.187 -0.114
+ 4.116 0.370 -0.031 0.060 0.005 -0.034 -0.131 0.017 -0.178 -0.080 -0.021 -0.087 -0.149
+ 3.712 0.288 -0.059 -0.087 -0.100 -0.007 -0.086 0.070 -0.149 -0.038 -0.065 0.010 -0.150
+ 3.856 0.305 -0.132 0.166 -0.093 -0.054 -0.063 -0.202 -0.221 -0.008 -0.078 -0.153 -0.084
+ 3.873 0.359 -0.116 0.091 -0.217 -0.065 0.014 -0.054 -0.215 -0.178 -0.059 -0.082 -0.016
+ 4.076 -0.025 0.182 0.103 -0.235 -0.081 0.011 0.033 -0.007 -0.034 -0.052 -0.000 -0.026
+ 6.221 -0.417 0.130 0.143 -0.266 -0.222 0.100 -0.274 0.215 -0.216 -0.045 -0.099 -0.179
+ 5.068 -0.308 0.259 0.021 -0.281 -0.113 0.102 -0.310 0.064 -0.268 -0.021 0.038 -0.148
+ 5.483 0.434 0.085 0.151 -0.390 -0.145 -0.032 -0.080 0.110 -0.205 -0.171 -0.170 -0.124
+ 4.623 0.219 0.056 0.123 -0.111 -0.069 0.043 -0.067 0.106 -0.268 -0.083 -0.192 -0.014
+ 4.589 0.190 -0.031 0.120 -0.232 -0.107 -0.001 -0.191 -0.028 -0.306 -0.145 -0.220 -0.083
+ 5.438 0.600 0.052 -0.042 -0.296 -0.089 -0.093 0.091 0.114 -0.233 -0.245 -0.227 -0.063
+ 5.147 0.276 0.113 0.116 -0.118 -0.005 -0.047 0.025 0.019 -0.176 -0.312 -0.235 -0.192
+ 5.476 0.022 0.009 -0.064 -0.255 -0.184 -0.023 0.174 -0.084 0.156 -0.039 -0.016 -0.198
+ 5.620 -0.263 0.078 -0.162 -0.205 -0.164 0.072 0.024 -0.160 -0.073 -0.223 -0.110 -0.077
+ 5.936 -0.223 0.014 -0.115 -0.084 -0.042 0.028 -0.047 -0.013 -0.049 -0.280 -0.028 0.039
+ 6.053 -0.286 -0.107 -0.221 -0.183 -0.093 0.161 -0.044 -0.082 -0.033 -0.140 -0.152 -0.087
+ 5.707 -0.573 -0.347 -0.421 -0.342 -0.335 0.059 0.035 0.100 0.201 -0.034 -0.063 0.062
+ 5.097 -0.637 -0.203 -0.130 -0.210 -0.198 0.053 -0.115 -0.027 0.102 -0.089 -0.094 0.035
+ 4.941 -0.377 -0.129 -0.147 -0.217 -0.201 -0.029 -0.242 -0.081 -0.039 -0.247 -0.095 0.149
+ 4.514 -0.051 -0.117 -0.254 -0.215 -0.177 -0.007 0.063 -0.049 -0.120 -0.150 0.023 0.118
+ 4.270 0.357 -0.094 -0.253 -0.166 -0.109 -0.137 -0.135 -0.097 0.011 -0.159 -0.193 -0.166
+ 3.395 0.033 -0.256 0.160 0.086 -0.013 -0.075 -0.088 -0.084 0.144 -0.029 0.012 -0.002
+ 3.314 0.116 -0.053 0.148 -0.089 -0.141 -0.190 0.023 -0.157 0.000 0.037 -0.049 -0.063
+ 3.606 0.162 -0.102 0.045 -0.056 -0.015 0.063 -0.114 -0.107 0.019 -0.093 -0.056 -0.134
+ 4.365 -0.468 0.184 -0.135 0.106 0.092 -0.109 -0.102 -0.127 -0.157 -0.066 -0.054 -0.110
+ 4.364 -0.383 0.080 -0.105 0.005 -0.185 -0.182 -0.005 -0.018 0.032 0.092 0.011 0.036
+ 3.457 0.014 -0.508 -0.020 0.043 -0.008 -0.172 0.005 -0.251 0.025 0.003 -0.068 -0.064
+ 3.557 0.100 -0.361 -0.053 0.016 0.122 -0.083 -0.088 -0.174 0.002 0.018 -0.116 -0.036
+ 3.500 0.161 -0.221 0.211 0.077 0.149 -0.066 -0.209 -0.168 0.010 0.091 0.088 -0.025
+ 3.652 0.177 -0.167 0.044 -0.211 -0.065 -0.161 -0.114 0.014 -0.081 -0.082 -0.034 0.012
+ 3.690 0.247 0.026 0.116 -0.095 0.147 -0.170 -0.181 -0.118 0.075 0.101 0.031 0.009
+ 3.701 0.302 -0.093 0.156 0.054 0.045 -0.176 -0.078 -0.170 0.062 0.033 0.054 -0.028
+ 3.762 0.319 -0.181 0.055 0.020 0.035 -0.143 -0.125 -0.300 0.001 0.085 0.112 -0.068
+ 3.725 0.374 -0.239 -0.085 -0.251 -0.118 -0.084 -0.096 -0.119 0.063 0.127 0.163 -0.033
+ 3.362 0.074 -0.259 -0.140 0.036 -0.075 -0.182 -0.219 0.066 0.172 0.010 0.106 -0.037
+ 3.582 0.317 0.002 0.041 -0.142 -0.018 -0.279 -0.187 -0.057 -0.045 0.085 0.017 -0.093
+ 3.569 0.228 -0.133 0.153 0.002 -0.173 -0.289 -0.306 -0.271 0.039 0.133 -0.034 -0.081
+ 3.557 0.283 -0.391 0.075 -0.111 -0.017 -0.273 -0.307 -0.052 -0.002 -0.083 0.066 -0.203
+ 3.391 0.165 -0.285 0.232 0.006 0.198 -0.162 -0.123 0.080 0.092 -0.062 -0.048 -0.220
+ 3.849 0.379 -0.035 0.256 -0.001 -0.054 -0.169 -0.150 -0.069 -0.026 0.126 0.027 -0.103
+ 3.810 0.420 0.017 0.125 0.085 -0.058 -0.342 -0.363 -0.109 0.035 0.073 -0.016 -0.157
+ 5.467 -0.262 -0.204 0.047 0.105 -0.025 -0.400 0.130 -0.042 -0.189 -0.050 -0.050 -0.058
+ 7.243 -0.515 -0.287 0.042 -0.027 -0.213 -0.542 0.281 0.064 -0.332 -0.112 -0.024 0.004
+ 4.698 -0.377 -0.474 0.192 0.089 0.047 -0.522 0.142 -0.061 -0.333 0.086 0.041 0.001
+ 3.341 -0.287 -0.407 0.064 0.097 -0.098 -0.187 -0.016 -0.227 -0.195 0.114 0.185 -0.154
+ 3.876 -0.221 -0.296 -0.049 0.054 0.099 -0.027 0.015 -0.202 0.008 0.011 -0.013 -0.073
+ 5.993 -0.544 -0.488 -0.061 -0.214 -0.079 -0.034 0.117 -0.166 -0.100 0.194 0.164 -0.170
+ 7.275 -0.702 -1.124 -0.041 -0.277 -0.272 -0.219 0.293 -0.049 -0.221 0.012 0.178 -0.294
+ 8.926 -0.730 -1.063 -0.144 -0.057 -0.244 -0.148 0.050 -0.160 -0.101 0.069 0.182 -0.311
+ 10.360 -0.536 -1.073 -0.240 0.042 -0.313 0.118 0.085 -0.090 -0.146 -0.168 0.011 -0.231
+ 12.029 0.356 -0.981 -0.446 -0.103 -0.497 0.013 -0.106 -0.252 -0.027 -0.386 0.071 -0.240
+ 13.179 0.833 -1.360 -0.356 -0.237 -0.376 -0.254 0.110 -0.161 0.005 -0.366 -0.075 -0.166
+ 14.184 0.461 -1.719 -0.169 -0.351 -0.285 -0.186 0.265 -0.087 0.028 -0.376 -0.255 -0.064
+ 14.020 0.481 -1.810 -0.253 -0.343 -0.274 -0.172 0.239 -0.040 -0.028 -0.322 -0.308 0.005
+ 14.369 0.379 -1.739 -0.180 -0.456 -0.149 -0.254 0.283 -0.092 0.034 -0.344 -0.330 0.023
+ 14.575 0.387 -1.614 -0.259 -0.568 -0.028 -0.328 0.244 -0.190 0.160 -0.359 -0.345 -0.061
+ 14.540 0.658 -1.502 -0.356 -0.681 0.078 -0.305 0.176 -0.350 0.318 -0.307 -0.316 -0.244
+ 13.866 1.162 -1.241 -0.395 -0.726 -0.103 -0.208 0.022 -0.486 0.277 -0.143 -0.232 -0.255
+ 12.655 1.025 -0.915 -0.068 -0.635 -0.307 0.099 -0.065 -0.435 0.226 -0.281 0.112 -0.074
+ 11.561 0.590 -0.686 0.238 -0.158 -0.135 0.430 -0.047 -0.548 0.102 -0.782 0.087 -0.118
+ 11.483 0.600 -0.650 0.227 -0.197 -0.192 0.432 -0.073 -0.446 0.065 -0.726 0.046 -0.038
+ 11.485 0.424 -0.560 0.221 -0.149 -0.071 0.370 0.005 -0.546 -0.009 -0.782 -0.017 0.056
+ 11.156 0.490 -0.540 0.293 -0.113 -0.079 0.404 0.053 -0.692 -0.020 -0.816 0.004 0.088
+ 10.864 0.726 -0.570 0.324 -0.247 -0.097 0.293 0.221 -0.690 0.015 -0.696 -0.139 0.056
+ 12.016 0.997 -0.489 -0.182 -0.439 -0.260 -0.162 -0.009 -0.662 0.059 -0.097 0.002 0.127
+ 13.444 0.993 -1.041 -0.416 -0.622 -0.137 -0.361 -0.101 -0.578 0.355 -0.003 -0.100 -0.111
+ 13.935 0.852 -1.315 -0.323 -0.685 -0.152 -0.532 -0.125 -0.388 0.472 -0.097 -0.319 -0.254
+ 14.013 0.714 -1.278 -0.248 -0.461 -0.371 -0.499 -0.265 -0.079 0.465 -0.160 -0.370 -0.123
+ 13.561 0.695 -0.999 -0.307 -0.141 -0.690 -0.403 -0.365 0.040 0.479 -0.408 -0.042 -0.033
+ 12.310 0.282 -0.437 0.311 -0.259 -0.718 -0.481 -0.118 0.098 -0.035 -0.350 -0.025 -0.048
+ 9.903 0.008 -0.147 0.203 -0.339 -0.181 -0.513 -0.079 0.160 0.181 -0.162 0.035 -0.081
+ 8.475 0.423 -0.583 -0.054 -0.363 -0.410 -0.077 -0.229 0.204 0.215 -0.245 -0.332 -0.132
+ 8.829 -0.275 -0.560 -0.154 -0.447 -0.309 -0.017 -0.085 0.379 0.298 -0.215 -0.348 -0.253
+ 7.755 0.050 -0.369 -0.266 -0.395 -0.362 -0.029 -0.134 0.300 0.317 -0.244 -0.193 -0.067
+ 11.030 -1.260 -0.351 0.088 -0.833 0.087 -0.237 -0.149 0.055 -0.214 -0.122 -0.152 -0.161
+ 11.286 -1.691 -0.145 0.108 -0.878 -0.082 -0.129 -0.224 -0.086 -0.202 -0.096 -0.147 -0.126
+ 11.207 -2.470 -0.017 0.466 -0.308 -0.278 -0.052 -0.091 -0.044 0.023 -0.180 -0.185 -0.009
+ 12.503 -1.752 -0.431 0.012 -0.259 -0.420 -0.304 -0.148 -0.166 -0.142 -0.161 -0.014 0.045
+ 12.091 -1.207 -0.266 0.584 0.183 -0.174 -0.405 -0.100 -0.222 -0.209 -0.198 -0.187 -0.025
+ 11.912 -0.279 -0.135 0.334 0.648 0.097 -0.246 -0.297 -0.185 -0.374 -0.377 -0.286 -0.278
+ 11.920 0.288 -0.181 0.053 0.328 -0.191 -0.386 -0.285 -0.149 -0.042 -0.050 -0.182 -0.383
+ 11.788 0.831 -0.058 0.248 0.256 -0.091 -0.206 -0.245 -0.202 -0.022 -0.107 -0.306 -0.275
+ 11.454 0.959 -0.046 0.382 0.121 0.045 -0.262 -0.309 -0.192 -0.049 -0.223 -0.101 -0.279
+ 11.435 1.128 0.003 0.284 -0.073 0.018 -0.307 -0.178 -0.073 -0.118 -0.273 -0.132 -0.143
+ 10.549 1.151 0.099 0.246 -0.050 0.090 -0.219 -0.184 -0.340 -0.205 -0.245 -0.160 -0.321
+ 9.962 0.658 -0.179 0.178 0.090 0.213 0.032 -0.070 -0.376 -0.451 -0.142 -0.008 -0.160
+ 10.064 0.591 -0.461 0.102 0.146 0.242 0.119 -0.108 -0.461 -0.399 -0.015 0.049 -0.117
+ 9.167 0.346 -0.679 -0.105 0.092 0.485 0.075 -0.404 -0.592 -0.270 0.034 -0.063 -0.009
+ 8.346 0.692 -0.262 0.146 -0.031 0.095 -0.192 -0.548 -0.402 -0.181 -0.051 0.031 -0.123
+ 6.416 0.391 -0.171 -0.036 0.132 0.026 -0.266 -0.509 -0.359 0.021 0.104 -0.099 -0.152
+ 5.692 0.146 -0.247 0.050 0.225 -0.088 -0.064 -0.252 -0.337 0.005 0.044 -0.270 -0.074
+ 5.639 -0.263 -0.598 0.415 -0.012 0.002 -0.222 -0.276 -0.124 -0.124 -0.093 -0.177 0.065
+ 6.381 -0.318 -0.690 0.474 -0.096 -0.215 -0.367 -0.172 0.062 -0.140 0.155 -0.103 0.205
+ 7.245 -0.612 -0.715 0.309 -0.367 -0.208 -0.227 -0.104 0.117 -0.061 0.254 -0.062 0.131
+ 8.271 -0.552 -1.006 0.080 -0.202 -0.186 -0.148 0.136 0.213 -0.250 0.063 -0.064 0.097
+ 9.811 -0.114 -0.781 0.011 -0.113 -0.277 -0.465 0.175 0.019 -0.066 -0.137 -0.007 -0.055
+ 10.414 -0.670 -1.047 -0.248 -0.153 -0.124 -0.177 0.295 -0.072 -0.238 -0.233 0.040 -0.113
+ 11.265 -0.644 -1.311 -0.391 -0.055 -0.315 0.022 0.359 0.076 -0.379 -0.187 0.176 -0.147
+ 11.826 -0.641 -1.307 -0.273 -0.023 -0.474 0.010 0.073 -0.069 -0.315 -0.059 0.280 -0.138
+ 12.105 -0.669 -1.318 -0.213 0.015 -0.305 0.055 0.095 -0.182 -0.239 -0.291 -0.041 -0.214
+ 12.256 -0.618 -1.185 -0.324 0.061 -0.097 -0.012 0.056 -0.161 -0.268 -0.418 0.089 -0.168
+ 13.065 0.108 -1.003 -0.385 -0.112 -0.298 -0.271 0.117 -0.183 -0.086 -0.474 0.023 -0.144
+ 14.045 0.485 -1.378 -0.574 -0.164 -0.388 -0.241 0.212 -0.169 -0.082 -0.371 -0.003 -0.229
+ 14.692 0.318 -1.641 -0.428 -0.251 -0.288 -0.366 0.359 -0.162 -0.003 -0.358 -0.162 -0.241
+ 14.664 0.382 -1.599 -0.445 -0.330 -0.335 -0.354 0.322 -0.129 -0.007 -0.381 -0.286 -0.083
+ 14.916 0.300 -1.398 -0.405 -0.357 -0.332 -0.475 0.395 -0.252 0.155 -0.431 -0.293 -0.158
+ 14.957 0.425 -1.296 -0.585 -0.284 -0.355 -0.477 0.250 -0.285 0.314 -0.350 -0.341 -0.302
+ 14.663 0.785 -1.246 -0.603 -0.297 -0.420 -0.452 0.045 -0.382 0.529 -0.322 -0.292 -0.469
+ 14.671 0.894 -0.861 -0.818 -0.441 -0.410 -0.301 -0.001 -0.610 0.501 -0.309 -0.185 -0.357
+ 14.328 0.992 -0.464 -0.841 -0.542 -0.355 -0.200 -0.264 -0.764 0.286 -0.238 0.123 -0.239
+ 13.830 0.921 -0.034 -0.748 -0.614 -0.243 -0.330 -0.289 -0.785 0.114 -0.446 0.338 -0.233
+ 13.317 0.903 0.311 -0.795 -0.549 -0.244 -0.184 -0.343 -0.834 -0.075 -0.603 0.266 -0.167
+ 12.810 1.012 0.377 -0.817 -0.461 -0.316 -0.129 -0.328 -0.758 0.004 -0.681 0.153 -0.205
+ 12.165 1.174 0.334 -0.789 -0.308 -0.301 -0.029 -0.332 -0.751 0.024 -0.659 0.020 -0.268
+ 11.358 1.468 0.030 -0.762 0.090 -0.362 0.165 -0.464 -0.866 0.036 -0.537 -0.094 -0.376
+ 11.298 1.238 -0.293 -0.315 0.422 -0.506 0.003 -0.599 -0.684 0.069 -0.408 -0.430 -0.274
+ 11.535 0.855 -0.438 0.280 0.361 -0.725 -0.310 -0.327 -0.484 0.123 -0.525 -0.481 -0.189
+ 11.610 0.313 -0.282 0.608 0.133 -0.845 -0.040 -0.167 -0.615 -0.045 -0.327 -0.324 -0.222
+ 11.525 -0.381 0.265 0.801 -0.157 -0.392 0.055 -0.350 -0.514 -0.040 -0.473 -0.307 -0.374
+ 11.094 -0.426 0.660 0.556 -0.207 -0.345 -0.094 -0.176 -0.495 -0.018 -0.395 -0.355 -0.302
+ 11.135 -0.548 0.842 0.501 -0.029 -0.282 -0.142 -0.113 -0.526 -0.031 -0.321 -0.421 -0.368
+ 11.877 -0.778 0.960 0.514 -0.252 -0.143 -0.272 0.050 -0.577 0.035 -0.364 -0.325 -0.307
+ 12.478 -1.113 0.942 0.633 -0.141 -0.214 -0.427 0.045 -0.531 0.142 -0.316 -0.249 -0.278
+ 12.529 -1.186 1.071 0.609 -0.234 -0.167 -0.297 0.111 -0.705 0.116 -0.286 -0.300 -0.270
+ 12.590 -1.105 1.013 0.635 -0.266 -0.078 -0.299 0.143 -0.768 0.112 -0.314 -0.292 -0.219
+ 12.554 -0.969 0.947 0.634 -0.334 -0.087 -0.367 0.179 -0.667 0.088 -0.356 -0.280 -0.185
+ 12.386 -0.783 0.816 0.743 -0.363 -0.134 -0.419 0.100 -0.639 0.110 -0.291 -0.335 -0.184
+ 12.479 -0.757 0.754 0.764 -0.368 -0.083 -0.445 0.010 -0.774 0.149 -0.302 -0.269 -0.183
+ 12.317 -0.668 0.668 0.807 -0.301 -0.156 -0.381 -0.099 -0.785 0.066 -0.357 -0.146 -0.256
+ 12.350 -0.764 0.662 0.916 -0.233 -0.296 -0.270 -0.304 -0.668 -0.064 -0.344 -0.141 -0.245
+ 12.608 -0.836 0.637 0.695 -0.293 -0.125 -0.123 -0.279 -0.771 -0.291 -0.262 -0.036 -0.402
+ 12.735 -0.788 0.537 0.520 -0.068 -0.411 -0.163 -0.291 -0.551 -0.215 -0.254 -0.179 -0.444
+ 12.546 -0.792 0.332 0.527 -0.070 -0.591 -0.164 -0.318 -0.236 -0.401 -0.272 0.033 -0.463
+ 12.520 -0.746 0.412 0.296 0.064 -0.616 -0.170 -0.275 -0.339 -0.435 -0.230 -0.074 -0.459
+ 12.665 -0.924 0.554 0.161 0.068 -0.502 -0.219 -0.204 -0.449 -0.492 -0.317 -0.077 -0.303
+ 12.901 -0.761 0.506 0.164 0.055 -0.630 -0.133 -0.216 -0.291 -0.513 -0.225 -0.112 -0.384
+ 13.037 -0.694 0.406 0.223 0.062 -0.480 -0.295 -0.166 -0.478 -0.411 -0.256 -0.120 -0.437
+ 13.198 -0.830 0.439 0.490 -0.052 -0.450 -0.168 -0.174 -0.479 -0.361 -0.201 -0.161 -0.435
+ 13.201 -0.601 0.347 0.510 -0.113 -0.380 -0.299 -0.070 -0.546 -0.370 -0.186 -0.320 -0.368
+ 13.156 -0.677 0.516 0.709 -0.271 -0.447 -0.213 -0.018 -0.621 -0.168 -0.247 -0.391 -0.312
+ 13.048 -0.669 0.382 0.952 -0.430 -0.233 -0.284 0.070 -0.707 -0.038 -0.414 -0.249 -0.325
+ 12.951 -0.771 0.407 0.917 -0.259 -0.264 -0.275 0.026 -0.708 0.027 -0.420 -0.239 -0.285
+ 12.753 -0.661 0.347 0.793 -0.106 -0.398 -0.223 0.067 -0.692 0.094 -0.405 -0.217 -0.244
+ 12.530 -0.519 0.227 0.720 0.057 -0.470 -0.265 0.160 -0.662 0.094 -0.406 -0.159 -0.240
+ 12.256 -0.405 0.170 0.554 0.276 -0.468 -0.381 0.190 -0.630 0.113 -0.399 -0.177 -0.149
+ 11.710 -0.185 0.144 0.374 0.423 -0.355 -0.420 0.116 -0.671 0.175 -0.455 -0.184 -0.011
+ 11.291 -0.038 0.130 0.262 0.420 -0.224 -0.329 -0.045 -0.696 0.276 -0.545 -0.213 0.091
+ 11.049 0.063 0.125 0.176 0.420 -0.113 -0.358 -0.125 -0.666 0.363 -0.542 -0.288 0.026
+ 11.024 0.062 0.208 0.072 0.445 -0.090 -0.416 -0.128 -0.655 0.370 -0.476 -0.298 -0.065
+ 11.275 0.050 0.119 0.127 0.441 -0.126 -0.456 -0.046 -0.737 0.418 -0.569 -0.267 -0.090
+ 11.412 0.105 0.086 0.194 0.415 -0.224 -0.491 -0.015 -0.666 0.384 -0.654 -0.196 -0.107
+ 11.608 0.166 -0.079 0.401 0.302 -0.310 -0.489 0.017 -0.595 0.299 -0.674 -0.170 -0.085
+ 11.492 0.298 -0.214 0.518 0.315 -0.450 -0.406 0.021 -0.480 0.084 -0.621 -0.127 -0.152
+ 11.511 0.126 -0.143 0.555 0.379 -0.568 -0.355 0.082 -0.522 0.105 -0.576 -0.141 -0.135
+ 11.405 0.096 -0.078 0.528 0.281 -0.549 -0.319 0.239 -0.694 0.143 -0.502 -0.183 -0.089
+ 10.981 0.165 -0.044 0.498 0.304 -0.611 -0.244 0.261 -0.771 0.261 -0.552 -0.069 -0.283
+ 10.724 0.097 -0.076 0.511 0.293 -0.543 -0.197 0.237 -0.656 0.034 -0.450 -0.180 -0.175
+ 10.816 -0.010 0.071 0.416 0.277 -0.433 -0.259 0.137 -0.472 -0.018 -0.502 -0.387 0.013
+ 10.935 0.338 0.067 0.246 0.374 -0.257 -0.382 0.004 -0.390 0.135 -0.525 -0.583 -0.081
+ 10.748 0.515 0.058 0.007 0.479 -0.290 -0.255 -0.114 -0.440 0.313 -0.335 -0.578 -0.012
+ 10.714 0.653 0.326 -0.342 0.309 -0.185 -0.246 -0.138 -0.535 0.317 -0.071 -0.337 -0.007
+ 10.792 0.997 0.347 -0.582 0.246 -0.240 -0.224 -0.230 -0.716 0.033 -0.072 -0.473 -0.007
+ 10.898 1.274 -0.004 -0.535 0.019 -0.224 0.002 -0.304 -0.564 -0.021 0.042 -0.283 0.042
+ 11.220 1.250 0.063 -0.537 -0.149 -0.487 0.170 -0.469 -0.271 -0.201 0.056 -0.268 0.110
+ 11.582 1.234 0.048 -0.599 -0.472 -0.357 0.056 -0.381 -0.211 -0.211 0.013 -0.212 0.206
+ 11.841 1.116 0.007 -0.420 -0.861 -0.237 0.033 -0.267 -0.089 -0.250 -0.102 -0.078 0.141
+ 11.848 0.911 0.086 -0.466 -0.911 -0.346 0.092 -0.254 0.152 -0.330 -0.022 -0.119 0.072
+ 11.399 1.177 -0.082 -0.425 -0.953 -0.320 0.043 -0.252 0.305 -0.407 0.058 -0.132 -0.119
+ 11.767 1.186 -0.198 -0.588 -1.055 -0.035 -0.053 -0.118 0.060 -0.270 -0.012 -0.035 -0.149
+ 12.176 1.080 -0.378 -0.677 -0.994 0.112 0.006 -0.198 -0.055 -0.123 0.024 0.030 -0.257
+ 12.152 1.202 -0.518 -0.764 -0.805 0.096 -0.055 -0.177 -0.058 -0.028 -0.039 0.065 -0.414
+ 12.495 0.951 -0.636 -0.595 -0.727 0.053 0.023 -0.398 0.019 0.137 -0.104 0.097 -0.574
+ 12.236 1.090 -0.871 -0.392 -0.664 0.082 -0.111 -0.435 0.054 0.198 -0.138 0.070 -0.614
+ 12.079 1.062 -0.806 -0.416 -0.552 0.092 -0.361 -0.369 0.071 0.236 -0.152 0.112 -0.584
+ 10.639 0.778 -0.354 -0.060 -0.343 0.183 -0.324 -0.388 0.067 0.091 -0.343 0.123 -0.327
+ 10.522 0.824 -0.117 0.205 -0.401 -0.041 -0.286 -0.372 -0.033 0.107 -0.438 0.096 -0.274
+ 10.798 0.690 -0.247 0.312 -0.347 -0.169 -0.210 -0.367 -0.101 0.108 -0.399 0.042 -0.193
+ 13.088 0.409 -0.934 0.002 -0.122 -0.394 -0.583 0.061 -0.284 0.504 -0.323 0.090 -0.359
+ 13.010 0.655 -0.938 -0.109 -0.354 -0.260 -0.629 0.025 -0.206 0.459 -0.350 0.026 -0.356
+ 12.771 0.731 -0.835 -0.083 -0.606 -0.181 -0.618 0.022 -0.009 0.345 -0.363 0.008 -0.285
+ 12.688 0.808 -0.910 0.009 -0.634 -0.191 -0.682 0.043 0.093 0.209 -0.345 0.075 -0.237
+ 12.279 0.891 -0.720 0.092 -0.637 -0.191 -0.706 -0.138 0.092 0.200 -0.230 0.030 -0.152
+ 11.848 1.019 -0.602 0.103 -0.429 -0.259 -0.655 -0.212 -0.146 0.259 -0.256 -0.091 -0.168
+ 9.766 0.977 0.000 0.139 0.064 -0.174 -0.410 -0.152 -0.237 0.143 -0.179 -0.383 -0.342
+ 9.682 0.850 -0.052 0.256 0.106 -0.122 -0.397 -0.027 -0.253 0.005 -0.261 -0.577 -0.071
+ 9.760 0.721 0.040 0.218 0.182 -0.365 -0.367 0.085 -0.392 0.168 -0.254 -0.588 0.033
+ 9.765 0.631 0.052 0.239 0.167 -0.364 -0.336 0.069 -0.389 0.216 -0.301 -0.534 0.017
+ 9.706 0.540 0.165 0.204 0.197 -0.410 -0.229 -0.029 -0.355 0.258 -0.336 -0.607 0.159
+ 9.865 0.502 0.089 0.172 0.239 -0.313 -0.180 -0.063 -0.454 0.300 -0.352 -0.465 0.080
+ 12.095 0.315 -0.348 0.149 -0.028 -0.357 -0.574 0.041 -0.177 0.151 -0.264 -0.124 0.063
+ 12.757 0.091 -0.212 0.214 -0.459 -0.589 -0.577 0.081 -0.339 0.155 -0.038 -0.021 0.019
+ 13.028 -0.015 -0.130 0.316 -0.784 -0.515 -0.470 0.049 -0.403 0.344 -0.163 0.027 -0.100
+ 13.285 -0.104 -0.122 0.318 -0.793 -0.581 -0.489 0.081 -0.457 0.369 -0.153 0.021 -0.193
+ 13.480 -0.230 0.010 0.240 -0.830 -0.423 -0.654 0.144 -0.525 0.445 -0.302 0.139 -0.266
+ 13.294 -0.244 0.192 0.184 -0.869 -0.387 -0.579 0.022 -0.550 0.395 -0.242 0.086 -0.201
+ 13.238 -0.364 0.321 0.253 -0.856 -0.369 -0.602 -0.011 -0.544 0.338 -0.228 0.082 -0.196
+ 13.109 -0.436 0.495 0.290 -0.868 -0.349 -0.516 -0.130 -0.514 0.275 -0.273 0.030 -0.158
+ 12.559 -0.370 0.580 0.353 -0.753 -0.260 -0.495 -0.214 -0.548 0.213 -0.345 0.009 -0.121
+ 11.825 -0.392 0.684 0.474 -0.769 -0.314 -0.347 -0.215 -0.618 0.192 -0.405 -0.121 -0.169
+ 9.920 -0.599 0.707 0.523 -0.594 -0.258 -0.277 -0.111 -0.377 0.167 -0.319 -0.090 0.021
+ 7.759 -0.253 0.701 0.264 -0.250 -0.199 0.091 -0.176 0.077 -0.023 -0.215 -0.254 -0.266
+ 6.636 -0.149 0.944 0.266 -0.026 -0.174 -0.156 -0.498 -0.025 -0.154 0.004 -0.019 -0.299
+ 5.583 0.407 0.483 0.104 -0.265 -0.229 -0.544 -0.253 -0.314 0.256 -0.171 -0.103 -0.107
+ 5.470 0.367 0.372 0.158 -0.268 -0.213 -0.514 -0.161 -0.399 0.146 -0.053 0.082 -0.212
+ 6.473 -0.090 0.063 0.190 -0.514 -0.095 -0.328 -0.234 -0.150 -0.096 -0.110 0.113 -0.145
+ 10.795 -1.212 -0.458 0.039 -0.484 0.027 -0.148 -0.173 0.136 0.037 -0.073 -0.107 -0.284
+ 12.236 -1.468 -0.485 -0.036 -0.681 -0.081 -0.283 -0.268 -0.058 -0.159 -0.221 -0.216 -0.164
+ 11.931 -0.789 0.719 0.011 -0.521 0.011 -0.392 -0.248 -0.460 -0.085 -0.191 -0.202 -0.106
+ 11.852 -0.128 0.794 0.177 -0.448 -0.415 -0.628 -0.014 -0.567 -0.170 -0.196 -0.068 -0.090
+ 12.058 0.232 0.319 0.305 -0.489 -0.557 -0.679 0.067 -0.560 -0.237 -0.085 0.146 -0.292
+ 12.161 0.217 0.005 0.255 -0.446 -0.506 -0.712 -0.005 -0.414 -0.205 -0.180 0.256 -0.397
+ 12.160 0.102 -0.099 0.326 -0.522 -0.409 -0.847 -0.052 -0.407 -0.219 -0.234 0.303 -0.324
+ 11.888 0.017 -0.281 0.450 -0.359 -0.243 -0.755 -0.031 -0.329 -0.183 -0.361 0.256 -0.319
+ 8.344 -0.193 0.162 0.473 -0.166 -0.204 -0.802 -0.058 -0.080 -0.199 -0.133 0.301 -0.071
+ 7.621 -0.071 0.175 0.599 -0.163 0.009 -0.628 0.124 -0.027 -0.026 -0.016 0.100 -0.013
+ 6.744 0.341 -0.450 0.227 -0.044 -0.085 -0.367 -0.053 -0.122 0.051 -0.043 0.131 -0.119
+ 8.969 0.212 -1.324 -0.275 -0.164 -0.153 -0.370 -0.235 -0.243 -0.233 -0.170 -0.138 -0.041
+ 8.961 -0.683 -0.484 -0.220 -0.082 -0.103 -0.381 -0.103 -0.141 -0.208 -0.077 -0.298 -0.021
+ 8.720 -0.551 -0.055 -0.258 -0.303 -0.164 -0.271 0.025 -0.177 -0.006 -0.145 -0.099 -0.017
+ 9.854 -0.831 -0.372 -0.017 -0.220 -0.115 -0.170 0.061 -0.046 -0.107 -0.170 0.043 -0.098
+ 11.528 -0.776 -0.600 -0.008 -0.193 -0.126 -0.180 0.096 -0.007 -0.125 -0.309 -0.163 -0.126
+ 11.804 -0.439 -0.424 0.014 -0.055 -0.026 -0.189 -0.034 -0.036 -0.008 -0.229 -0.260 -0.122
+ 12.330 0.080 -0.137 0.163 0.104 -0.173 -0.363 -0.246 -0.040 -0.159 -0.332 -0.309 -0.106
+ 13.202 0.238 0.081 0.428 0.023 -0.121 -0.511 -0.404 -0.113 -0.168 -0.310 -0.440 -0.384
+ 12.612 -0.042 -0.082 0.367 0.090 0.118 -0.449 -0.213 -0.139 -0.125 -0.331 -0.365 -0.246
+ 11.890 0.264 -0.273 0.340 0.226 0.023 -0.552 -0.303 -0.267 -0.264 -0.127 -0.474 -0.132
+ 12.191 1.023 -0.770 -0.404 -0.103 -0.062 -0.726 -0.331 -0.235 -0.177 -0.072 -0.180 -0.158
+ 11.507 1.690 -0.757 -0.283 -0.078 0.119 -0.668 -0.502 -0.158 -0.113 -0.154 -0.044 -0.116
+ 10.314 1.912 -0.357 -0.336 0.081 0.233 -0.503 -0.366 -0.108 -0.242 -0.085 -0.194 -0.153
+ 7.912 1.708 0.150 -0.192 0.017 0.018 -0.275 -0.091 -0.042 -0.051 -0.055 -0.031 -0.178
+ 5.775 1.021 0.079 0.042 0.146 0.246 -0.209 -0.276 -0.136 0.019 0.029 0.021 -0.090
+ 5.310 0.815 -0.052 -0.049 0.003 0.091 -0.154 -0.242 -0.078 -0.004 0.047 0.039 -0.107
+ 5.079 0.547 -0.156 -0.058 -0.118 -0.108 -0.376 -0.279 -0.113 0.173 0.124 0.021 0.091
+ 4.811 0.386 -0.048 -0.091 0.061 -0.047 -0.353 -0.231 -0.081 -0.010 0.037 -0.051 -0.030
+ 4.971 0.469 -0.075 -0.049 0.025 -0.012 -0.205 -0.287 -0.238 0.150 -0.150 -0.011 -0.079
+ 7.530 -0.796 0.057 0.219 0.044 -0.106 -0.381 -0.043 -0.151 -0.182 0.051 -0.149 0.107
+ 12.366 0.466 0.285 0.086 -0.414 -0.260 -0.169 -0.107 -0.336 -0.364 -0.143 -0.286 -0.046
+ 13.528 1.184 0.076 0.444 -0.464 -0.391 0.159 -0.258 -0.389 -0.315 -0.225 -0.184 -0.120
+ 11.661 0.851 0.385 0.525 -0.552 -0.467 0.047 -0.213 -0.227 -0.116 -0.284 -0.161 -0.087
+ 10.374 -0.200 0.553 0.622 -0.196 -0.427 0.168 -0.334 -0.501 -0.188 -0.301 -0.148 -0.162
+ 11.225 -0.094 0.315 0.440 -0.497 -0.292 -0.193 -0.341 -0.374 -0.263 -0.263 -0.210 -0.150
+ 11.926 -0.146 0.255 0.729 -0.265 -0.454 -0.287 -0.072 -0.643 -0.133 -0.237 -0.236 -0.111
+ 12.178 -0.337 0.338 0.720 -0.300 -0.286 -0.211 -0.162 -0.763 -0.011 -0.386 -0.166 -0.169
+ 11.918 -0.383 0.362 0.779 -0.227 -0.470 -0.016 -0.092 -0.881 -0.005 -0.326 -0.275 -0.125
+ 11.270 -0.191 0.001 0.692 0.175 -0.551 -0.208 0.164 -0.981 -0.110 -0.395 -0.232 -0.102
+ 9.960 0.374 0.085 0.542 0.468 -0.477 -0.340 0.415 -0.794 0.058 -0.229 -0.235 -0.151
+ 7.602 0.407 0.396 0.074 0.220 -0.055 -0.085 0.095 -0.331 0.111 -0.065 -0.194 -0.075
+ 9.281 -0.975 0.381 0.284 0.436 -0.407 -0.020 0.035 0.090 -0.202 -0.494 0.024 -0.064
+ 9.442 -1.264 0.132 0.389 0.235 -0.277 0.074 -0.073 0.099 -0.323 -0.448 0.103 -0.084
+ 8.476 -0.979 -0.099 0.242 0.094 -0.082 0.071 -0.059 0.056 -0.325 -0.353 0.012 0.002
+ 11.798 -0.537 0.068 0.160 -0.081 -0.028 -0.105 -0.126 -0.189 -0.154 -0.149 -0.027 -0.068
+ 12.674 1.024 0.173 -0.237 -0.396 -0.219 -0.186 -0.051 -0.189 -0.273 -0.188 -0.014 0.086
+ 12.600 1.014 0.358 -0.034 -0.403 -0.080 -0.309 -0.199 -0.252 -0.322 -0.226 -0.169 0.005
+ 12.121 1.093 0.523 -0.126 -0.532 0.118 -0.154 -0.151 -0.089 -0.376 -0.168 -0.209 -0.039
+ 11.901 0.941 0.711 -0.355 -0.899 0.010 -0.016 -0.318 -0.140 -0.517 -0.091 -0.226 0.040
+ 11.241 1.003 0.838 -0.724 -0.711 0.001 -0.078 -0.330 -0.087 -0.420 -0.079 -0.062 0.119
+ 10.908 0.447 0.859 -0.710 -0.569 -0.035 -0.146 -0.171 -0.271 -0.324 -0.238 0.129 -0.209
+ 8.469 0.404 0.787 -0.206 -0.417 0.053 0.008 0.060 -0.236 -0.133 -0.357 0.061 -0.100
+ 6.604 0.313 0.716 0.235 -0.202 -0.151 -0.084 -0.184 -0.050 0.010 -0.226 -0.028 -0.112
+ 6.068 0.273 0.504 0.136 -0.061 -0.040 -0.002 -0.299 -0.028 -0.183 -0.093 0.140 -0.088
+ 9.418 -0.964 0.037 0.220 -0.368 0.040 -0.377 0.027 0.126 0.058 -0.099 -0.207 -0.138
+ 11.343 -1.154 0.054 0.003 -0.386 0.020 -0.389 0.000 0.100 0.103 -0.111 -0.223 -0.207
+ 10.525 -0.572 0.732 -0.097 -0.400 -0.035 -0.466 -0.298 -0.408 -0.135 -0.193 -0.062 -0.302
+ 11.268 0.213 0.411 -0.026 -0.292 0.281 -0.122 -0.459 -0.562 -0.187 -0.026 0.105 -0.277
+ 9.156 0.728 0.629 -0.299 -0.119 0.446 -0.234 -0.524 -0.389 -0.193 0.156 0.102 -0.228
+ 6.426 0.721 0.339 0.102 -0.001 0.234 0.142 -0.269 -0.381 -0.156 -0.011 -0.317 -0.139
+ 6.052 0.780 0.665 -0.126 0.027 0.239 0.254 -0.077 -0.309 -0.277 -0.172 -0.061 -0.072
+ 6.047 0.894 0.448 -0.049 0.038 0.173 0.092 -0.148 -0.241 -0.134 -0.107 -0.191 -0.014
+ 6.145 0.839 0.366 0.194 -0.153 0.083 0.184 -0.066 -0.293 -0.195 -0.047 0.031 -0.045
+ 5.444 0.543 0.404 0.229 0.051 -0.048 0.145 0.019 -0.087 -0.047 -0.035 -0.029 -0.236
+ 5.041 0.580 0.375 0.043 0.163 0.034 -0.002 -0.026 0.021 0.028 -0.182 -0.031 -0.094
+ 4.591 0.471 0.167 0.210 0.414 0.201 0.163 0.037 -0.195 0.043 -0.073 -0.193 -0.135
+ 10.275 0.467 0.554 0.124 0.064 -0.047 -0.369 -0.209 -0.318 -0.293 -0.068 -0.198 -0.121
+ 12.052 1.117 0.730 -0.031 -0.135 -0.132 -0.426 -0.125 -0.280 -0.446 -0.165 -0.323 -0.134
+ 10.756 0.964 0.812 0.003 -0.113 0.035 -0.451 -0.181 -0.157 -0.181 -0.034 -0.248 -0.166
+ 9.270 0.534 0.792 0.054 -0.157 -0.072 -0.296 -0.074 -0.192 0.034 -0.075 -0.268 -0.164
+ 9.030 0.717 1.087 -0.634 -0.603 -0.323 -0.418 -0.155 -0.286 -0.041 -0.457 -0.121 -0.293
+ 9.908 0.497 1.128 -0.480 -0.765 -0.182 -0.509 -0.152 -0.165 -0.010 -0.535 -0.082 -0.292
+ 10.238 0.365 1.120 -0.597 -0.994 -0.164 -0.173 -0.093 -0.189 -0.334 -0.319 -0.227 -0.255
+ 11.283 0.273 0.362 -0.246 -0.890 0.012 -0.251 -0.313 -0.016 -0.527 -0.438 -0.236 -0.210
+ 11.692 0.506 -0.099 -0.063 -0.513 0.252 -0.163 -0.806 -0.065 -0.300 -0.373 -0.108 -0.152
+ 12.161 0.510 -0.560 0.619 -0.263 -0.062 -0.458 -0.621 -0.122 -0.208 -0.283 -0.175 -0.131
+ 12.321 0.110 -0.324 0.987 -0.301 -0.401 -0.506 -0.252 -0.360 -0.183 -0.378 -0.150 -0.094
+ 11.821 -0.130 0.066 0.948 -0.215 -0.585 -0.191 -0.214 -0.642 0.089 -0.546 -0.045 -0.343
+ 11.531 -0.432 0.411 0.730 -0.098 -0.308 -0.314 -0.183 -0.572 0.110 -0.435 -0.153 -0.307
+ 11.045 -0.317 0.268 1.031 -0.380 -0.165 -0.224 -0.180 -0.525 -0.014 -0.269 -0.204 -0.285
+ 10.828 -0.355 0.409 0.861 -0.192 -0.232 -0.092 -0.199 -0.678 0.038 -0.292 -0.150 -0.136
+ 11.215 -0.641 0.438 0.850 -0.189 -0.331 -0.203 0.012 -0.647 0.123 -0.370 -0.149 -0.148
+ 10.825 -0.468 -0.029 1.060 -0.054 -0.453 -0.203 0.096 -0.813 0.266 -0.288 -0.164 -0.239
+ 8.779 0.016 -0.042 0.789 0.052 -0.373 -0.063 0.476 -0.764 0.081 -0.425 -0.239 -0.290
+ 5.929 0.762 0.287 0.377 -0.112 0.033 0.253 0.191 -0.377 -0.018 -0.257 -0.164 -0.060
+ 5.711 0.694 0.129 0.566 -0.178 -0.278 0.265 0.043 -0.342 0.148 -0.073 -0.240 -0.127
+ 5.127 0.531 0.137 0.529 0.112 -0.157 0.110 0.025 -0.446 0.165 -0.147 -0.040 -0.040
+ 4.736 0.344 -0.050 0.376 0.048 -0.139 -0.023 -0.112 -0.432 0.015 -0.166 -0.007 -0.067
+ 4.006 0.321 -0.253 0.218 0.073 -0.084 0.045 -0.117 -0.408 0.123 0.015 0.132 -0.106
+ 7.082 -0.575 0.019 0.161 0.041 0.017 -0.074 -0.044 -0.124 -0.155 -0.077 -0.021 -0.110
+ 12.746 0.859 0.178 -0.052 -0.231 -0.334 -0.342 -0.081 0.029 -0.160 -0.243 -0.188 -0.359
+ 13.085 1.134 0.200 0.131 -0.218 -0.278 -0.354 -0.145 0.036 -0.219 -0.278 -0.134 -0.308
+ 11.496 0.753 0.743 0.217 -0.239 -0.195 -0.201 -0.010 -0.037 -0.221 -0.308 -0.065 -0.323
+ 10.007 0.036 0.666 0.416 0.012 -0.055 0.004 -0.010 -0.016 -0.179 -0.120 0.008 -0.248
+ 8.808 -0.438 0.497 0.174 -0.088 0.081 -0.026 0.079 -0.083 -0.172 -0.154 -0.060 -0.176
+ 8.432 -0.820 0.415 0.261 0.138 -0.243 -0.243 -0.084 0.072 -0.107 -0.242 -0.081 -0.038
+ 9.211 -0.506 0.248 0.199 0.015 -0.129 -0.125 0.019 -0.018 -0.204 -0.271 -0.064 -0.026
+ 10.402 -0.288 0.188 0.116 -0.021 -0.177 -0.101 0.025 0.104 -0.390 -0.310 -0.018 -0.093
+ 9.486 -0.437 0.321 0.079 -0.048 -0.214 -0.275 -0.127 0.042 -0.039 -0.339 0.067 -0.216
+ 10.450 -0.062 -0.144 0.317 -0.426 -0.468 -0.455 -0.206 -0.105 0.135 -0.322 0.044 -0.161
+ 12.103 0.316 -0.467 0.010 -0.456 -0.376 -0.722 0.169 -0.055 0.183 -0.456 0.244 -0.226
+ 12.300 0.347 -0.355 -0.059 -0.547 -0.331 -0.995 0.367 0.051 0.111 -0.250 0.307 -0.348
+ 12.170 0.214 -0.225 0.246 -0.844 -0.151 -0.770 0.294 -0.013 0.030 -0.124 0.240 -0.444
+ 12.464 0.153 -0.113 0.030 -0.638 -0.180 -0.826 0.485 -0.263 0.092 -0.097 0.175 -0.507
+ 12.623 -0.091 -0.025 0.251 -0.690 -0.265 -0.590 0.356 -0.360 0.179 -0.012 -0.042 -0.396
+ 12.333 -0.227 0.226 0.267 -0.818 -0.187 -0.408 0.130 -0.272 0.179 0.001 -0.148 -0.298
+ 11.705 -0.262 0.304 0.291 -0.833 -0.188 -0.204 -0.087 -0.154 0.248 -0.137 -0.160 -0.078
+ 11.118 -0.112 0.372 -0.040 -0.293 -0.367 -0.217 -0.004 -0.074 0.009 -0.148 -0.212 0.007
+ 10.723 0.217 0.325 -0.165 0.073 -0.557 -0.219 0.148 -0.223 0.022 -0.144 -0.284 0.063
+ 10.647 0.372 0.283 -0.221 0.107 -0.580 -0.248 0.254 -0.404 0.150 -0.196 -0.301 0.047
+ 10.440 0.372 0.315 -0.219 0.192 -0.610 -0.174 0.245 -0.482 0.156 -0.280 -0.293 0.080
+ 9.859 0.384 0.413 -0.085 -0.061 -0.734 0.150 0.109 -0.422 0.121 -0.242 -0.377 0.121
+ 9.427 0.275 0.408 0.128 0.015 -0.902 0.085 0.124 -0.335 -0.017 -0.244 -0.340 0.141
+ 9.541 0.340 -0.049 0.412 -0.086 -0.701 -0.224 0.135 -0.145 0.119 -0.138 -0.366 0.115
+ 10.135 0.279 -0.321 0.185 0.260 -0.529 -0.453 -0.232 -0.131 0.121 -0.228 -0.294 0.062
+ 10.325 -0.096 -0.075 -0.036 0.194 -0.613 -0.414 -0.152 0.116 -0.027 -0.290 -0.150 0.023
+ 9.650 -0.747 0.310 -0.056 0.057 -0.523 -0.213 -0.034 0.078 -0.173 -0.208 -0.118 0.067
+ 9.240 -1.212 0.327 -0.012 0.140 -0.282 -0.289 -0.217 -0.069 -0.152 -0.164 -0.010 0.096
+ 9.496 -1.173 0.138 -0.444 0.186 -0.250 -0.159 -0.078 -0.083 -0.136 -0.162 -0.024 -0.118
+ 9.556 -1.479 0.156 -0.400 0.147 -0.204 -0.131 -0.059 -0.047 -0.008 -0.119 -0.107 -0.163
+ 9.990 -1.559 -0.027 -0.461 0.159 -0.260 -0.072 -0.059 0.008 -0.021 -0.088 -0.075 -0.049
+ 10.594 -1.248 0.211 -0.078 0.219 -0.277 -0.309 -0.172 0.069 -0.088 -0.175 -0.040 -0.103
+ 11.538 -0.551 0.297 -0.117 -0.043 -0.543 -0.366 -0.374 -0.167 0.094 -0.257 -0.072 -0.184
+ 11.986 0.391 -0.068 -0.142 -0.464 -0.604 -0.355 -0.441 0.042 0.014 -0.411 0.208 -0.074
+ 12.331 0.760 -0.569 -0.187 -0.397 -0.569 -0.403 -0.366 0.121 0.140 -0.384 0.224 -0.093
+ 13.091 0.407 -0.744 -0.191 -0.431 -0.481 -0.474 -0.061 0.120 0.032 -0.275 0.038 -0.074
+ 13.413 0.176 -0.762 -0.132 -0.446 -0.616 -0.524 0.142 0.104 0.017 -0.335 0.142 -0.126
+ 13.039 0.156 -0.556 -0.202 -0.575 -0.568 -0.547 0.293 -0.001 0.162 -0.467 0.192 -0.248
+ 13.351 0.295 -0.704 -0.403 -0.540 -0.307 -0.770 0.230 0.172 0.049 -0.410 0.079 -0.239
+ 13.397 0.339 -0.838 -0.447 -0.428 -0.435 -0.661 0.326 0.039 -0.003 -0.263 -0.078 -0.150
+ 13.724 0.042 -0.914 -0.267 -0.546 -0.465 -0.467 0.256 0.034 0.123 -0.404 -0.082 -0.126
+ 13.189 0.325 -0.897 -0.444 -0.534 -0.302 -0.677 0.315 -0.066 0.282 -0.455 -0.090 -0.144
+ 13.655 0.112 -1.024 -0.300 -0.543 -0.496 -0.469 0.269 0.022 0.197 -0.441 -0.135 -0.149
+ 13.423 0.237 -0.982 -0.324 -0.603 -0.398 -0.494 0.285 -0.080 0.257 -0.400 -0.208 -0.139
+ 13.769 0.202 -0.995 -0.362 -0.539 -0.373 -0.511 0.312 -0.198 0.320 -0.419 -0.250 -0.091
+ 13.621 0.176 -1.005 -0.352 -0.591 -0.266 -0.589 0.321 -0.136 0.230 -0.370 -0.255 -0.018
+ 13.280 0.378 -1.097 -0.448 -0.487 -0.292 -0.564 0.362 -0.139 0.232 -0.427 -0.220 -0.040
+ 13.165 0.340 -0.983 -0.650 -0.425 -0.348 -0.428 0.283 -0.140 0.310 -0.414 -0.397 -0.021
+ 13.357 0.425 -1.170 -0.586 -0.384 -0.272 -0.559 0.310 -0.170 0.383 -0.438 -0.456 0.007
+ 13.367 0.559 -1.215 -0.663 -0.339 -0.112 -0.588 0.176 -0.202 0.449 -0.418 -0.447 -0.027
+ 13.318 0.665 -1.374 -0.534 -0.411 -0.252 -0.380 -0.004 -0.099 0.347 -0.300 -0.384 -0.152
+ 12.812 0.701 -1.053 -0.814 -0.431 -0.131 -0.440 0.046 -0.199 0.413 -0.237 -0.458 -0.116
+ 12.626 0.684 -0.899 -0.920 -0.476 -0.069 -0.476 0.031 -0.278 0.525 -0.202 -0.418 -0.181
+ 12.848 0.710 -0.803 -0.823 -0.596 -0.045 -0.481 -0.010 -0.376 0.495 -0.082 -0.341 -0.228
+ 12.497 0.903 -0.706 -0.967 -0.415 -0.075 -0.555 0.042 -0.385 0.324 0.049 -0.298 -0.217
+ 12.039 0.854 -0.525 -0.958 -0.479 -0.116 -0.374 -0.125 -0.400 0.295 0.109 -0.209 -0.283
+ 11.924 0.803 -0.553 -0.805 -0.569 -0.162 -0.392 -0.190 -0.454 0.344 0.178 -0.200 -0.288
+ 12.190 0.725 -0.612 -0.558 -0.654 -0.119 -0.447 -0.213 -0.507 0.342 0.141 -0.198 -0.214
+ 12.057 0.711 -0.525 -0.733 -0.445 -0.352 -0.403 -0.503 -0.306 0.177 0.058 -0.150 -0.173
+ 10.171 0.700 -0.298 -0.766 -0.296 -0.363 -0.389 -0.673 -0.177 0.232 0.220 -0.072 -0.085
+ 9.989 0.782 -0.154 -0.884 -0.001 -0.298 -0.486 -0.721 -0.130 0.015 0.032 -0.077 -0.106
+ 6.991 0.464 -0.116 -0.510 -0.133 -0.539 -0.444 -0.701 0.006 0.499 0.170 -0.076 -0.115
+ 6.334 0.534 -0.366 -0.294 -0.158 -0.398 -0.407 -0.255 0.013 0.383 -0.011 -0.129 -0.173
+ 5.773 0.814 -0.365 -0.329 -0.323 -0.325 -0.284 -0.144 0.027 0.376 0.058 -0.080 -0.097
+ 5.233 0.611 -0.340 -0.400 -0.384 -0.338 -0.399 -0.093 0.133 0.278 0.071 -0.065 -0.060
+ 4.735 0.671 -0.205 -0.428 -0.282 -0.258 -0.450 0.033 0.204 0.323 0.003 -0.008 -0.151
+ 4.397 0.593 -0.135 -0.135 -0.438 -0.461 -0.510 -0.105 -0.011 0.300 0.011 -0.037 -0.181
+ 4.423 0.678 -0.305 -0.288 -0.199 -0.181 -0.284 0.044 0.160 0.241 -0.056 0.047 -0.084
+ 4.588 0.788 -0.183 -0.212 -0.211 -0.133 -0.335 -0.204 -0.032 0.315 0.011 0.066 -0.298
+ 4.323 0.410 -0.368 -0.213 -0.126 -0.068 -0.043 -0.221 0.037 0.268 -0.010 0.133 -0.343
+ 8.492 -0.407 -0.232 -0.462 -0.183 -0.266 -0.367 -0.174 -0.056 -0.044 0.009 -0.063 -0.171
+ 8.791 -0.352 -0.020 -0.405 -0.044 -0.278 -0.398 -0.205 0.011 -0.040 0.028 -0.079 -0.227
+ 7.791 -1.156 0.156 -0.324 0.109 -0.214 -0.202 -0.186 -0.105 0.005 0.054 -0.218 -0.049
+ 8.919 -1.667 -0.171 -0.370 0.293 -0.136 0.057 -0.056 -0.065 -0.153 -0.085 -0.060 0.024
+ 9.738 -1.547 -0.258 -0.313 0.135 -0.217 -0.097 -0.044 0.048 0.051 -0.011 -0.011 0.045
+ 9.997 -1.382 -0.077 -0.299 0.106 -0.239 -0.239 -0.250 -0.082 -0.158 -0.081 -0.012 0.001
+ 10.140 -1.330 -0.039 -0.275 0.215 -0.187 0.004 -0.121 -0.052 -0.158 -0.204 -0.123 -0.107
+ 10.196 -1.112 0.101 -0.461 0.096 -0.296 -0.179 0.054 -0.092 -0.099 -0.151 0.010 -0.148
+ 10.168 -1.238 -0.022 -0.379 0.018 -0.290 -0.240 -0.017 0.135 0.053 -0.185 -0.006 0.036
+ 10.147 -1.246 -0.082 -0.443 -0.043 -0.334 -0.193 -0.072 0.070 0.136 -0.334 0.073 -0.120
+ 10.342 -0.275 0.432 -0.255 -0.174 -0.510 -0.522 -0.463 0.008 0.096 -0.384 -0.085 -0.071
+ 10.970 0.451 0.197 -0.406 -0.322 -0.202 -0.567 -0.776 0.115 -0.014 -0.211 0.075 -0.042
+ 11.530 0.471 0.143 -0.499 -0.521 0.078 -0.762 -0.785 0.044 0.269 -0.403 0.189 -0.140
+ 12.201 0.332 0.089 -0.435 -0.484 -0.187 -0.663 -0.623 0.031 0.353 -0.494 0.127 -0.114
+ 12.477 0.161 -0.104 -0.415 -0.413 -0.304 -0.631 -0.561 0.160 0.241 -0.414 0.073 -0.143
+ 12.607 -0.020 -0.214 -0.374 -0.466 -0.458 -0.580 -0.463 0.233 0.218 -0.353 0.064 -0.074
+ 12.560 0.043 -0.230 -0.323 -0.526 -0.421 -0.610 -0.383 0.184 0.291 -0.365 0.034 -0.070
+ 12.728 0.073 -0.272 -0.280 -0.616 -0.315 -0.568 -0.354 0.165 0.273 -0.336 -0.145 -0.025
+ 12.855 0.066 -0.552 -0.298 -0.539 -0.266 -0.536 -0.380 0.211 0.222 -0.323 -0.150 -0.032
+ 11.920 0.387 -0.449 -0.515 -0.578 -0.097 -0.704 -0.319 0.234 0.292 -0.278 -0.107 -0.025
+ 12.792 0.151 -0.622 -0.419 -0.546 -0.271 -0.557 -0.306 0.196 0.253 -0.240 -0.210 -0.008
+ 12.717 0.316 -0.531 -0.467 -0.541 -0.252 -0.487 -0.369 0.188 0.259 -0.288 -0.289 0.033
+ 12.149 0.669 -0.649 -0.472 -0.537 -0.134 -0.586 -0.267 0.105 0.228 -0.242 -0.256 -0.078
+ 11.866 0.729 -0.684 -0.547 -0.504 -0.106 -0.590 -0.395 0.188 0.294 -0.250 -0.262 -0.014
+ 12.407 0.554 -0.817 -0.422 -0.482 -0.230 -0.510 -0.441 0.218 0.252 -0.179 -0.274 -0.018
+ 12.633 0.488 -0.752 -0.401 -0.521 -0.178 -0.514 -0.343 0.137 0.145 -0.134 -0.276 -0.032
+ 12.511 0.487 -0.815 -0.280 -0.606 -0.207 -0.308 -0.384 0.113 0.160 -0.210 -0.211 -0.092
+ 12.284 0.408 -0.961 -0.280 -0.613 -0.201 -0.183 -0.422 0.244 0.090 -0.117 -0.252 -0.063
+ 12.434 0.179 -0.915 -0.286 -0.583 -0.217 -0.095 -0.433 0.307 0.039 -0.110 -0.257 -0.219
+ 11.977 0.170 -0.742 -0.240 -0.392 -0.229 -0.193 -0.343 0.370 0.065 -0.024 -0.141 -0.283
+ 11.485 0.324 -0.707 -0.265 -0.293 -0.123 -0.119 -0.551 0.348 -0.100 0.038 -0.144 -0.444
+ 10.476 0.528 -0.595 -0.405 -0.163 -0.015 -0.099 -0.487 0.317 -0.144 0.057 -0.274 -0.494
+ 9.434 0.514 -0.431 -0.354 -0.172 0.040 0.002 -0.408 0.323 -0.157 0.139 -0.233 -0.464
+ 8.292 0.286 -0.253 -0.216 -0.052 0.056 -0.004 -0.274 0.230 -0.231 -0.097 -0.114 -0.343
+ 7.660 -0.093 -0.421 -0.500 -0.029 0.292 0.078 0.054 0.167 -0.032 -0.124 -0.253 -0.264
+ 6.829 -0.220 -0.096 -0.443 -0.017 0.124 -0.166 -0.038 0.291 0.045 -0.123 -0.157 -0.280
+ 6.105 -0.243 -0.226 -0.544 -0.130 -0.148 -0.133 -0.035 -0.088 0.080 -0.013 -0.100 -0.048
+ 5.625 -0.158 0.063 -0.290 -0.270 -0.252 -0.110 -0.082 -0.066 0.142 -0.151 -0.138 0.005
+ 5.430 -0.005 -0.249 -0.047 -0.035 -0.213 -0.318 -0.212 -0.073 0.135 -0.065 0.035 -0.146
+ 5.831 -0.252 -0.034 -0.133 0.205 -0.329 -0.387 -0.077 -0.005 0.267 -0.096 -0.024 -0.038
+ 5.551 -0.494 -0.258 -0.157 0.317 -0.146 -0.415 -0.144 0.170 0.262 -0.258 -0.034 -0.013
+ 5.219 -0.377 -0.287 -0.185 0.368 -0.131 -0.304 0.026 0.010 0.174 -0.167 0.001 0.034
+ 4.121 -0.039 -0.315 -0.008 0.068 -0.136 -0.079 -0.049 -0.046 0.191 0.024 -0.105 -0.004
+ 5.803 -0.389 -0.213 -0.020 0.018 -0.075 -0.301 -0.030 0.028 -0.025 -0.110 -0.080 0.071
+ 9.541 -0.630 -0.361 -0.113 0.029 -0.077 -0.456 -0.105 0.000 -0.133 -0.177 -0.120 -0.005
+ 7.334 -0.595 -0.246 0.042 0.154 -0.061 -0.469 -0.054 0.073 -0.164 -0.218 -0.130 -0.024
+ 7.256 -0.652 -0.232 0.216 0.228 -0.023 -0.260 -0.055 -0.117 -0.284 -0.502 -0.181 0.038
+ 7.696 -0.661 -0.394 -0.043 0.051 -0.049 -0.334 -0.060 0.047 -0.124 -0.201 0.046 -0.150
+ 7.960 -0.808 -0.497 -0.050 0.096 -0.168 -0.301 -0.130 -0.185 -0.153 -0.114 0.054 -0.069
+ 8.374 -0.976 -0.518 0.071 0.256 -0.127 -0.245 -0.023 -0.072 0.023 -0.331 -0.176 -0.111
+ 8.592 -1.097 -0.582 -0.037 0.015 -0.080 -0.210 0.103 -0.114 -0.103 -0.169 0.186 0.032
+ 8.835 -1.035 -0.647 0.029 -0.004 -0.220 -0.405 -0.042 -0.262 -0.254 -0.233 0.164 -0.061
+ 8.839 -1.057 -0.473 0.007 0.041 -0.338 -0.321 -0.041 -0.162 -0.175 -0.195 0.157 -0.084
+ 8.680 -1.109 -0.514 0.265 0.128 -0.324 -0.380 -0.076 -0.040 -0.248 -0.315 0.074 -0.159
+ 9.164 -0.951 -0.392 -0.033 -0.035 -0.305 -0.297 0.052 -0.058 -0.305 -0.118 0.111 -0.113
+ 9.296 -1.178 -0.564 0.028 0.016 -0.171 -0.211 0.047 0.003 -0.306 -0.172 0.156 0.049
+ 9.325 -1.117 -0.531 -0.072 0.041 -0.194 -0.256 -0.034 -0.010 -0.157 -0.125 0.244 0.083
+ 9.170 -0.938 -0.470 -0.032 0.040 -0.270 -0.395 -0.098 -0.103 0.074 -0.046 0.206 -0.155
+ 9.071 -0.903 -0.521 -0.102 -0.095 -0.228 -0.230 0.046 -0.072 0.127 -0.173 0.170 -0.185
+ 9.377 -0.826 -0.480 -0.110 -0.282 -0.355 -0.562 -0.027 -0.029 0.028 -0.130 0.169 -0.081
+ 9.534 -0.763 -0.250 0.000 -0.119 -0.466 -0.477 -0.114 -0.018 -0.120 -0.345 0.007 -0.108
+ 9.577 -0.827 -0.473 0.124 -0.232 -0.531 -0.469 -0.041 0.125 -0.064 -0.356 -0.005 -0.099
+ 9.489 -1.082 -0.487 -0.085 -0.379 -0.500 -0.554 -0.027 -0.033 -0.102 -0.255 0.044 0.135
+ 9.560 -0.996 -0.382 -0.240 -0.241 -0.304 -0.411 0.134 -0.043 -0.095 -0.202 -0.059 -0.033
+ 9.452 -0.877 -0.283 -0.281 -0.209 -0.222 -0.450 0.121 0.130 0.110 -0.208 -0.076 -0.048
+ 9.609 -0.976 -0.374 -0.133 -0.129 -0.392 -0.532 -0.018 0.156 -0.179 -0.219 0.065 -0.068
+ 9.722 -0.822 -0.455 -0.269 -0.070 -0.396 -0.482 0.001 0.047 -0.147 -0.187 0.112 -0.221
+ 10.282 -0.682 -0.321 -0.210 -0.161 -0.222 -0.432 0.232 0.040 0.113 -0.261 0.044 -0.058
+ 10.203 -0.915 -0.388 -0.091 -0.126 -0.360 -0.407 0.281 0.027 0.059 -0.231 -0.053 -0.114
+ 9.987 -1.038 -0.378 -0.131 -0.033 -0.657 -0.717 0.076 -0.131 -0.128 -0.247 0.107 -0.242
+ 9.771 -1.230 -0.301 -0.129 -0.146 -0.518 -0.582 0.095 0.006 -0.014 -0.211 0.239 -0.060
+ 9.511 -0.978 -0.373 -0.001 -0.114 -0.566 -0.602 -0.004 -0.007 0.044 -0.094 0.261 -0.040
+ 9.594 -0.623 -0.337 -0.030 -0.081 -0.495 -0.625 0.040 -0.237 -0.060 -0.088 0.311 -0.057
+ 9.299 -0.720 -0.486 -0.061 0.038 -0.570 -0.643 -0.112 -0.143 -0.027 0.014 0.482 -0.005
+ 9.218 -0.920 -0.219 -0.022 0.083 -0.622 -0.673 -0.193 -0.084 -0.044 -0.189 0.371 0.046
+ 9.259 -0.801 -0.081 0.127 0.107 -0.708 -0.716 -0.071 -0.164 -0.020 -0.086 0.265 0.045
+ 9.458 -0.712 -0.122 -0.067 -0.044 -0.551 -0.574 -0.052 -0.202 -0.012 -0.232 0.252 0.162
+ 9.138 -0.735 -0.014 -0.020 0.104 -0.577 -0.703 0.043 -0.283 -0.175 -0.208 0.247 0.111
+ 8.993 -0.591 -0.305 -0.018 0.099 -0.316 -0.637 0.011 -0.310 -0.052 -0.285 0.140 0.072
+ 9.131 -0.488 -0.222 -0.093 0.111 -0.184 -0.618 -0.127 -0.080 0.075 -0.046 0.283 -0.034
+ 9.084 -0.516 -0.014 0.009 0.204 -0.121 -0.481 -0.141 -0.060 -0.065 -0.231 0.178 -0.054
+ 8.692 -0.621 -0.099 -0.073 0.276 -0.438 -0.709 -0.101 -0.193 -0.210 -0.106 0.190 0.086
+ 8.247 -0.636 -0.040 0.004 0.280 -0.504 -0.555 -0.187 -0.139 -0.044 -0.227 0.178 -0.045
+ 8.536 -0.543 -0.122 0.038 0.376 -0.424 -0.405 -0.005 -0.079 -0.270 -0.328 0.220 -0.005
+ 8.373 -0.448 -0.291 0.087 0.229 -0.245 -0.383 0.044 0.046 -0.130 -0.300 0.348 -0.036
+ 8.137 -0.339 -0.112 0.210 0.185 -0.122 -0.381 0.067 0.050 -0.027 -0.150 0.188 -0.179
+ 7.827 -0.388 -0.310 0.127 0.189 -0.112 -0.428 -0.153 -0.138 -0.176 -0.230 0.156 0.080
+ 7.305 -0.149 -0.273 0.289 0.280 -0.261 -0.365 -0.065 -0.064 -0.380 -0.240 0.144 -0.013
+ 6.750 -0.393 -0.277 0.033 0.438 -0.308 -0.400 0.126 -0.086 -0.320 -0.113 0.297 0.145
+ 9.175 1.149 0.010 -0.013 -0.205 -0.601 -0.193 -0.114 -0.234 -0.078 -0.230 -0.079 -0.103
+ 10.258 1.463 0.016 0.100 -0.352 -0.678 -0.155 -0.265 -0.199 -0.101 -0.203 -0.108 -0.151
+ 7.877 1.304 0.321 -0.197 -0.556 -0.778 -0.360 -0.219 -0.126 -0.182 -0.269 0.075 0.090
+ 7.484 0.997 0.512 -0.012 -0.511 -0.459 -0.289 0.094 0.078 -0.085 -0.045 -0.034 -0.174
+ 6.991 0.854 0.574 0.055 -0.389 -0.337 -0.156 0.002 -0.151 -0.248 -0.050 0.047 -0.145
+ 5.940 0.404 0.400 0.132 -0.173 -0.384 -0.303 -0.088 0.068 -0.012 -0.011 0.022 -0.132
+ 5.413 0.533 0.156 0.015 -0.031 -0.060 -0.200 0.013 -0.170 -0.115 -0.081 -0.060 -0.161
+ 5.178 0.402 -0.063 0.184 -0.024 -0.011 -0.151 0.081 -0.001 -0.018 -0.157 -0.172 -0.384
+ 5.414 0.485 0.090 0.228 0.060 -0.106 -0.173 0.017 -0.264 0.060 -0.097 -0.031 -0.261
+ 5.287 0.242 -0.051 0.045 -0.047 -0.123 -0.109 0.116 -0.165 -0.112 -0.102 0.111 -0.236
+ 5.117 0.199 -0.036 0.161 -0.108 -0.218 -0.212 0.062 -0.183 -0.083 -0.053 0.109 -0.067
+ 5.107 0.299 -0.199 -0.017 -0.064 -0.170 -0.182 -0.003 -0.068 -0.226 -0.075 0.043 -0.045
+ 5.620 0.659 0.027 0.031 -0.067 -0.326 -0.289 -0.042 -0.016 -0.075 -0.087 -0.009 0.090
+ 5.658 0.699 0.045 0.145 -0.188 -0.425 -0.360 -0.150 -0.043 -0.010 -0.192 -0.072 -0.120
+ 5.799 0.647 -0.029 0.066 -0.044 -0.275 -0.326 -0.030 -0.116 -0.035 -0.188 0.103 -0.071
+ 8.352 1.151 0.117 -0.346 -0.006 -0.067 -0.440 -0.204 -0.225 0.053 -0.232 -0.004 -0.015
+ 7.499 1.001 0.250 0.042 -0.061 -0.056 -0.203 -0.264 -0.133 0.107 -0.200 -0.140 -0.164
+ 6.329 0.165 0.131 -0.010 -0.295 -0.235 -0.342 -0.243 -0.154 0.009 -0.102 -0.190 -0.185
+ 7.384 -0.085 0.050 -0.026 -0.280 -0.270 -0.375 -0.249 -0.176 -0.086 -0.187 -0.179 -0.109
+ 8.004 -0.159 0.141 0.077 -0.238 -0.143 -0.342 -0.168 -0.138 -0.106 -0.141 -0.174 -0.072
+ 7.600 -0.026 -0.010 -0.022 -0.163 -0.284 -0.334 -0.208 -0.166 0.177 -0.039 0.001 -0.053
+ 7.698 0.045 0.171 -0.039 -0.224 -0.336 -0.418 -0.424 -0.229 -0.223 -0.063 0.154 -0.087
+ 8.693 0.141 0.476 0.192 -0.258 -0.261 -0.436 -0.302 -0.247 -0.144 -0.123 -0.075 -0.080
+ 8.741 -0.195 0.318 0.067 -0.248 0.044 -0.368 -0.274 -0.048 -0.190 -0.177 -0.073 -0.209
+ 8.898 0.036 0.279 0.047 -0.033 -0.043 -0.390 -0.306 0.026 -0.032 -0.254 -0.235 -0.095
+ 8.409 0.427 0.018 0.007 0.080 -0.010 -0.435 -0.351 -0.022 -0.241 -0.365 -0.106 -0.018
+ 7.230 0.633 -0.081 0.002 0.115 -0.016 -0.282 -0.366 -0.220 -0.011 -0.413 -0.190 -0.076
+ 6.609 0.846 0.116 0.040 0.156 0.093 0.032 -0.128 -0.177 -0.116 -0.330 -0.351 -0.219
+ 5.091 0.069 0.088 0.210 0.237 0.021 0.029 -0.077 -0.036 -0.069 -0.170 -0.119 -0.125
+ 4.695 -0.177 -0.013 0.195 0.112 0.175 -0.192 0.009 -0.191 -0.181 -0.033 -0.269 -0.103
+ 4.859 -0.055 -0.070 0.146 -0.037 0.047 -0.065 0.034 -0.126 -0.128 -0.094 -0.174 -0.010
+ 4.325 -0.047 -0.100 0.004 0.161 -0.043 -0.084 0.074 -0.203 -0.053 -0.124 -0.099 -0.045
+ 4.654 0.434 -0.070 0.325 -0.064 -0.017 -0.097 0.013 -0.114 -0.050 -0.141 -0.008 -0.056
+ 4.107 0.179 -0.053 0.364 -0.105 0.047 -0.035 -0.039 -0.093 -0.056 -0.317 0.014 -0.040
+ 4.022 0.141 0.012 0.216 0.075 0.151 0.006 -0.026 -0.104 -0.109 -0.215 0.217 0.008
+ 3.781 -0.000 0.078 0.226 0.105 0.057 -0.036 -0.038 0.135 0.126 -0.079 0.142 0.014
+ 3.897 0.178 0.027 0.109 0.028 0.032 -0.091 0.073 -0.113 0.090 -0.184 -0.075 -0.083
+ 4.095 0.365 -0.256 -0.081 -0.077 0.129 -0.131 -0.084 0.005 0.063 -0.087 0.058 -0.028
+ 4.173 0.161 -0.282 0.018 -0.071 0.135 -0.088 -0.034 -0.171 -0.053 0.029 0.076 -0.099
+ 4.450 0.345 -0.434 -0.109 0.083 -0.147 -0.261 0.064 -0.072 -0.141 -0.098 0.031 -0.144
+ 5.043 0.392 -0.308 -0.024 0.077 -0.167 -0.298 0.169 -0.022 -0.088 -0.155 0.025 0.029
+ 5.029 0.262 -0.484 0.054 0.231 -0.143 -0.426 0.087 -0.047 -0.017 0.023 0.111 -0.066
+ 5.093 0.146 -0.461 -0.024 0.159 -0.279 -0.313 0.025 -0.033 -0.084 -0.042 0.213 0.069
+ 5.738 0.143 -0.381 -0.024 0.019 -0.372 -0.341 0.252 0.074 -0.126 -0.098 0.088 -0.109
+ 6.031 0.128 -0.416 0.117 0.281 -0.302 -0.309 0.166 -0.026 -0.181 -0.111 0.056 -0.078
+ 6.156 0.002 -0.452 0.126 0.253 -0.330 -0.364 0.170 0.081 -0.165 -0.132 0.173 -0.098
+ 6.160 -0.120 -0.504 -0.027 0.090 -0.241 -0.407 0.221 -0.011 -0.176 0.003 -0.008 -0.021
+ 5.976 -0.118 -0.379 0.107 0.223 -0.469 -0.461 0.151 0.011 -0.279 -0.225 0.069 0.013
+ 6.072 -0.335 -0.612 0.070 0.319 -0.439 -0.474 0.115 -0.035 -0.182 0.157 0.209 -0.079
+ 5.742 -0.542 -0.498 0.145 0.244 -0.366 -0.321 0.038 0.031 -0.094 0.163 0.132 -0.011
+ 5.951 -0.556 -0.412 0.092 0.363 -0.197 -0.315 0.071 -0.043 -0.216 0.099 0.035 -0.078
+ 6.069 -0.468 -0.533 0.038 0.341 -0.284 -0.409 0.247 0.139 -0.328 0.075 0.253 -0.076
+ 6.154 -0.445 -0.652 0.090 0.165 -0.303 -0.297 0.196 0.054 -0.345 0.127 0.155 -0.043
+ 6.124 -0.465 -0.441 0.068 0.453 -0.340 -0.231 0.239 -0.012 -0.226 0.016 0.122 -0.104
+ 6.247 -0.551 -0.628 0.068 0.192 -0.082 -0.314 0.382 0.254 -0.088 0.041 -0.114 -0.138
+ 6.467 -0.360 -0.507 -0.010 0.074 -0.264 -0.355 0.354 0.197 -0.092 0.075 -0.003 -0.116
+ 6.161 -0.489 -0.613 0.075 0.244 -0.036 -0.288 0.011 0.153 -0.193 -0.129 0.019 -0.027
+ 6.469 -0.297 -0.434 0.223 0.320 -0.059 -0.247 0.296 -0.022 -0.262 0.034 -0.048 -0.146
+ 6.458 -0.312 -0.454 0.043 0.297 -0.198 -0.444 0.080 0.082 -0.236 -0.014 -0.013 -0.099
+ 6.248 -0.325 -0.313 0.129 0.174 -0.472 -0.357 0.147 0.169 -0.316 -0.044 -0.010 0.046
+ 6.032 -0.141 -0.303 0.398 0.239 -0.377 -0.335 0.126 0.083 -0.384 -0.154 0.131 -0.120
+ 6.321 -0.223 -0.428 0.322 0.261 -0.270 -0.424 0.142 0.026 -0.416 -0.164 0.105 -0.061
+ 6.286 -0.251 -0.407 0.204 0.183 -0.352 -0.498 0.247 0.242 -0.124 -0.116 -0.006 -0.205
+ 6.445 -0.122 -0.311 0.168 0.091 -0.350 -0.463 0.070 0.092 -0.229 0.008 -0.024 0.036
+ 6.646 0.376 0.060 0.511 0.441 -0.243 -0.685 0.051 0.015 -0.170 0.183 -0.000 -0.124
+ 6.427 0.164 0.039 0.491 0.347 -0.094 -0.509 0.016 0.034 0.055 0.039 0.042 -0.043
+ 6.292 -0.101 -0.338 0.389 0.170 -0.430 -0.328 0.225 0.095 -0.350 0.001 0.078 -0.162
+ 6.287 -0.109 -0.332 0.083 0.100 -0.455 -0.223 0.337 0.028 -0.404 -0.035 0.053 -0.014
+ 6.103 -0.213 -0.339 0.056 -0.025 -0.351 -0.275 0.186 -0.070 -0.345 -0.144 -0.076 -0.053
+ 5.898 -0.225 -0.502 0.057 0.213 -0.375 -0.418 0.259 -0.233 -0.368 0.103 -0.071 -0.037
+ 5.999 -0.140 -0.514 -0.003 0.189 -0.384 -0.497 0.188 -0.053 -0.252 -0.033 0.145 -0.009
+ 5.867 -0.083 -0.447 0.052 0.148 -0.277 -0.428 -0.040 0.048 -0.298 -0.097 0.207 -0.001
+ 5.766 -0.035 -0.385 0.050 0.009 -0.335 -0.445 0.068 0.035 -0.161 -0.010 0.048 -0.091
+ 5.495 -0.021 -0.309 0.149 -0.133 -0.285 -0.440 0.140 0.128 -0.197 -0.007 0.096 0.012
+ 5.540 -0.051 -0.246 -0.027 -0.224 -0.153 -0.272 0.026 -0.093 -0.219 -0.227 0.078 0.116
+ 5.940 0.027 -0.278 -0.032 -0.117 -0.168 -0.413 0.107 0.139 0.027 -0.018 0.069 -0.108
+ 5.739 0.035 -0.181 0.088 -0.012 -0.071 -0.296 0.139 0.105 -0.130 -0.159 -0.040 -0.167
+ 5.491 0.025 -0.220 0.178 -0.001 -0.306 -0.562 0.065 0.154 -0.054 -0.029 0.098 -0.180
+ 5.191 -0.187 -0.245 0.322 0.253 -0.017 -0.364 0.064 -0.027 -0.354 -0.147 0.060 0.006
+ 5.069 0.056 -0.263 0.218 0.098 -0.015 -0.254 0.061 -0.081 -0.210 -0.124 0.143 -0.034
+ 4.940 0.340 -0.220 0.133 0.024 -0.036 -0.139 0.209 0.043 -0.045 -0.238 0.024 -0.261
+ 4.597 0.306 -0.258 0.143 -0.181 0.012 -0.312 0.085 0.137 -0.057 -0.166 -0.017 -0.120
+ 5.037 0.392 -0.062 0.232 -0.032 -0.337 -0.414 0.011 0.122 0.084 -0.144 -0.007 -0.087
+ 4.968 -0.015 -0.169 0.032 -0.036 -0.259 -0.407 0.007 -0.050 -0.047 -0.133 0.112 0.167
+ 5.575 0.022 0.188 0.071 -0.104 0.007 -0.218 -0.118 -0.178 -0.042 -0.214 -0.143 -0.002
+ 5.754 -0.442 0.066 -0.164 -0.243 -0.284 -0.350 -0.077 0.031 -0.142 -0.067 0.134 0.005
+ 5.727 -0.260 0.190 0.050 -0.275 -0.061 -0.311 -0.131 -0.191 -0.040 0.115 0.074 -0.024
+ 6.679 -0.356 0.047 0.016 0.009 -0.049 -0.264 0.029 -0.151 -0.073 0.017 0.227 -0.176
+ 7.557 -0.088 0.111 -0.167 -0.002 -0.026 -0.209 0.019 -0.110 0.004 -0.126 -0.056 -0.223
+ 6.734 -0.126 0.183 -0.084 -0.020 -0.161 -0.250 -0.148 -0.210 0.020 -0.236 0.154 -0.051
+ 5.999 -0.332 0.376 0.224 -0.128 -0.128 -0.393 -0.082 -0.178 -0.082 -0.032 0.070 -0.127
+ 5.651 -0.325 0.349 0.076 -0.025 -0.126 -0.221 0.046 -0.167 -0.175 -0.109 -0.032 -0.119
+ 6.123 -0.236 0.147 -0.175 -0.214 -0.268 -0.319 -0.097 -0.139 -0.058 -0.200 0.051 -0.032
+ 6.170 -0.191 0.086 -0.118 -0.186 -0.231 -0.274 -0.127 -0.070 0.007 -0.054 0.034 -0.137
+ 6.362 -0.208 0.496 -0.192 -0.018 -0.035 -0.189 0.056 -0.196 -0.146 -0.168 0.074 -0.289
+ 6.662 -0.409 0.138 -0.083 0.047 -0.097 0.013 -0.043 -0.235 -0.064 -0.222 -0.036 -0.145
+ 7.457 -0.129 -0.095 -0.195 -0.153 -0.199 -0.055 -0.269 -0.025 -0.048 -0.093 -0.149 -0.011
+ 6.775 0.358 -0.245 -0.539 -0.514 -0.243 -0.277 -0.192 0.011 0.119 -0.151 -0.057 0.029
+ 7.274 0.477 -0.257 -0.487 -0.307 -0.225 -0.540 -0.209 0.196 0.109 -0.402 -0.164 0.029
+ 7.894 0.328 -0.501 -0.266 -0.503 -0.516 -0.633 -0.418 0.183 0.207 -0.430 -0.127 0.088
+ 8.353 0.074 -0.535 -0.170 -0.501 -0.561 -0.605 -0.474 0.005 0.271 0.050 -0.115 -0.001
+ 8.126 0.194 -0.453 -0.052 -0.353 -0.443 -0.538 -0.472 -0.188 0.215 -0.273 -0.055 0.033
+ 7.720 0.221 -0.166 0.005 -0.129 -0.523 -0.611 -0.419 -0.095 0.227 -0.533 0.078 0.176
+ 7.127 0.291 -0.159 0.050 -0.218 -0.569 -0.424 -0.151 -0.065 0.174 -0.421 0.017 0.126
+ 6.596 0.264 -0.016 0.012 -0.121 -0.334 -0.279 -0.016 0.005 0.070 -0.335 -0.119 0.016
+ 6.076 -0.013 -0.213 0.004 0.016 -0.285 -0.220 -0.012 0.165 0.337 -0.157 -0.087 0.029
+ 5.949 0.224 -0.129 0.040 -0.135 -0.315 -0.144 -0.034 0.038 0.240 -0.211 -0.218 -0.075
+ 6.053 0.200 -0.035 0.097 -0.308 -0.339 -0.149 -0.119 0.014 0.167 -0.130 -0.169 -0.073
+ 5.987 -0.007 -0.071 0.147 -0.187 -0.253 -0.059 -0.215 -0.066 0.091 -0.255 0.091 0.065
+ 6.011 -0.106 -0.146 0.209 -0.459 -0.418 -0.198 -0.324 0.030 -0.038 -0.433 0.049 -0.078
+ 5.793 -0.385 -0.018 0.180 -0.306 -0.044 0.050 -0.194 0.179 0.114 -0.205 -0.080 -0.090
+ 6.030 -0.303 0.103 0.163 -0.422 -0.464 -0.048 -0.300 -0.100 0.088 0.039 0.169 0.030
+ 6.752 -0.141 0.215 0.385 -0.624 -0.485 -0.136 -0.411 -0.037 0.090 -0.055 0.183 0.015
+ 7.313 -0.192 0.218 0.287 -0.788 -0.596 -0.171 -0.374 -0.191 -0.026 -0.232 0.207 0.020
+ 7.532 -0.613 -0.095 0.321 -0.854 -0.609 -0.309 -0.427 -0.257 -0.019 -0.016 0.287 0.022
+ 7.843 -0.540 0.030 0.585 -0.768 -0.599 -0.239 -0.534 -0.414 -0.084 -0.014 0.254 0.005
+ 7.936 -0.581 0.102 0.805 -0.578 -0.530 -0.229 -0.643 -0.471 -0.085 -0.050 0.282 0.033
+ 8.180 -0.608 0.011 0.653 -0.422 -0.495 -0.399 -0.749 -0.412 0.057 -0.174 0.217 -0.061
+ 7.889 -0.509 0.162 0.583 -0.574 -0.428 -0.453 -0.670 -0.476 -0.080 -0.213 0.255 -0.113
+ 7.484 -0.263 0.230 0.516 -0.710 -0.582 -0.214 -0.586 -0.413 -0.101 -0.038 0.178 -0.135
+ 7.388 0.173 0.552 0.673 -0.360 -0.431 -0.054 -0.442 -0.371 -0.140 -0.186 0.063 -0.210
+ 7.300 0.553 0.640 0.622 -0.167 -0.290 -0.192 -0.312 -0.232 -0.063 -0.259 0.077 -0.297
+ 6.641 0.097 0.662 0.667 -0.125 -0.228 -0.030 -0.180 -0.399 -0.052 -0.170 0.003 -0.235
+ 6.490 0.009 0.386 0.474 -0.218 -0.261 0.031 -0.154 -0.463 -0.308 -0.286 0.048 -0.223
+ 6.363 0.167 0.291 0.363 -0.161 -0.094 0.158 -0.128 -0.220 -0.181 -0.243 -0.054 -0.192
+ 7.152 0.143 0.255 0.138 -0.214 -0.148 -0.152 -0.240 -0.180 -0.121 -0.140 -0.112 -0.132
+ 8.849 1.255 0.513 0.003 -0.224 -0.194 -0.186 -0.185 -0.353 -0.116 -0.267 -0.210 -0.172
+ 7.618 0.830 0.590 0.201 -0.140 -0.131 -0.057 -0.131 -0.278 -0.255 -0.184 -0.165 -0.319
+ 7.336 0.432 0.471 -0.167 -0.384 -0.193 -0.101 -0.099 -0.075 -0.150 -0.241 -0.056 -0.249
+ 7.159 -0.086 0.128 -0.067 -0.137 -0.082 -0.103 -0.034 -0.043 -0.101 -0.256 -0.087 -0.115
+ 7.351 0.349 0.156 0.296 -0.145 -0.195 -0.360 -0.232 -0.044 -0.154 -0.253 0.261 -0.182
+ 7.793 0.487 0.198 0.371 -0.275 -0.243 -0.413 -0.392 -0.098 -0.266 -0.479 0.244 -0.076
+ 8.118 0.661 0.051 0.182 -0.104 -0.138 -0.608 -0.349 -0.102 -0.083 -0.408 0.182 0.049
+ 8.136 0.563 0.117 0.021 -0.128 -0.102 -0.513 -0.370 -0.149 -0.201 -0.503 0.019 0.054
+ 7.971 0.863 0.173 0.044 0.007 -0.012 -0.430 -0.401 -0.098 -0.218 -0.428 0.026 -0.113
+ 7.117 0.756 0.019 0.173 -0.103 -0.237 -0.418 -0.234 -0.008 -0.239 -0.344 0.045 -0.094
+ 6.847 0.573 0.126 0.175 -0.126 -0.170 -0.337 -0.179 -0.122 -0.005 -0.250 0.015 -0.131
+ 6.592 0.782 0.111 0.062 -0.070 -0.068 -0.187 -0.215 -0.194 -0.048 -0.267 -0.187 -0.173
+ 6.655 0.808 -0.070 0.075 -0.006 0.036 0.008 -0.100 -0.135 -0.119 -0.268 -0.101 -0.096
+ 6.618 0.946 0.355 0.252 -0.018 -0.227 -0.151 -0.120 -0.041 -0.279 -0.444 -0.184 -0.233
+ 6.499 1.130 0.415 0.337 -0.045 -0.219 0.004 -0.105 -0.102 -0.185 -0.317 -0.148 -0.171
+ 6.759 0.605 -0.069 0.263 -0.248 -0.224 -0.291 -0.240 -0.085 -0.138 -0.100 0.142 -0.162
+ 7.888 0.415 -0.048 0.299 -0.420 -0.283 -0.368 -0.290 -0.210 -0.218 -0.045 0.439 -0.171
+ 8.335 0.107 -0.180 0.308 -0.743 -0.462 -0.410 -0.035 -0.001 -0.037 -0.123 0.603 -0.163
+ 8.685 0.025 -0.242 0.428 -0.551 -0.648 -0.497 -0.232 -0.156 -0.144 -0.080 0.587 -0.214
+ 8.807 -0.089 -0.273 0.463 -0.468 -0.811 -0.597 -0.067 -0.215 -0.194 0.044 0.624 -0.081
+ 8.894 -0.179 -0.152 0.432 -0.610 -0.694 -0.621 -0.290 -0.139 -0.258 0.043 0.596 -0.230
+ 8.788 -0.137 -0.124 0.227 -0.689 -0.632 -0.455 -0.117 -0.002 -0.161 0.020 0.521 -0.182
+ 8.499 -0.023 -0.104 0.054 -0.458 -0.653 -0.332 -0.064 -0.047 -0.103 0.075 0.351 -0.378
+ 8.082 0.017 0.110 0.221 -0.377 -0.693 -0.384 -0.034 0.005 -0.079 0.060 0.385 -0.155
+ 8.295 0.522 0.006 0.085 -0.345 -0.350 -0.301 -0.177 -0.116 -0.122 0.012 0.256 -0.287
+ 7.805 0.556 0.194 0.113 -0.236 -0.471 -0.416 -0.213 -0.165 -0.264 -0.108 0.304 -0.195
+ 7.538 0.407 0.282 0.134 -0.099 -0.280 -0.137 -0.047 -0.278 -0.287 -0.308 0.091 -0.196
+ 7.284 0.406 0.381 0.300 -0.298 -0.454 -0.278 -0.139 -0.198 -0.203 -0.114 0.001 -0.123
+ 7.166 0.281 0.398 0.139 -0.185 -0.414 -0.395 -0.095 -0.060 -0.299 -0.061 0.345 -0.113
+ 7.354 0.293 0.482 0.105 -0.170 -0.243 -0.171 0.046 -0.057 -0.241 -0.079 0.191 -0.148
+ 8.464 0.511 -0.079 0.238 0.136 -0.167 -0.005 -0.170 -0.175 -0.214 -0.234 0.051 -0.214
+ 8.956 0.577 -0.105 0.067 0.089 -0.098 0.112 -0.134 -0.106 -0.345 -0.347 0.056 -0.241
+ 7.536 0.422 0.509 -0.066 -0.211 -0.353 -0.061 -0.079 -0.299 -0.064 -0.151 0.020 0.018
+ 7.650 0.289 0.591 -0.030 -0.145 -0.207 0.142 -0.039 -0.241 -0.221 -0.230 -0.049 -0.224
+ 7.388 0.072 0.324 0.068 -0.065 -0.236 -0.089 -0.113 -0.143 -0.079 -0.227 0.151 -0.108
+ 7.211 0.006 0.421 -0.182 0.037 -0.114 -0.089 -0.042 -0.138 -0.162 -0.055 -0.090 -0.123
+ 7.279 -0.057 0.377 -0.038 0.199 -0.267 -0.127 -0.305 -0.179 -0.194 -0.181 -0.144 -0.054
+ 7.045 -0.223 0.150 0.160 0.063 -0.435 -0.146 0.068 -0.070 -0.184 -0.202 -0.084 -0.167
+ 9.655 0.145 -0.061 0.373 -0.137 -0.615 0.017 -0.094 0.144 -0.426 -0.113 -0.154 -0.269
+ 10.259 0.563 -0.216 0.204 -0.011 -0.432 0.127 -0.112 0.148 -0.462 -0.214 -0.209 -0.261
+ 9.916 1.138 -0.297 0.005 0.203 -0.530 0.054 0.169 -0.207 -0.343 -0.314 -0.259 -0.264
+ 10.244 1.123 -0.287 0.014 0.213 -0.499 -0.133 0.432 -0.296 -0.384 -0.303 -0.285 -0.295
+ 11.297 1.094 -0.329 -0.075 -0.048 -0.457 -0.276 0.206 -0.186 -0.275 -0.139 -0.145 -0.195
+ 12.395 1.545 -0.434 -0.373 -0.122 -0.525 -0.440 0.062 -0.163 -0.279 -0.127 -0.100 -0.183
+ 12.240 2.313 -0.672 -0.756 -0.350 -0.536 -0.524 0.199 -0.251 -0.327 -0.231 0.134 0.103
+ 12.943 2.392 -0.585 -0.888 -0.282 -0.360 -0.810 0.434 -0.366 -0.349 -0.330 0.090 0.120
+ 12.881 2.618 -0.685 -0.968 -0.295 -0.259 -0.828 0.351 -0.289 -0.248 -0.340 -0.028 0.207
+ 13.143 2.457 -0.628 -1.045 -0.287 -0.066 -0.855 0.163 -0.229 -0.186 -0.272 -0.114 0.256
+ 13.567 2.293 -0.697 -1.029 -0.181 -0.110 -0.780 0.064 -0.333 -0.103 -0.274 -0.002 0.128
+ 13.307 2.615 -0.981 -1.009 -0.022 -0.082 -0.912 0.068 -0.464 0.040 -0.253 0.021 0.049
+ 13.403 2.376 -0.856 -0.985 0.060 -0.125 -0.873 -0.106 -0.367 0.046 -0.238 0.081 -0.086
+ 13.436 2.193 -0.924 -0.813 0.178 -0.083 -0.966 -0.226 -0.275 -0.015 -0.166 -0.020 -0.137
+ 12.950 2.104 -1.012 -0.534 0.256 0.117 -1.167 -0.291 -0.127 -0.119 -0.185 -0.103 -0.165
+ 12.418 1.584 -0.838 -0.421 0.510 0.030 -1.180 -0.297 0.015 -0.299 -0.198 -0.166 -0.142
+ 11.406 1.248 -0.761 -0.206 0.502 0.011 -1.076 -0.137 0.161 -0.255 -0.368 -0.196 -0.171
+ 10.277 0.834 -0.665 0.294 0.651 -0.088 -0.888 0.034 0.164 -0.451 -0.490 0.027 -0.149
+ 10.144 0.749 -0.481 0.450 0.613 -0.348 -1.005 0.199 0.019 -0.455 -0.338 0.112 -0.116
+ 11.904 0.295 -0.534 0.405 0.478 -0.317 -0.840 0.283 -0.433 -0.564 -0.104 0.023 -0.137
+ 13.489 0.410 -0.453 0.372 0.349 -0.458 -1.208 0.387 -0.511 -0.490 -0.117 0.030 -0.239
+ 13.889 0.644 -0.658 0.274 0.027 -0.580 -1.195 0.407 -0.281 -0.267 -0.049 0.131 -0.255
+ 13.318 1.073 -0.833 0.156 0.102 -0.558 -1.192 0.350 -0.121 -0.228 -0.167 0.174 -0.267
+ 11.720 0.883 -0.609 0.334 -0.001 -0.620 -0.888 0.086 0.094 0.003 -0.389 0.185 -0.014
+ 10.936 0.857 -0.390 0.305 0.118 -0.347 -0.433 -0.470 0.151 0.208 -0.789 0.106 0.056
+ 10.856 0.873 -0.378 0.179 0.128 -0.263 -0.359 -0.579 0.125 0.285 -0.738 0.030 -0.052
+ 10.776 0.966 -0.486 0.143 0.032 -0.298 -0.139 -0.572 0.068 0.217 -0.532 0.099 -0.216
+ 10.780 0.916 -0.429 0.214 -0.198 -0.264 -0.031 -0.478 -0.127 0.172 -0.405 0.214 -0.241
+ 11.502 0.727 -0.330 -0.049 -0.129 -0.260 -0.043 -0.406 -0.133 0.118 -0.406 0.232 -0.259
+ 11.779 1.092 -0.612 -0.179 -0.078 -0.232 -0.187 -0.274 -0.103 0.055 -0.391 0.247 -0.138
+ 11.810 1.219 -0.608 -0.010 -0.268 -0.425 -0.113 -0.180 0.006 -0.171 -0.222 0.065 -0.114
+ 11.837 0.635 -0.490 0.274 -0.459 -0.489 -0.043 -0.097 -0.095 0.055 -0.272 -0.021 0.002
+ 11.644 0.714 -0.485 0.223 -0.380 -0.600 -0.161 -0.076 -0.015 0.037 -0.153 -0.057 0.011
+ 11.115 1.399 -0.779 0.156 -0.518 -0.763 -0.023 -0.125 0.148 0.029 -0.057 -0.173 -0.070
+ 10.908 1.912 -1.058 -0.028 -0.479 -0.939 0.127 -0.077 0.074 0.083 -0.199 -0.067 -0.155
+ 10.868 1.906 -1.112 -0.086 -0.545 -0.970 0.183 0.018 0.093 0.139 -0.274 -0.039 -0.182
+ 10.895 1.754 -1.187 0.002 -0.460 -0.852 0.256 0.001 0.065 0.037 -0.263 -0.065 -0.078
+ 10.978 1.892 -1.353 0.140 -0.593 -0.751 0.235 0.050 0.047 -0.032 -0.305 -0.046 -0.066
+ 10.878 1.899 -1.309 0.020 -0.390 -0.780 0.150 0.135 -0.047 -0.101 -0.198 -0.085 -0.078
+ 12.340 0.862 -0.655 -0.505 -0.560 -0.513 0.076 0.377 -0.411 -0.060 0.159 -0.225 0.056
+ 12.526 0.844 -0.652 -0.604 -0.540 -0.378 -0.012 0.258 -0.379 0.057 0.173 -0.231 -0.110
+ 11.893 0.993 -0.464 -0.802 -0.581 -0.232 -0.376 -0.049 -0.453 0.066 -0.038 -0.134 0.026
+ 9.518 0.907 -0.203 -0.363 -0.025 -0.293 -0.234 -0.082 -0.392 0.072 -0.038 -0.017 0.037
+ 9.580 0.169 -0.153 -0.248 0.218 -0.399 -0.115 -0.133 -0.073 -0.037 -0.143 -0.084 -0.133
+ 10.673 -0.248 -0.537 -0.487 0.143 -0.473 -0.278 -0.151 -0.235 -0.046 -0.115 0.021 0.008
+ 9.455 -1.039 0.227 -0.387 -0.035 -0.315 -0.200 -0.281 0.009 -0.007 -0.103 -0.164 0.024
+ 9.868 -1.677 0.511 -0.253 0.222 -0.244 -0.329 -0.160 -0.068 -0.134 -0.131 -0.127 -0.103
+ 10.079 -1.593 0.551 -0.455 0.277 -0.271 -0.143 -0.079 -0.030 0.057 -0.062 0.044 -0.106
+ 9.577 -1.740 0.318 -0.459 0.119 -0.285 0.070 0.082 0.059 -0.064 -0.289 -0.009 0.009
+ 8.071 -1.443 0.439 -0.708 0.041 -0.512 -0.267 0.156 0.037 -0.093 -0.229 -0.006 -0.212
+ 6.730 -0.791 0.644 -0.183 -0.036 -0.383 0.014 0.017 -0.031 0.096 -0.067 -0.175 -0.168
+ 6.076 -0.203 0.240 -0.146 -0.033 -0.290 -0.063 -0.108 0.066 0.062 0.069 -0.060 -0.090
+ 6.361 -0.399 0.171 -0.169 0.261 -0.224 -0.179 -0.176 -0.093 0.051 -0.139 0.073 -0.017
+ 9.514 -1.057 -0.077 -0.344 0.073 -0.322 -0.170 0.051 -0.295 -0.128 -0.293 0.087 -0.257
+ 11.016 -1.129 0.084 -0.400 0.002 -0.417 -0.360 -0.046 -0.310 -0.166 -0.216 0.053 -0.079
+ 10.720 -1.006 0.167 -0.216 -0.119 -0.320 -0.500 -0.081 0.211 -0.116 -0.098 -0.027 0.185
+ 12.084 0.612 -0.449 -0.001 -0.176 -0.283 -0.518 -0.241 -0.070 -0.109 -0.186 -0.213 0.124
+ 11.536 1.215 -0.905 0.219 -0.190 -0.420 -0.337 -0.443 -0.076 -0.008 -0.286 0.005 -0.034
+ 10.706 1.046 -0.800 0.188 -0.103 -0.412 -0.192 -0.441 -0.130 0.007 -0.125 -0.072 -0.150
+ 9.599 0.652 -0.366 0.474 0.127 -0.360 -0.071 -0.317 -0.222 -0.043 -0.156 -0.114 -0.377
+ 9.645 0.659 -0.409 0.594 0.181 -0.363 -0.236 -0.365 -0.240 0.074 -0.122 -0.005 -0.422
+ 9.557 0.794 -0.539 0.597 0.229 -0.383 -0.263 -0.399 -0.205 -0.054 -0.026 -0.133 -0.348
+ 9.410 0.937 -0.578 0.508 0.239 -0.381 -0.238 -0.299 -0.249 -0.144 0.040 -0.233 -0.361
+ 11.073 0.976 -0.851 0.035 0.268 -0.463 -0.552 -0.229 -0.122 0.023 -0.041 -0.327 0.007
+ 11.842 0.998 -1.162 0.414 -0.072 -0.602 -0.691 -0.056 -0.027 -0.032 -0.210 -0.027 0.124
+ 12.160 0.721 -0.888 0.391 -0.168 -0.820 -0.615 0.054 -0.110 -0.057 -0.141 0.130 0.027
+ 12.459 0.503 -0.657 0.366 -0.249 -0.895 -0.512 0.093 -0.261 -0.042 -0.066 0.145 -0.113
+ 12.435 0.546 -0.577 0.372 -0.263 -0.879 -0.414 -0.026 -0.335 -0.047 -0.069 0.135 -0.192
+ 12.178 0.205 -0.161 0.476 -0.345 -0.690 -0.392 -0.055 -0.404 -0.140 -0.150 0.147 -0.233
+ 11.061 0.123 0.096 0.445 -0.525 -0.675 -0.391 -0.113 -0.419 -0.206 -0.062 0.124 -0.206
+ 10.571 0.192 -0.196 0.424 -0.303 -0.456 -0.212 -0.376 -0.328 -0.217 -0.146 -0.087 -0.011
+ 8.452 0.060 -0.411 0.309 -0.215 -0.453 -0.029 -0.266 -0.152 -0.063 -0.139 -0.084 -0.018
+ 6.252 0.005 0.097 0.154 -0.099 -0.519 -0.492 -0.131 -0.069 0.019 -0.086 -0.080 -0.221
+ 7.384 -0.384 -0.131 0.165 -0.102 -0.507 -0.189 -0.151 -0.120 0.119 -0.112 0.076 0.004
+ 11.055 -0.984 -0.567 0.146 -0.059 -0.384 -0.164 -0.307 -0.212 -0.002 -0.190 0.042 -0.038
+ 11.366 -0.584 -0.354 0.061 -0.147 -0.341 -0.341 -0.478 -0.269 -0.039 -0.261 0.105 -0.039
+ 11.203 0.256 0.167 0.547 -0.311 -0.663 -0.478 -0.090 -0.529 -0.117 -0.223 -0.032 -0.165
+ 12.458 0.528 0.022 0.188 -0.369 -0.512 -0.902 0.216 -0.683 0.018 -0.278 0.127 -0.143
+ 12.429 0.898 -0.514 0.022 -0.064 -0.789 -0.877 0.232 -0.512 0.006 -0.246 0.194 -0.061
+ 12.033 0.816 -0.482 0.037 -0.119 -0.845 -0.801 0.091 -0.302 -0.019 -0.263 0.268 -0.094
+ 11.169 0.698 -0.219 -0.123 -0.094 -0.695 -0.830 -0.134 -0.310 0.121 -0.505 0.204 0.130
+ 8.906 0.783 0.143 0.076 0.071 -0.376 -0.298 -0.167 -0.242 -0.085 -0.224 -0.132 -0.040
+ 8.624 0.112 0.294 0.219 -0.093 -0.321 -0.353 0.121 -0.353 -0.141 -0.031 -0.114 -0.041
+ 11.083 -0.345 -0.700 -0.096 -0.180 -0.618 -0.360 0.301 -0.396 -0.218 0.039 0.033 -0.088
+ 11.921 -0.036 -0.479 0.132 0.006 -0.594 -0.472 0.263 -0.328 -0.220 -0.194 0.005 -0.147
+ 11.583 0.311 -0.677 -0.112 0.317 -0.023 -0.420 0.286 -0.117 -0.143 -0.235 -0.089 -0.041
+ 12.188 -0.526 -0.729 -0.357 0.125 0.211 0.017 0.105 -0.049 -0.177 -0.110 -0.122 -0.029
+ 11.546 -0.333 -0.632 -0.382 0.091 0.083 0.057 0.108 -0.416 -0.201 0.098 -0.253 0.137
+ 11.809 0.446 -0.296 -0.030 0.084 0.076 0.018 0.093 -0.461 -0.282 -0.291 -0.266 -0.010
+ 12.049 -0.077 -0.456 0.060 0.097 0.303 -0.167 0.212 -0.462 -0.046 0.095 -0.573 0.054
+ 12.188 -0.532 -0.795 -0.136 -0.351 0.239 -0.172 0.271 -0.447 -0.061 0.350 -0.527 0.158
+ 11.579 -0.329 -0.528 -0.115 -0.212 0.296 -0.095 0.279 -0.524 -0.020 0.108 -0.537 -0.128
+ 11.373 0.388 -0.425 -0.335 -0.197 0.256 -0.050 0.335 -0.629 -0.113 -0.256 -0.416 -0.249
+ 11.384 1.145 -0.298 -0.321 -0.407 -0.099 -0.125 0.124 -0.479 0.089 -0.116 -0.270 -0.229
+ 11.704 1.851 -0.638 -0.988 -0.648 -0.070 -0.249 0.151 -0.412 -0.112 -0.025 -0.087 -0.101
+ 11.961 2.073 -1.194 -0.956 -0.295 -0.240 -0.677 0.575 -0.569 -0.216 0.235 -0.095 -0.296
+ 11.896 2.007 -1.234 -0.958 -0.312 -0.189 -0.667 0.463 -0.580 -0.141 0.290 -0.079 -0.241
+ 12.043 1.869 -1.176 -1.050 -0.299 -0.139 -0.736 0.351 -0.455 -0.120 0.241 -0.035 -0.180
+ 12.256 1.888 -1.280 -1.015 -0.190 -0.091 -0.858 0.264 -0.360 -0.116 0.217 -0.147 -0.038
+ 12.024 2.106 -1.368 -1.114 0.005 -0.079 -0.929 0.181 -0.313 0.026 0.022 -0.136 0.100
+ 11.510 2.123 -1.319 -1.133 0.002 -0.011 -0.955 0.080 -0.316 0.108 -0.013 -0.035 0.003
+ 11.644 1.822 -1.133 -1.278 0.039 -0.044 -0.994 -0.028 -0.174 0.118 0.012 -0.052 -0.016
+ 11.805 1.913 -1.166 -1.195 0.003 0.061 -1.151 -0.083 -0.119 0.135 -0.037 -0.109 0.103
+ 11.887 1.872 -1.242 -1.118 0.018 0.084 -1.112 -0.172 -0.087 0.101 0.008 -0.180 0.087
+ 11.519 1.922 -1.323 -1.045 0.063 -0.004 -1.123 -0.121 -0.123 0.171 -0.026 -0.186 0.092
+ 11.207 2.032 -1.447 -0.986 0.136 -0.072 -1.173 -0.195 -0.020 0.154 -0.000 -0.183 0.124
+ 11.749 1.859 -1.472 -0.865 0.186 -0.177 -1.116 -0.297 0.045 0.097 -0.102 -0.138 0.092
+ 11.911 1.659 -1.346 -0.776 0.175 -0.173 -1.214 -0.204 0.039 0.051 -0.133 -0.193 0.144
+ 11.616 1.527 -1.299 -0.665 0.167 -0.156 -1.339 -0.073 0.108 -0.131 -0.053 -0.123 0.062
+ 11.632 1.363 -1.236 -0.566 0.193 -0.193 -1.409 -0.077 0.064 -0.151 -0.096 -0.058 0.085
+ 12.021 1.306 -1.191 -0.442 0.146 -0.142 -1.434 -0.048 0.046 -0.298 -0.054 -0.144 0.170
+ 12.105 1.181 -1.169 -0.259 0.080 -0.078 -1.454 0.037 0.040 -0.417 -0.067 -0.139 0.105
+ 11.883 0.971 -1.105 -0.062 0.175 -0.268 -1.306 -0.017 0.088 -0.510 -0.125 -0.031 0.049
+ 11.715 0.867 -1.033 -0.024 0.260 -0.407 -1.283 -0.031 0.064 -0.624 -0.065 -0.035 -0.025
+ 11.505 0.772 -0.894 0.133 0.268 -0.299 -1.209 0.110 -0.072 -0.584 -0.201 0.008 -0.170
+ 9.212 0.422 -0.779 0.376 0.554 -0.274 -0.902 0.364 -0.178 -0.401 -0.168 0.175 -0.252
+ 9.600 -0.449 -0.577 0.454 0.346 -0.252 -0.299 0.192 -0.194 -0.215 -0.207 -0.086 -0.190
+ 8.643 -0.213 -0.203 0.298 0.556 -0.348 -0.248 0.188 -0.134 -0.345 -0.074 -0.012 -0.025
+ 8.178 -0.202 0.135 0.174 0.443 -0.195 -0.499 0.181 -0.123 -0.265 0.051 0.003 0.024
+ 10.043 -0.458 -0.380 0.273 0.020 -0.222 -0.251 0.000 -0.175 -0.129 -0.141 -0.047 -0.133
+ 12.117 -0.439 -0.442 -0.271 -0.307 -0.480 -0.120 -0.028 -0.144 -0.257 -0.245 -0.055 -0.147
+ 11.388 -0.361 -0.106 0.082 -0.270 -0.656 -0.206 -0.117 0.082 -0.375 -0.123 -0.123 -0.089
+ 11.366 -0.415 -0.559 0.142 0.151 -0.337 0.055 0.138 0.148 -0.602 -0.144 -0.124 -0.142
+ 11.111 -0.212 -1.014 0.226 0.102 -0.576 -0.016 0.190 0.033 -0.368 -0.085 -0.047 -0.070
+ 11.276 -0.241 -0.946 0.202 -0.009 -0.355 -0.049 0.143 -0.039 -0.137 -0.050 -0.004 -0.001
+ 11.297 -0.099 -0.907 0.010 -0.000 -0.344 -0.192 0.340 0.122 -0.191 0.085 0.133 -0.257
+ 11.005 -0.437 -0.734 -0.012 -0.134 -0.252 -0.257 0.038 0.127 -0.301 -0.227 0.322 -0.261
+ 10.398 -0.531 -0.570 0.284 0.140 -0.223 -0.212 0.123 0.138 -0.315 -0.395 -0.005 -0.205
+ 9.986 -0.196 -0.318 0.351 0.335 0.003 -0.185 0.273 0.123 -0.312 -0.446 -0.260 -0.334
+ 9.924 -0.590 -0.738 0.179 0.057 -0.087 -0.242 0.204 -0.157 -0.158 -0.185 0.034 -0.140
+ 9.982 -0.656 -0.784 0.095 0.236 0.015 -0.181 0.131 0.097 -0.226 -0.231 -0.039 -0.218
+ 9.377 -0.648 -0.427 0.117 0.391 -0.207 -0.254 0.175 0.002 -0.121 -0.254 0.191 0.011
+ 8.852 -0.535 -0.299 0.040 0.127 -0.217 -0.227 0.226 -0.060 -0.141 -0.101 0.277 0.011
+ 8.654 -0.474 -0.441 0.085 0.411 -0.108 -0.050 0.369 0.100 -0.256 -0.456 0.065 -0.035
+ 9.141 -0.263 -0.256 0.141 0.326 -0.425 -0.287 0.050 0.103 -0.136 -0.491 0.055 -0.054
+ 9.236 0.243 0.260 0.224 -0.110 -0.507 -0.468 -0.083 0.162 -0.044 -0.484 0.212 -0.240
+ 6.025 0.303 0.370 0.194 -0.140 -0.327 -0.415 -0.190 0.150 0.049 -0.300 0.208 -0.259
+ 5.825 0.722 0.298 0.124 -0.169 -0.175 -0.225 0.123 -0.110 -0.098 -0.189 -0.052 -0.079
+ 5.599 0.383 0.360 -0.160 -0.233 -0.086 -0.253 0.001 0.034 0.054 -0.127 0.030 0.109
+ 4.812 -0.006 0.113 -0.055 -0.058 0.097 -0.071 0.070 -0.082 0.087 -0.072 -0.221 -0.033
+ 4.782 0.069 -0.030 0.025 -0.039 -0.124 -0.241 -0.017 0.003 0.074 0.014 -0.095 -0.025
+ 4.525 -0.005 -0.001 0.050 0.014 0.044 -0.344 -0.090 -0.056 0.033 0.055 0.005 -0.052
+ 8.889 0.432 -0.993 -0.060 -0.325 -0.395 -0.217 -0.242 0.086 -0.091 -0.110 -0.117 -0.005
+ 11.861 0.126 -0.902 -0.062 -0.305 -0.492 -0.262 -0.286 0.347 -0.100 -0.111 -0.075 0.011
+ 12.307 -0.221 -0.720 -0.291 0.067 -0.301 -0.117 -0.166 0.285 -0.170 -0.274 0.063 -0.076
+ 13.095 -0.400 -0.244 -0.110 0.107 -0.283 -0.129 -0.022 -0.203 -0.365 -0.305 -0.081 -0.106
+ 13.774 -0.071 -0.170 -0.108 0.188 -0.504 -0.192 0.074 -0.205 -0.252 -0.279 -0.153 -0.318
+ 12.786 -0.298 -0.222 -0.029 0.375 -0.198 -0.041 -0.104 -0.290 -0.016 -0.255 0.069 -0.215
+ 12.376 -0.469 -0.665 0.009 0.383 -0.022 -0.046 -0.250 -0.257 0.052 -0.091 0.074 -0.215
+ 12.305 -0.595 -1.029 -0.138 0.410 -0.158 -0.178 -0.096 -0.108 0.228 -0.026 0.012 -0.141
+ 11.930 -0.902 -1.162 -0.268 0.053 -0.477 -0.340 -0.086 0.238 0.297 0.105 0.020 -0.171
+ 11.874 -0.928 -1.055 -0.244 0.148 -0.506 -0.365 0.006 0.423 0.076 0.135 0.046 -0.192
+ 11.560 -1.216 -1.025 -0.258 0.163 -0.446 -0.375 -0.120 0.417 0.135 0.131 0.205 -0.072
+ 11.225 -0.970 -0.769 -0.185 0.192 -0.362 -0.463 -0.292 0.328 0.127 -0.054 0.015 -0.203
+ 11.269 -0.845 -0.615 -0.067 0.312 -0.437 -0.374 -0.246 0.259 0.190 0.027 -0.128 -0.173
+ 11.200 -0.933 -0.776 -0.172 0.167 -0.335 -0.343 -0.154 0.200 0.305 0.135 -0.228 -0.092
+ 11.062 -1.189 -0.881 -0.259 0.118 -0.627 -0.310 -0.115 0.246 0.247 0.121 -0.060 -0.209
+ 10.890 -1.063 -0.856 -0.107 0.177 -0.471 -0.163 -0.089 0.143 0.173 0.280 -0.137 -0.075
+ 10.755 -1.333 -1.036 -0.417 0.206 -0.556 -0.199 0.016 0.152 0.207 0.225 -0.056 0.031
+ 10.664 -1.154 -0.944 -0.346 0.261 -0.515 -0.237 -0.013 0.123 0.253 0.175 -0.051 -0.046
+ 10.538 -1.232 -0.980 -0.456 0.086 -0.409 -0.175 0.003 0.012 0.337 0.256 -0.154 -0.029
+ 10.693 -1.224 -0.902 -0.330 0.158 -0.617 -0.394 -0.257 -0.109 0.137 0.301 -0.126 -0.156
+ 10.819 -1.177 -1.118 -0.252 0.252 -0.635 -0.392 -0.016 -0.072 -0.038 0.243 0.025 -0.364
+ 10.681 -1.236 -1.099 -0.304 0.278 -0.716 -0.500 -0.033 0.041 -0.002 0.005 -0.006 -0.192
+ 10.581 -1.010 -1.044 -0.382 0.230 -0.522 -0.319 -0.025 0.165 -0.061 -0.125 -0.008 -0.135
+ 10.708 -0.916 -1.117 -0.261 0.188 -0.671 -0.194 0.096 0.167 -0.133 -0.215 -0.149 -0.054
+ 10.444 -1.135 -1.079 -0.356 -0.136 -0.590 -0.186 -0.090 0.083 -0.072 0.011 -0.090 -0.065
+ 10.394 -1.094 -0.990 -0.350 0.102 -0.446 -0.218 -0.130 0.177 0.095 -0.241 -0.176 -0.209
+ 10.313 -0.968 -0.911 -0.290 -0.069 -0.505 -0.258 -0.033 -0.059 -0.179 -0.198 -0.136 -0.163
+ 10.354 -0.932 -0.901 -0.172 0.089 -0.670 -0.288 -0.123 -0.059 -0.227 -0.152 -0.063 -0.120
+ 10.251 -0.825 -0.891 -0.177 0.047 -0.593 -0.425 -0.121 -0.035 -0.209 -0.200 -0.013 -0.074
+ 10.116 -0.743 -0.993 -0.259 -0.006 -0.504 -0.340 -0.218 -0.014 -0.195 -0.235 -0.075 -0.073
+ 10.089 -0.750 -0.883 -0.203 0.067 -0.558 -0.106 -0.161 -0.115 -0.097 -0.095 0.014 -0.181
+ 10.102 -0.629 -0.777 -0.250 0.029 -0.577 -0.146 -0.149 -0.024 -0.138 -0.185 -0.021 -0.156
+ 10.065 -0.668 -0.737 -0.336 0.019 -0.584 -0.170 -0.126 -0.044 -0.272 -0.041 -0.056 -0.048
+ 10.062 -0.653 -0.805 -0.357 -0.011 -0.634 -0.158 -0.252 -0.039 -0.157 -0.029 -0.073 -0.067
+ 10.047 -0.589 -0.743 -0.307 -0.014 -0.627 -0.309 -0.117 -0.002 -0.019 0.024 -0.055 -0.087
+ 9.778 -0.881 -0.804 -0.402 -0.182 -0.537 -0.330 -0.025 0.066 -0.139 -0.127 0.126 -0.086
+ 9.800 -0.698 -0.601 -0.285 -0.007 -0.605 -0.278 -0.011 0.205 -0.266 -0.087 0.023 -0.095
+ 10.305 -0.250 -0.220 -0.163 0.044 -0.392 -0.152 -0.090 0.006 -0.234 -0.167 0.054 -0.172
+ 10.724 0.088 -0.203 -0.027 0.187 -0.331 -0.205 0.007 0.011 -0.330 -0.301 0.078 -0.089
+ 10.006 -0.451 -0.653 -0.249 0.021 -0.437 -0.161 0.036 0.191 -0.279 -0.078 0.027 -0.123
+ 9.652 -0.647 -0.723 -0.299 -0.184 -0.549 -0.339 -0.124 0.134 -0.096 -0.039 -0.014 -0.116
+ 9.372 -0.588 -0.601 -0.357 -0.063 -0.552 -0.253 0.002 0.190 -0.077 -0.095 0.062 -0.196
+ 9.334 -0.782 -0.723 -0.454 -0.019 -0.449 -0.242 0.042 0.209 0.122 -0.002 -0.057 -0.106
+ 9.385 -0.644 -0.683 -0.488 -0.372 -0.436 -0.176 0.055 0.322 0.134 0.051 -0.084 -0.094
+ 9.465 -0.491 -0.595 -0.525 -0.355 -0.607 -0.276 0.013 0.388 0.086 0.065 0.050 -0.176
+ 9.237 -0.610 -0.688 -0.385 -0.204 -0.687 -0.398 -0.052 0.327 0.073 0.208 0.062 -0.178
+ 9.257 -0.481 -0.659 -0.525 -0.238 -0.587 -0.355 0.111 0.361 0.079 0.101 0.071 -0.146
+ 9.705 -0.028 -0.360 -0.212 -0.037 -0.298 -0.326 0.066 0.366 0.010 0.033 0.071 -0.266
+ 9.529 -0.137 -0.377 -0.124 -0.006 -0.327 -0.373 -0.039 0.337 0.045 0.080 0.158 -0.148
+ 9.374 -0.400 -0.650 -0.546 -0.181 -0.253 -0.236 0.066 0.289 -0.100 -0.077 -0.077 -0.092
+ 9.149 -0.498 -0.699 -0.458 -0.255 -0.231 -0.178 0.066 0.435 -0.030 -0.178 -0.096 -0.147
+ 9.293 -0.402 -0.587 -0.253 -0.124 -0.359 -0.356 0.039 0.266 -0.090 -0.169 -0.259 -0.125
+ 8.959 -0.605 -0.715 -0.347 -0.034 -0.318 -0.291 0.060 0.131 -0.013 -0.306 -0.350 -0.118
+ 9.117 -0.366 -0.506 -0.195 0.141 -0.147 -0.140 0.107 0.108 -0.038 -0.305 -0.320 -0.325
+ 9.882 0.133 0.014 0.154 0.192 -0.120 -0.225 -0.152 -0.118 -0.097 -0.139 -0.174 -0.091
+ 9.688 -0.058 -0.095 -0.032 0.136 -0.142 -0.202 -0.066 0.031 -0.017 -0.122 -0.185 -0.135
+ 9.779 -0.424 -0.525 -0.149 0.015 -0.125 -0.367 -0.114 -0.047 -0.062 -0.066 0.033 -0.159
+ 9.802 -0.366 -0.424 -0.251 -0.172 -0.277 -0.234 -0.221 -0.059 -0.050 -0.107 0.010 -0.029
+ 10.207 -0.399 -0.129 -0.190 -0.074 -0.151 -0.168 -0.171 -0.159 -0.137 -0.112 -0.030 -0.096
+ 10.652 -0.292 -0.181 -0.171 -0.132 -0.086 -0.377 -0.317 -0.173 -0.216 -0.183 -0.136 -0.205
+ 10.597 -0.379 -0.359 -0.245 -0.128 -0.212 -0.304 -0.267 -0.047 -0.190 -0.229 -0.113 -0.108
+ 10.270 -0.358 -0.277 -0.271 -0.198 -0.102 -0.255 -0.215 0.162 0.045 -0.309 -0.184 -0.097
+ 10.180 -0.352 -0.333 -0.401 -0.048 -0.095 -0.245 -0.239 0.093 -0.084 -0.297 -0.140 -0.245
+ 10.217 -0.444 -0.388 -0.386 0.020 -0.325 -0.370 -0.082 -0.046 -0.220 -0.255 0.030 -0.133
+ 10.489 -0.455 -0.519 -0.163 -0.021 0.007 -0.173 -0.254 0.013 -0.242 -0.248 -0.097 -0.036
+ 10.627 -0.509 -0.503 -0.483 -0.267 -0.195 -0.255 -0.227 -0.067 -0.335 -0.335 -0.171 -0.088
+ 10.251 -0.739 -0.553 -0.545 -0.237 -0.246 -0.189 -0.063 0.134 -0.108 -0.193 0.002 -0.130
+ 10.011 -0.368 -0.440 -0.329 -0.135 -0.339 -0.336 -0.188 0.133 -0.202 -0.305 -0.018 -0.068
+ 10.024 -0.473 -0.298 -0.402 -0.131 -0.276 -0.309 -0.246 0.195 0.061 -0.168 -0.001 -0.021
+ 10.077 -0.358 -0.097 -0.368 -0.276 -0.458 -0.164 -0.169 0.132 0.046 -0.243 -0.198 -0.039
+ 10.067 -0.149 -0.061 -0.285 -0.091 -0.192 -0.226 -0.265 0.194 0.024 -0.096 -0.172 -0.269
+ 9.607 -0.488 -0.272 -0.428 -0.176 -0.427 -0.376 -0.197 0.368 0.089 -0.171 0.021 -0.211
+ 9.471 -0.575 -0.416 -0.426 -0.196 -0.564 -0.416 -0.229 0.333 0.019 -0.233 -0.009 -0.221
+ 9.629 -0.441 -0.374 -0.372 -0.183 -0.422 -0.325 -0.235 0.294 -0.034 -0.227 -0.036 -0.233
+ 9.746 -0.643 -0.460 -0.350 -0.321 -0.331 -0.317 0.029 0.340 -0.030 -0.247 -0.000 -0.188
+ 9.561 -0.487 -0.377 -0.242 -0.277 -0.077 -0.006 0.111 0.482 0.041 -0.277 -0.060 -0.249
+ 9.478 -0.362 -0.411 -0.125 -0.257 -0.313 -0.073 0.048 0.388 0.033 -0.358 -0.069 -0.171
+ 9.512 -0.508 -0.385 -0.056 -0.368 -0.549 -0.107 0.161 0.250 -0.001 -0.163 -0.051 -0.149
+ 8.921 -0.381 -0.289 -0.113 -0.386 -0.291 -0.211 0.112 0.308 0.141 -0.057 -0.035 -0.251
+ 11.823 0.486 -0.391 0.020 -0.079 -0.294 -0.312 0.122 -0.184 -0.056 -0.354 -0.065 -0.299
+ 13.082 0.555 -0.334 -0.010 -0.153 -0.382 -0.383 0.200 -0.218 0.022 -0.317 0.122 -0.284
+ 12.452 0.340 -0.389 -0.024 -0.146 -0.535 -0.505 0.151 -0.169 0.113 -0.206 0.294 -0.166
+ 9.849 0.321 -0.100 -0.155 -0.030 -0.457 -0.607 0.187 -0.001 0.126 -0.269 0.066 -0.132
+ 9.111 -0.129 -0.226 -0.182 -0.257 -0.605 -0.364 0.050 0.241 0.147 -0.262 0.024 -0.161
+ 8.990 -0.298 -0.403 -0.419 -0.171 -0.620 -0.430 -0.067 0.240 0.081 -0.282 0.093 -0.094
+ 9.149 -0.294 -0.323 -0.355 -0.175 -0.489 -0.281 0.012 0.232 -0.097 -0.165 0.102 0.061
+ 9.142 -0.407 -0.335 -0.439 -0.182 -0.642 -0.166 0.141 0.275 -0.293 -0.267 0.209 0.114
+ 9.117 -0.508 -0.274 -0.478 -0.238 -0.538 -0.211 0.225 0.063 -0.257 -0.152 0.123 0.040
+ 8.986 -0.646 -0.281 -0.564 -0.122 -0.450 -0.286 0.128 0.174 -0.278 -0.336 0.043 0.051
+ 8.454 -0.884 -0.373 -0.446 -0.189 -0.600 -0.214 0.109 0.361 -0.268 -0.523 0.042 0.104
+ 8.359 -0.881 -0.447 -0.359 -0.115 -0.222 -0.169 0.210 0.240 -0.398 -0.382 -0.126 0.036
+ 8.426 -0.849 -0.490 -0.232 -0.012 -0.492 -0.052 0.180 0.323 -0.279 -0.427 -0.277 0.043
+ 8.492 -0.961 -0.512 -0.311 0.020 -0.337 -0.057 0.216 0.308 -0.246 -0.310 -0.186 0.067
+ 8.476 -0.825 -0.338 -0.234 -0.099 -0.385 -0.075 0.204 0.278 -0.176 -0.412 -0.250 -0.103
+ 7.978 -0.953 -0.473 -0.352 -0.004 -0.346 -0.112 0.107 0.224 -0.354 -0.443 -0.341 -0.167
+ 7.603 -1.051 -0.566 -0.416 -0.007 -0.438 -0.092 0.026 0.382 -0.189 -0.305 -0.323 -0.149
+ 7.693 -0.997 -0.462 -0.356 0.024 -0.413 -0.226 -0.035 0.546 -0.016 -0.260 -0.228 -0.182
+ 7.534 -1.005 -0.487 -0.320 0.012 -0.531 -0.146 0.130 0.523 -0.165 -0.408 -0.298 -0.202
+ 7.790 -0.686 -0.399 -0.525 0.093 -0.578 -0.296 -0.038 0.552 -0.006 -0.333 -0.181 -0.043
+ 7.523 -0.780 -0.388 -0.439 0.044 -0.518 -0.250 0.066 0.566 0.126 -0.406 -0.180 0.077
+ 7.474 -0.691 -0.495 -0.505 0.105 -0.329 -0.383 0.108 0.457 0.115 -0.159 -0.125 -0.040
+ 6.849 -1.102 -0.697 -0.638 0.108 -0.242 -0.365 0.051 0.512 0.038 -0.000 -0.132 -0.198
+ 6.857 -0.889 -0.479 -0.425 0.265 -0.418 -0.396 -0.095 0.302 -0.073 -0.053 -0.084 -0.184
+ 6.695 -0.926 -0.378 -0.324 0.403 -0.249 -0.186 0.061 0.343 -0.279 -0.062 -0.096 -0.190
+ 7.020 -0.557 -0.152 -0.295 0.305 -0.372 -0.247 -0.193 0.276 -0.038 0.030 0.055 -0.017
+ 7.592 -0.468 -0.110 -0.125 0.175 -0.194 -0.096 -0.276 -0.106 -0.252 -0.103 0.099 0.040
+ 7.676 -0.489 -0.164 -0.140 0.058 -0.052 -0.355 -0.400 -0.075 -0.250 0.005 0.177 0.042
+ 7.510 -0.439 -0.447 -0.096 0.142 0.088 -0.222 -0.462 -0.081 -0.248 -0.011 -0.002 -0.015
+ 7.003 -0.260 -0.269 -0.251 0.151 -0.005 -0.253 -0.147 -0.242 -0.306 0.045 0.092 0.008
+ 6.447 -0.086 -0.015 -0.205 0.275 -0.288 -0.386 -0.001 -0.055 -0.166 0.008 0.228 0.083
+ 6.222 -0.027 0.154 -0.254 0.325 -0.107 -0.246 0.112 0.118 -0.039 -0.271 0.021 -0.077
+ 6.083 -0.208 -0.142 -0.103 0.061 0.050 -0.239 -0.192 0.113 0.090 -0.136 0.134 0.164
+ 6.335 0.090 -0.126 0.036 0.068 0.104 -0.450 -0.217 -0.055 -0.081 -0.103 -0.021 -0.079
+ 6.757 0.096 0.190 0.080 0.020 0.026 -0.270 -0.168 0.015 -0.060 -0.029 0.037 -0.024
+ 6.606 0.293 0.084 0.017 0.079 0.148 -0.334 -0.174 -0.043 0.028 -0.174 0.005 -0.034
+ 6.457 0.386 0.097 -0.089 -0.182 0.125 -0.347 -0.127 0.069 -0.078 -0.093 0.044 -0.033
+ 6.921 0.263 0.343 0.110 0.114 0.363 -0.363 -0.263 -0.264 -0.110 -0.099 -0.099 -0.083
+ 6.723 0.346 0.098 -0.166 -0.075 0.284 -0.324 -0.233 -0.391 -0.116 0.001 0.001 -0.047
+ 6.436 0.108 0.114 -0.179 -0.157 0.194 -0.433 -0.184 -0.375 -0.114 -0.122 0.078 0.088
+ 5.008 0.122 0.019 -0.063 -0.029 0.099 -0.283 -0.092 -0.066 0.171 0.058 -0.130 -0.082
+ 4.753 0.073 -0.235 0.118 -0.070 -0.021 -0.253 -0.143 -0.198 -0.111 -0.011 0.090 -0.090
+ 4.735 0.344 -0.460 0.136 -0.078 -0.239 -0.330 -0.246 -0.194 -0.020 -0.079 -0.038 0.197
+ 4.337 0.132 -0.403 0.163 -0.167 -0.083 0.126 -0.203 -0.206 0.229 0.183 -0.117 0.024
+ 5.192 -0.235 -0.225 0.240 -0.340 0.085 -0.021 -0.318 -0.028 0.050 0.082 0.188 -0.109
+ 5.883 -0.534 0.059 0.231 -0.509 -0.080 -0.257 -0.123 0.109 0.097 -0.008 0.274 -0.087
+ 5.872 -0.638 0.242 0.272 -0.485 -0.160 -0.235 -0.048 0.130 0.045 0.016 0.081 -0.176
+ 5.690 -0.600 0.250 0.278 -0.299 -0.037 -0.027 -0.290 0.119 0.196 0.052 0.041 -0.057
+ 5.932 -0.687 0.005 0.167 -0.404 -0.257 0.011 -0.228 0.015 0.094 -0.012 0.080 0.057
+ 6.609 -0.601 -0.246 0.142 -0.366 -0.203 0.223 0.025 -0.151 -0.147 -0.012 0.068 -0.097
+ 6.728 -0.494 -0.278 0.072 -0.331 -0.198 0.214 0.099 -0.076 -0.281 -0.127 -0.021 -0.072
+ 6.733 -0.318 -0.441 0.225 -0.260 -0.084 0.042 0.142 0.087 -0.168 -0.225 0.093 0.074
+ 7.291 -0.204 -0.695 0.121 -0.303 -0.245 -0.195 0.132 0.156 -0.114 -0.145 0.048 -0.182
+ 7.425 -0.202 -0.991 0.000 -0.181 -0.047 -0.142 0.140 0.256 -0.220 -0.072 0.156 -0.137
+ 7.504 -0.217 -1.227 -0.132 -0.119 0.055 -0.348 -0.001 0.123 -0.112 -0.038 0.336 0.042
+ 7.945 -0.226 -1.225 0.012 -0.160 0.100 -0.450 -0.161 0.345 -0.086 -0.129 0.242 -0.058
+ 8.085 -0.203 -1.277 0.031 -0.219 0.289 -0.536 -0.245 0.305 -0.192 -0.148 0.269 0.039
+ 8.313 -0.162 -1.290 -0.126 -0.174 0.346 -0.458 -0.235 0.375 -0.193 -0.063 0.242 -0.002
+ 8.578 -0.243 -1.099 -0.362 -0.220 0.352 -0.477 -0.272 0.230 -0.239 -0.113 0.121 -0.039
+ 8.671 -0.390 -1.085 -0.491 -0.248 0.387 -0.404 -0.154 0.350 -0.137 -0.005 0.106 0.044
+ 8.581 -0.403 -0.926 -0.456 -0.280 0.529 -0.460 -0.163 0.241 -0.190 0.108 0.045 0.010
+ 8.336 -0.436 -0.824 -0.408 -0.385 0.577 -0.385 -0.183 0.170 -0.184 0.194 0.086 -0.153
+ 8.134 -0.363 -0.680 -0.356 -0.349 0.475 -0.312 -0.143 0.191 -0.147 0.098 0.070 -0.142
+ 7.852 -0.172 -0.402 -0.243 -0.332 0.282 -0.276 -0.190 0.152 -0.056 -0.086 0.095 -0.100
+ 7.839 -0.069 -0.684 -0.048 -0.308 -0.040 -0.124 0.077 0.019 0.018 -0.088 -0.016 -0.013
+ 7.825 0.135 -0.624 0.008 -0.162 -0.184 -0.278 -0.063 0.056 0.026 -0.147 -0.131 0.018
+ 7.530 0.386 -0.564 -0.023 -0.153 -0.161 -0.347 -0.043 -0.007 0.074 -0.160 -0.108 -0.033
+ 6.906 0.373 -0.506 -0.006 -0.132 -0.069 0.028 0.057 0.057 -0.072 -0.163 -0.123 -0.169
+ 7.950 1.159 -0.143 0.103 -0.145 -0.107 -0.294 -0.084 -0.053 -0.038 -0.043 -0.139 -0.124
+ 7.842 0.978 0.000 0.064 0.013 -0.161 -0.370 0.011 -0.044 0.069 -0.036 -0.111 -0.058
+ 6.980 0.118 -0.541 0.530 0.273 -0.077 -0.202 0.111 -0.100 -0.096 -0.275 -0.154 -0.125
+ 7.087 0.257 -0.574 0.589 -0.005 -0.332 -0.220 -0.088 -0.137 -0.167 -0.113 0.086 -0.127
+ 7.223 0.266 -0.487 0.621 -0.070 -0.488 -0.408 0.019 -0.112 -0.071 -0.022 0.237 -0.035
+ 7.489 0.470 -0.514 0.581 -0.062 -0.593 -0.447 0.122 -0.052 -0.229 0.074 0.350 0.094
+ 7.192 0.059 -0.763 0.581 0.117 -0.789 -0.759 0.151 -0.027 -0.250 0.165 0.258 0.151
+ 7.283 0.300 -0.644 0.381 0.067 -0.685 -0.760 0.209 -0.025 -0.106 -0.003 0.098 0.156
+ 7.206 0.408 -0.477 0.013 -0.094 -0.661 -0.873 0.145 0.044 -0.144 -0.005 0.169 0.203
+ 6.907 0.413 -0.596 -0.046 -0.253 -0.752 -0.711 0.002 -0.165 -0.367 -0.044 0.035 0.048
+ 6.914 0.362 -0.548 0.088 -0.167 -0.601 -0.625 0.141 -0.217 -0.249 0.047 0.097 0.228
+ 7.412 -0.013 -0.273 0.452 0.031 -0.643 -0.603 -0.067 -0.216 -0.279 -0.025 0.032 -0.037
+ 7.899 -0.128 -0.187 0.556 0.104 -0.471 -0.571 -0.059 -0.187 -0.438 -0.061 0.041 -0.029
+ 7.962 0.098 -0.205 0.525 -0.058 -0.585 -0.523 -0.206 -0.100 -0.295 -0.167 0.054 0.091
+ 7.826 -0.033 -0.361 0.498 -0.207 -0.502 -0.348 -0.232 -0.107 -0.150 -0.026 0.040 -0.020
+ 7.523 -0.066 -0.485 0.493 -0.223 -0.617 -0.449 -0.298 -0.222 0.032 0.096 -0.001 0.065
+ 7.268 -0.148 -0.162 0.493 -0.487 -0.537 -0.221 -0.190 0.031 0.024 0.005 0.005 -0.011
+ 7.395 -0.151 -0.119 0.446 -0.429 -0.477 -0.240 -0.294 -0.012 -0.208 0.139 0.155 -0.250
+ 7.454 -0.374 -0.072 0.342 -0.571 -0.548 -0.209 -0.007 -0.058 -0.173 0.081 0.229 -0.326
+ 7.562 -0.243 0.053 0.179 -0.319 -0.699 -0.508 -0.101 -0.085 -0.063 -0.099 0.251 -0.225
+ 6.967 -0.226 0.129 0.158 -0.229 -0.568 -0.578 -0.090 -0.098 -0.171 -0.042 0.215 -0.182
+ 6.737 0.032 0.133 0.265 -0.161 -0.302 -0.465 0.002 -0.086 -0.445 -0.148 0.175 -0.264
+ 6.140 0.157 0.214 0.062 -0.284 -0.214 -0.398 -0.143 -0.113 -0.267 -0.042 0.145 -0.188
+ 5.649 0.128 0.077 0.062 -0.158 -0.225 -0.353 -0.103 -0.093 -0.275 -0.180 0.119 -0.081
+ 5.542 0.133 0.153 0.260 -0.059 -0.389 -0.363 -0.326 -0.185 -0.341 -0.179 -0.008 -0.076
+ 5.443 -0.060 0.175 0.251 0.052 -0.278 -0.363 -0.250 -0.190 -0.289 -0.090 0.011 -0.243
+ 5.610 0.149 0.153 0.119 0.024 -0.234 -0.365 -0.301 -0.224 -0.283 -0.209 0.008 -0.114
+ 6.011 0.059 0.232 -0.005 -0.304 -0.338 -0.523 -0.257 -0.006 -0.126 -0.137 -0.080 -0.213
+ 6.647 -0.137 0.099 0.237 -0.459 -0.280 -0.317 -0.224 0.050 0.021 0.053 -0.091 -0.183
+ 6.879 -0.223 0.147 0.296 -0.339 -0.258 -0.346 -0.371 -0.046 -0.096 0.063 0.017 -0.224
+ 6.816 -0.113 0.143 -0.176 -0.162 -0.041 -0.363 -0.414 -0.027 0.001 -0.051 -0.078 -0.166
+ 6.931 -0.209 0.189 -0.114 -0.279 -0.198 -0.579 -0.412 0.010 0.021 -0.150 -0.074 -0.062
+ 7.012 -0.238 0.005 0.037 -0.220 -0.032 -0.398 -0.481 -0.200 -0.065 -0.128 0.012 0.080
+ 7.111 0.019 0.028 -0.020 -0.298 -0.080 -0.355 -0.521 -0.233 -0.104 -0.067 0.008 -0.021
+ 6.073 0.046 0.016 0.068 -0.179 0.008 -0.263 -0.446 -0.213 -0.176 -0.195 -0.080 -0.091
+ 5.448 0.347 -0.028 0.296 -0.142 -0.242 -0.601 -0.254 0.010 -0.139 -0.166 0.050 -0.093
+ 6.058 0.193 -0.171 0.131 -0.202 -0.278 -0.685 -0.132 0.088 -0.105 -0.354 0.110 -0.121
+ 6.523 0.190 -0.473 -0.051 -0.313 -0.277 -0.760 -0.012 0.253 -0.190 -0.518 0.183 -0.272
+ 6.915 0.005 -0.546 -0.252 -0.374 -0.284 -0.722 0.073 0.309 -0.253 -0.534 0.221 -0.187
+ 6.954 -0.056 -0.806 -0.329 -0.168 -0.101 -0.652 0.102 0.042 -0.310 -0.663 0.069 -0.175
+ 7.195 -0.056 -0.855 -0.394 -0.220 -0.030 -0.640 0.056 0.123 -0.209 -0.659 0.137 -0.245
+ 7.300 -0.053 -0.843 -0.272 -0.171 0.084 -0.611 0.085 0.116 -0.223 -0.622 0.143 -0.129
+ 7.282 -0.066 -0.960 -0.256 -0.322 0.243 -0.501 -0.050 0.199 -0.297 -0.452 0.147 -0.050
+ 7.051 -0.067 -1.061 -0.206 -0.283 0.334 -0.416 -0.007 0.236 -0.424 -0.485 0.179 -0.176
+ 7.000 -0.264 -1.028 -0.387 -0.066 0.389 -0.338 0.146 0.137 -0.382 -0.598 0.340 -0.204
+ 7.277 -0.112 -0.984 -0.379 -0.096 0.284 -0.430 0.106 0.078 -0.215 -0.433 0.360 -0.175
+ 7.234 -0.116 -1.040 -0.425 -0.097 0.239 -0.442 -0.065 -0.056 -0.281 -0.511 0.330 -0.222
+ 7.261 -0.018 -1.148 -0.382 -0.174 0.214 -0.401 -0.093 -0.067 -0.197 -0.341 0.341 -0.240
+ 7.437 -0.039 -1.076 -0.456 -0.386 0.222 -0.516 -0.031 -0.044 -0.162 -0.326 0.241 -0.302
+ 7.321 -0.138 -1.168 -0.418 -0.530 -0.038 -0.542 -0.122 -0.072 -0.082 -0.327 0.313 -0.350
+ 7.094 -0.041 -1.055 -0.258 -0.358 -0.190 -0.523 0.092 -0.124 0.051 -0.213 0.426 -0.364
+ 7.099 -0.031 -1.076 -0.316 -0.228 -0.075 -0.664 0.070 -0.151 0.042 -0.218 0.393 -0.300
+ 7.119 0.040 -1.024 -0.444 -0.275 0.184 -0.450 0.029 0.081 0.026 -0.377 0.341 -0.220
+ 6.928 0.140 -0.825 -0.493 -0.261 0.151 -0.365 0.117 0.206 -0.125 -0.213 0.261 -0.327
+ 6.057 0.198 -0.513 -0.420 -0.098 0.077 -0.381 0.059 0.158 -0.038 -0.239 0.165 -0.164
+ 5.919 0.366 -0.527 -0.451 -0.208 0.000 -0.301 -0.091 0.179 -0.084 -0.212 0.172 -0.076
+ 5.924 0.217 -0.523 -0.339 -0.297 -0.054 -0.291 0.084 0.210 0.095 -0.207 0.004 -0.270
+ 5.556 0.300 -0.485 -0.345 -0.226 0.015 -0.273 0.029 0.418 0.103 -0.261 -0.025 -0.201
+ 5.100 0.388 -0.372 -0.123 -0.196 -0.034 -0.368 0.036 0.182 0.148 0.029 0.151 -0.168
+ 6.258 -0.310 -0.505 -0.155 -0.121 0.308 0.093 -0.250 0.035 -0.049 0.037 -0.016 -0.086
+ 8.539 -0.640 -0.591 -0.199 -0.249 0.251 0.102 -0.524 -0.040 0.065 0.108 0.014 -0.039
+ 9.152 -0.583 -0.649 -0.032 -0.245 0.057 -0.055 -0.553 -0.033 -0.034 -0.205 -0.068 -0.034
+ 9.318 -0.604 -0.685 -0.101 -0.258 0.078 -0.029 -0.401 0.086 0.075 0.012 0.010 0.041
+ 9.213 -0.427 -0.348 -0.166 -0.190 0.130 -0.022 -0.516 -0.050 0.156 0.008 -0.027 -0.068
+ 9.609 -0.314 -0.359 -0.192 -0.324 0.064 -0.181 -0.477 -0.102 -0.009 -0.150 0.019 -0.101
+ 9.802 -0.438 -0.386 -0.056 -0.132 0.007 -0.338 -0.398 0.018 0.152 -0.114 -0.028 0.012
+ 9.804 -0.446 -0.473 -0.092 -0.137 0.045 -0.083 -0.319 0.201 0.025 -0.031 -0.047 0.001
+ 9.718 0.038 -0.334 -0.156 -0.217 -0.092 -0.185 -0.286 0.135 0.022 -0.064 -0.121 -0.033
+ 8.803 0.108 -0.110 -0.159 -0.074 0.047 -0.188 -0.364 -0.201 0.068 -0.139 -0.090 0.025
+ 8.240 -0.126 -0.327 -0.249 -0.193 0.077 -0.300 -0.219 -0.055 0.158 0.004 0.006 -0.075
+ 7.872 -0.089 -0.095 -0.114 -0.170 -0.119 -0.211 -0.040 0.035 0.138 0.024 -0.027 -0.053
+ 6.931 -0.102 -0.019 -0.082 -0.138 0.033 -0.202 0.093 0.042 0.046 -0.076 -0.219 -0.047
+ 5.641 -0.066 0.124 0.015 -0.186 -0.038 -0.154 -0.194 -0.049 0.041 0.003 -0.003 0.047
+ 5.058 -0.293 0.146 -0.018 -0.253 0.045 -0.457 -0.135 0.039 0.081 -0.175 0.019 0.150
+ 4.897 -0.430 -0.109 0.120 -0.171 -0.023 -0.200 0.083 -0.113 0.067 0.035 0.072 0.052
+ 4.983 -0.102 0.046 0.156 -0.094 0.048 -0.219 -0.064 -0.097 0.007 -0.123 -0.100 -0.074
+ 5.166 -0.116 0.176 0.048 0.043 0.056 -0.373 -0.191 0.104 0.015 -0.115 -0.049 -0.015
+ 5.347 -0.350 -0.033 -0.065 -0.030 0.246 -0.163 0.033 0.142 0.044 -0.162 -0.093 -0.182
+ 5.242 -0.220 0.150 0.028 -0.056 -0.013 -0.154 0.150 -0.057 -0.049 -0.060 -0.049 -0.082
+ 5.357 -0.174 0.165 -0.032 -0.290 -0.276 -0.386 0.011 -0.067 0.051 -0.086 -0.002 -0.026
+ 5.628 0.150 0.263 -0.089 -0.241 -0.009 -0.151 -0.033 -0.119 -0.159 -0.158 -0.074 -0.176
+ 6.791 0.457 0.348 -0.039 -0.117 0.101 0.135 0.135 -0.105 -0.074 -0.181 -0.009 -0.094
+ 5.995 0.276 0.509 -0.002 -0.209 -0.000 -0.216 0.085 -0.069 0.054 -0.100 -0.008 -0.308
+ 5.738 0.020 0.203 -0.191 -0.544 -0.264 -0.177 0.151 -0.165 0.013 0.097 -0.071 -0.134
+ 5.936 -0.005 0.249 -0.049 -0.324 -0.153 -0.225 0.058 -0.089 0.068 -0.156 -0.078 0.011
+ 5.681 0.120 0.386 -0.116 -0.225 -0.008 -0.122 0.024 -0.096 -0.041 -0.075 -0.048 -0.122
+ 5.932 0.180 0.398 0.113 -0.209 -0.052 -0.185 0.041 -0.047 -0.068 -0.137 -0.090 -0.258
+ 6.122 0.440 0.649 0.251 -0.130 -0.146 -0.374 -0.147 0.091 0.165 -0.147 -0.225 -0.090
+ 5.830 0.467 0.359 0.068 -0.033 -0.027 -0.266 -0.361 -0.289 0.115 -0.126 -0.193 -0.008
+ 7.798 0.306 -0.346 -0.371 0.036 -0.246 -0.221 -0.061 -0.114 -0.118 -0.169 -0.036 -0.102
+ 8.452 0.397 -0.339 -0.327 0.117 -0.218 -0.199 -0.069 -0.070 -0.194 -0.163 -0.032 -0.139
+ 5.553 0.211 0.549 0.148 -0.083 -0.100 -0.196 -0.134 -0.171 0.034 -0.147 -0.231 -0.135
+ 5.444 0.282 0.414 0.014 -0.032 0.058 -0.112 -0.123 -0.202 -0.066 -0.168 -0.030 -0.250
+ 5.522 0.259 0.467 -0.126 -0.034 0.098 0.053 0.041 -0.080 -0.000 -0.181 -0.077 -0.237
+ 5.616 0.147 0.272 -0.050 -0.199 -0.188 -0.089 -0.019 -0.102 0.077 -0.060 -0.079 -0.130
+ 6.792 -0.166 0.045 -0.191 -0.020 -0.017 -0.085 0.000 -0.231 -0.093 -0.185 -0.077 -0.066
+ 4.957 0.177 0.081 0.055 0.005 -0.128 -0.145 -0.182 -0.124 -0.048 -0.126 0.057 -0.065
+ 4.604 0.113 0.073 0.178 0.043 0.006 -0.053 0.099 -0.051 -0.029 -0.093 0.000 -0.109
+ 4.734 0.343 0.192 0.025 -0.052 -0.095 -0.161 -0.028 -0.078 -0.054 -0.114 -0.107 -0.053
+ 4.681 0.222 0.035 0.060 0.020 -0.035 -0.105 0.051 -0.185 -0.048 -0.157 -0.078 -0.029
+ 5.039 0.213 0.116 -0.093 -0.278 -0.090 -0.171 -0.189 -0.242 -0.054 -0.061 0.029 -0.055
+ 4.617 0.195 0.071 0.013 -0.151 -0.148 -0.309 -0.087 -0.124 -0.032 -0.106 -0.020 -0.187
+ 4.775 0.172 0.033 -0.041 -0.177 -0.048 0.072 -0.110 -0.075 -0.028 -0.015 0.130 -0.001
+ 4.737 0.152 0.054 0.064 -0.219 -0.121 -0.029 -0.057 -0.176 -0.133 -0.231 0.051 -0.035
+ 5.117 0.175 0.101 -0.059 -0.330 -0.176 -0.105 -0.067 -0.004 0.002 -0.006 -0.111 0.026
+ 6.688 -0.578 0.039 -0.085 -0.178 -0.175 -0.316 -0.200 -0.162 -0.033 -0.058 -0.041 -0.108
+ 5.894 -0.065 0.252 -0.142 -0.280 -0.168 -0.163 -0.168 -0.175 -0.151 -0.148 -0.081 -0.072
+ 5.081 0.395 0.075 0.164 -0.321 -0.247 -0.144 -0.160 -0.129 -0.234 -0.020 0.006 0.057
+ 4.906 0.396 0.220 -0.020 -0.114 -0.145 -0.077 -0.142 -0.225 -0.175 -0.182 -0.123 -0.076
+ 5.078 0.111 -0.008 0.036 -0.175 0.004 0.025 -0.117 -0.018 -0.081 -0.172 -0.068 -0.055
+ 4.903 0.132 0.146 -0.007 -0.144 -0.104 -0.071 -0.215 -0.239 0.061 -0.062 -0.098 -0.224
+ 4.142 0.164 -0.032 0.072 -0.082 -0.240 -0.051 -0.264 -0.145 -0.112 -0.117 -0.046 -0.205
+ 4.168 -0.001 -0.130 0.052 -0.151 -0.128 -0.079 0.053 -0.137 0.055 -0.024 -0.063 -0.215
+ 4.119 -0.010 -0.149 0.103 -0.045 -0.141 -0.088 -0.059 -0.174 -0.043 -0.067 0.067 0.048
+ 4.330 0.209 -0.185 0.128 -0.107 -0.185 -0.074 0.127 -0.176 -0.045 -0.165 -0.132 -0.118
+ 4.038 0.216 -0.008 0.283 -0.057 -0.052 -0.056 -0.044 -0.227 -0.137 -0.045 -0.102 -0.113
+ 3.923 0.153 -0.182 0.223 0.048 -0.131 0.068 0.111 -0.023 -0.145 -0.164 -0.146 -0.020
+ 3.993 0.060 -0.229 0.173 -0.005 -0.099 0.276 0.148 -0.042 -0.059 -0.049 -0.067 -0.206
+ 4.163 0.342 -0.198 0.016 -0.195 -0.055 -0.050 -0.025 -0.119 0.025 -0.034 0.038 -0.119
+ 4.029 0.265 -0.152 0.124 -0.132 0.001 0.008 -0.119 -0.024 -0.083 -0.120 -0.056 -0.078
+ 4.504 -0.086 0.152 -0.176 0.024 -0.145 -0.043 0.044 -0.167 -0.103 -0.189 -0.058 -0.213
+ 4.592 0.098 0.166 -0.195 0.019 -0.022 -0.100 0.055 -0.165 0.009 0.039 -0.030 -0.217
+ 4.529 0.285 -0.125 0.075 -0.216 -0.051 -0.097 -0.005 -0.007 0.040 -0.016 0.010 -0.081
+ 4.469 0.188 -0.102 0.039 -0.190 0.007 0.073 0.013 -0.125 -0.174 -0.089 -0.180 -0.178
+ 4.297 0.358 0.027 0.037 -0.297 -0.063 -0.003 0.080 -0.026 -0.033 0.063 -0.104 -0.237
+ 4.277 0.091 -0.054 0.051 -0.164 -0.334 -0.240 -0.067 0.061 0.032 -0.107 -0.103 -0.096
+ 4.707 0.174 0.130 0.105 -0.157 -0.230 -0.065 0.060 0.067 -0.041 -0.045 -0.112 -0.369
+ 5.102 0.455 -0.015 -0.013 -0.219 -0.129 0.014 -0.009 -0.177 -0.206 -0.019 -0.151 -0.121
+ 5.040 0.214 -0.018 -0.075 -0.424 -0.337 -0.005 -0.056 -0.094 -0.078 -0.108 0.041 -0.114
+ 4.962 0.218 0.044 0.056 -0.422 -0.186 0.112 -0.075 -0.192 -0.043 -0.176 -0.150 -0.190
+ 4.822 0.513 -0.285 0.068 -0.271 -0.090 -0.087 -0.099 -0.198 0.003 -0.039 0.012 -0.093
+ 4.420 0.462 0.029 0.112 -0.228 -0.085 -0.102 -0.155 -0.030 -0.046 -0.312 -0.140 -0.031
+ 4.764 0.550 -0.197 -0.018 -0.191 -0.123 0.003 -0.126 -0.130 0.055 -0.083 -0.024 -0.054
+ 4.632 0.570 -0.069 0.010 -0.231 -0.040 0.101 0.037 -0.082 -0.155 -0.295 0.004 -0.037
+ 4.604 0.462 -0.107 -0.016 -0.342 -0.149 -0.066 -0.058 -0.131 -0.007 -0.198 -0.083 -0.043
+ 4.991 0.671 -0.200 -0.100 -0.396 -0.134 -0.027 -0.095 -0.014 -0.078 -0.191 -0.163 -0.048
+ 5.046 0.656 -0.133 0.206 -0.252 -0.100 0.104 -0.196 -0.261 0.033 -0.203 -0.043 -0.173
+ 4.754 0.426 0.080 0.261 -0.297 -0.213 -0.033 -0.024 -0.258 0.050 -0.229 0.013 -0.063
+ 4.903 0.669 0.018 0.164 -0.433 -0.096 -0.053 -0.211 -0.099 -0.049 -0.368 0.010 0.048
+ 4.716 0.402 -0.195 0.344 -0.326 -0.305 -0.021 0.005 -0.127 -0.247 -0.153 0.080 0.193
+ 5.200 0.593 -0.084 0.197 -0.020 -0.201 -0.132 -0.227 -0.200 -0.048 -0.033 0.086 -0.134
+ 5.505 0.502 0.111 0.222 -0.087 -0.112 -0.231 -0.454 -0.164 -0.007 0.015 0.099 -0.346
+ 5.832 0.437 -0.011 0.108 -0.216 -0.247 -0.189 -0.319 -0.279 0.076 -0.003 0.144 -0.227
+ 5.675 0.477 0.044 0.100 -0.307 -0.229 -0.165 -0.261 -0.314 0.160 -0.040 0.071 -0.221
+ 5.606 0.666 0.151 0.138 -0.401 -0.151 -0.129 -0.373 -0.362 0.229 -0.097 -0.079 -0.228
+ 5.701 0.581 0.168 0.130 -0.413 -0.109 -0.198 -0.329 -0.380 0.244 -0.128 -0.014 -0.213
+ 5.772 0.602 0.323 0.118 -0.319 -0.160 -0.179 -0.342 -0.492 0.199 -0.040 -0.083 -0.260
+ 6.037 0.586 -0.036 0.075 -0.290 -0.156 -0.124 -0.344 -0.434 0.150 -0.208 0.030 -0.338
+ 6.052 0.561 -0.023 0.061 -0.041 0.004 -0.108 -0.254 -0.478 -0.162 -0.139 0.074 -0.250
+ 5.666 0.561 0.177 0.210 -0.149 -0.041 -0.249 -0.275 -0.539 -0.006 0.031 -0.005 -0.085
+ 6.132 0.793 0.269 0.005 -0.094 -0.067 0.106 0.080 -0.173 -0.122 -0.225 -0.264 -0.280
+ 6.068 0.803 0.567 0.276 -0.107 -0.015 -0.027 -0.079 -0.199 -0.121 -0.307 -0.258 -0.279
+ 5.645 0.551 0.215 0.064 -0.292 -0.116 -0.113 -0.212 -0.160 -0.032 -0.090 -0.049 0.031
+ 5.429 0.228 0.098 0.280 -0.039 -0.147 -0.238 -0.227 -0.322 -0.070 -0.158 -0.002 -0.011
+ 5.840 -0.028 -0.035 0.281 -0.081 -0.290 -0.160 -0.388 -0.324 -0.078 -0.128 -0.016 0.048
+ 7.103 0.101 0.061 0.268 -0.350 -0.275 -0.081 -0.300 -0.212 0.188 -0.106 -0.039 -0.076
+ 8.854 0.411 0.282 0.128 -0.480 -0.087 -0.353 -0.302 -0.094 0.227 -0.063 -0.063 -0.190
+ 7.506 0.162 0.233 0.528 -0.283 -0.227 0.105 -0.319 -0.207 0.130 -0.243 -0.048 -0.192
+ 8.800 0.533 0.121 0.185 -0.264 -0.075 0.052 -0.200 -0.277 0.045 -0.302 -0.052 -0.208
+ 9.231 0.666 0.202 0.171 -0.318 0.098 0.169 -0.305 -0.266 -0.042 -0.298 -0.016 -0.202
+ 6.992 0.054 0.344 0.311 -0.324 -0.178 0.375 -0.211 -0.204 0.150 -0.378 0.072 -0.180
+ 6.778 0.031 0.231 0.207 -0.580 -0.316 0.150 -0.518 -0.201 0.141 -0.278 0.109 -0.009
+ 6.429 -0.064 0.242 0.247 -0.468 -0.406 0.096 -0.641 -0.152 0.128 -0.293 0.264 -0.125
+ 6.597 -0.014 0.390 0.513 -0.517 -0.320 -0.015 -0.626 -0.282 0.056 -0.341 0.037 -0.128
+ 7.067 -0.265 0.296 0.531 -0.457 -0.346 -0.155 -0.751 -0.285 0.128 -0.384 -0.068 -0.177
+ 6.844 -0.196 0.337 0.550 -0.638 -0.447 0.052 -0.789 -0.415 -0.014 -0.437 -0.084 -0.237
+ 7.027 -0.281 0.400 0.503 -0.723 -0.570 0.202 -0.523 -0.284 0.114 -0.443 -0.063 -0.304
+ 6.888 -0.432 0.346 0.443 -0.882 -0.811 0.137 -0.540 -0.214 0.273 -0.228 0.028 -0.228
+ 6.818 -0.375 0.147 0.264 -0.830 -0.655 0.225 -0.531 -0.067 0.259 -0.231 0.043 -0.108
+ 6.773 -0.313 0.050 0.326 -0.819 -0.621 0.141 -0.622 -0.142 0.205 -0.210 -0.006 -0.062
+ 6.562 -0.155 0.250 0.348 -0.580 -0.759 0.019 -0.441 -0.091 0.118 -0.439 0.028 -0.084
+ 5.925 -0.242 0.330 0.307 -0.609 -0.424 0.244 -0.535 -0.218 0.090 -0.367 0.007 -0.123
+ 6.017 0.014 0.278 0.399 -0.447 -0.434 0.076 -0.225 -0.065 0.280 -0.309 -0.056 -0.198
+ 6.053 0.026 0.247 0.324 -0.194 -0.265 0.094 -0.188 -0.064 -0.031 -0.099 0.019 -0.148
+ 5.940 -0.002 0.252 0.248 -0.018 -0.262 0.007 -0.147 -0.117 0.043 -0.128 -0.075 -0.122
+ 5.471 0.051 0.159 0.162 -0.175 -0.259 -0.143 -0.124 -0.187 -0.094 0.052 -0.043 -0.109
+ 5.688 0.289 0.113 0.337 -0.246 -0.193 -0.000 -0.214 -0.110 -0.009 -0.227 -0.039 -0.048
+ 5.989 0.322 0.342 0.290 -0.061 -0.004 -0.181 -0.129 -0.212 0.078 -0.189 -0.033 -0.102
+ 5.911 0.008 0.145 0.036 -0.214 0.032 0.061 -0.231 -0.060 0.073 -0.119 -0.013 -0.026
+ 6.258 0.037 0.175 0.264 -0.357 -0.223 0.117 -0.325 -0.100 0.056 -0.267 -0.051 -0.208
+ 6.256 -0.171 0.268 0.463 -0.351 -0.319 0.088 -0.454 -0.130 0.066 -0.227 -0.037 -0.182
+ 6.388 -0.220 0.391 0.434 -0.565 -0.379 -0.014 -0.534 -0.242 0.196 -0.135 0.029 -0.186
+ 6.872 -0.203 0.305 0.529 -0.614 -0.547 -0.038 -0.358 -0.208 0.118 0.068 0.008 -0.280
+ 6.905 -0.286 -0.043 0.315 -0.422 -0.524 0.049 -0.179 -0.169 -0.090 -0.135 0.105 -0.247
+ 6.559 -0.456 -0.154 0.245 -0.264 -0.396 0.198 0.040 -0.117 0.043 -0.063 0.129 -0.455
+ 6.590 -0.323 -0.046 0.254 -0.140 -0.405 -0.002 -0.055 -0.035 -0.012 -0.055 0.090 -0.493
+ 6.774 -0.183 -0.086 0.335 -0.094 -0.504 -0.063 -0.186 -0.093 -0.090 -0.074 0.160 -0.368
+ 6.724 -0.185 -0.217 0.106 -0.151 -0.499 -0.030 0.015 0.007 -0.067 -0.142 0.344 -0.343
+ 6.599 -0.081 -0.520 -0.181 -0.216 -0.551 -0.089 0.177 0.061 -0.162 -0.290 0.322 -0.392
+ 9.163 1.225 -0.149 -0.072 -0.117 -0.261 -0.207 -0.190 -0.137 -0.212 -0.261 0.090 -0.232
+ 9.616 1.224 -0.069 0.078 -0.140 -0.269 -0.174 -0.163 -0.170 -0.145 -0.188 0.084 -0.066
+ 7.488 0.773 -0.039 0.188 -0.100 -0.359 -0.041 0.148 0.039 -0.311 -0.178 0.224 -0.317
+ 6.610 0.084 -0.107 -0.026 -0.189 -0.323 -0.073 0.237 0.328 -0.130 -0.289 0.320 -0.228
+ 6.464 -0.058 -0.280 0.062 -0.172 -0.334 -0.172 0.348 0.176 -0.320 -0.269 0.232 -0.376
+ 6.463 0.078 -0.404 -0.017 -0.273 -0.362 -0.191 0.197 -0.017 -0.206 -0.245 0.253 -0.412
+ 6.589 0.342 -0.339 0.051 -0.156 -0.318 -0.296 0.202 0.228 -0.317 -0.212 0.170 -0.328
+ 8.641 0.351 0.018 -0.340 -0.312 -0.358 -0.132 -0.140 -0.228 0.005 -0.240 -0.002 -0.169
+ 8.800 0.072 0.169 -0.048 -0.414 -0.351 -0.040 -0.074 -0.140 0.172 -0.212 0.010 -0.064
+ 9.704 -0.237 0.375 0.052 -0.283 -0.253 -0.185 -0.020 -0.225 0.163 -0.394 -0.099 -0.066
+ 7.009 0.208 0.384 0.316 -0.075 -0.336 -0.204 0.086 -0.007 0.121 -0.173 0.043 -0.105
+ 6.541 0.380 0.278 0.099 -0.220 -0.323 -0.122 0.131 -0.024 -0.105 -0.091 -0.142 -0.324
+ 6.031 0.257 0.139 0.112 -0.033 -0.249 -0.121 0.010 -0.171 -0.200 -0.200 0.006 -0.192
+ 6.275 0.440 0.082 0.014 -0.213 -0.278 0.040 0.012 -0.066 -0.283 -0.058 -0.084 -0.273
+ 6.292 0.459 0.368 0.200 -0.160 -0.160 -0.047 -0.094 -0.270 -0.183 -0.128 0.008 -0.204
+ 6.048 0.347 0.298 0.109 -0.174 -0.022 -0.134 -0.128 -0.425 -0.188 -0.118 -0.101 -0.347
+ 5.757 0.308 0.123 0.045 -0.184 -0.389 -0.103 -0.170 -0.298 -0.166 -0.110 -0.062 -0.167
+ 5.297 0.140 0.090 0.219 -0.226 -0.349 -0.185 -0.087 -0.147 -0.001 -0.136 -0.139 -0.071
+ 5.282 0.225 0.027 0.152 -0.179 -0.391 -0.058 0.029 -0.195 -0.065 -0.179 -0.213 -0.214
+ 5.874 0.422 0.146 -0.107 -0.243 -0.196 -0.137 -0.136 -0.343 -0.099 -0.046 0.064 -0.092
+ 5.552 0.550 -0.134 -0.130 -0.176 -0.114 0.096 -0.020 -0.339 -0.237 -0.200 0.072 -0.191
+ 5.906 0.594 -0.133 -0.070 -0.265 -0.205 0.050 -0.036 -0.170 0.153 -0.051 -0.113 -0.131
+ 6.343 0.887 0.213 -0.026 -0.083 -0.031 0.187 -0.040 -0.153 0.042 0.015 -0.207 -0.225
+ 6.173 0.550 0.055 -0.106 -0.075 -0.074 0.030 -0.038 -0.157 0.004 -0.055 0.035 0.028
+ 5.752 0.281 0.072 -0.140 -0.187 -0.197 -0.045 0.026 -0.121 -0.131 -0.073 -0.070 -0.221
+ 5.458 0.249 -0.053 -0.050 -0.258 -0.162 0.049 0.088 -0.144 -0.216 -0.122 -0.159 -0.135
+ 5.408 0.269 -0.034 0.000 -0.085 -0.133 -0.049 0.084 -0.028 -0.060 -0.241 -0.251 -0.089
+ 5.650 0.189 -0.118 -0.106 -0.082 -0.081 -0.116 -0.003 -0.232 -0.154 -0.232 -0.089 -0.058
+ 5.746 0.102 -0.017 -0.070 -0.167 -0.155 -0.151 -0.024 -0.034 -0.036 -0.142 -0.124 -0.085
+ 5.987 -0.109 -0.154 -0.450 -0.065 -0.207 -0.088 -0.057 -0.042 -0.076 -0.106 0.030 -0.193
+ 5.607 -0.041 0.158 -0.137 -0.150 -0.188 -0.044 -0.013 -0.097 -0.084 -0.129 -0.014 -0.055
+ 5.329 -0.031 0.105 -0.202 -0.210 -0.145 -0.035 0.082 0.056 -0.042 -0.089 -0.056 -0.046
+ 5.536 0.140 -0.007 -0.185 -0.102 0.047 0.062 -0.020 -0.230 -0.120 -0.199 -0.140 -0.153
+ 5.280 -0.053 0.057 -0.076 -0.123 -0.037 -0.000 -0.011 -0.056 0.225 -0.001 -0.082 -0.101
+ 4.685 0.079 0.128 0.187 -0.140 -0.086 -0.069 0.020 -0.163 0.012 -0.105 -0.133 -0.170
+ 5.243 0.155 0.202 0.029 -0.248 -0.066 -0.208 -0.079 -0.042 0.030 -0.146 -0.027 0.029
+ 5.243 0.193 0.005 -0.083 -0.240 -0.150 -0.044 -0.072 -0.190 -0.014 0.063 -0.025 -0.037
+ 5.073 0.103 -0.239 -0.245 -0.252 -0.079 -0.180 -0.122 -0.227 -0.029 -0.141 -0.135 -0.176
+ 4.833 0.090 -0.262 -0.029 -0.209 -0.177 -0.207 -0.076 -0.151 -0.055 -0.185 -0.217 -0.150
+ 4.944 0.172 -0.297 0.144 -0.100 -0.003 0.009 -0.070 -0.174 -0.040 -0.128 -0.156 -0.096
+ 4.780 0.166 -0.188 0.226 -0.148 -0.076 -0.204 -0.102 -0.211 -0.249 -0.123 -0.101 -0.051
+ 4.172 0.185 -0.181 0.204 -0.083 -0.132 0.008 0.075 0.065 0.176 0.049 -0.064 0.073
+ 4.242 0.298 -0.225 0.145 -0.124 -0.089 0.102 0.256 0.020 -0.053 -0.132 -0.098 -0.032
+ 4.413 0.186 -0.322 0.206 0.006 -0.093 0.175 0.186 -0.103 -0.125 -0.247 -0.240 -0.132
+ 4.441 0.223 -0.281 0.083 -0.061 -0.086 0.155 0.029 -0.120 0.024 -0.091 -0.165 -0.127
+ 4.285 0.223 -0.191 0.098 -0.244 -0.062 0.014 0.014 -0.287 -0.183 -0.053 -0.001 -0.139
+ 4.429 0.459 -0.158 0.199 -0.082 -0.099 0.081 -0.016 -0.307 -0.249 -0.258 -0.048 -0.089
+ 4.301 0.323 -0.114 0.189 -0.026 -0.033 -0.045 -0.031 -0.197 -0.122 -0.076 -0.070 -0.242
+ 4.061 -0.052 -0.112 0.292 0.060 -0.144 0.096 -0.151 -0.350 -0.163 -0.039 -0.062 -0.132
+ 4.414 -0.102 -0.013 0.141 -0.146 -0.157 0.009 0.059 -0.058 0.053 -0.076 -0.086 -0.032
+ 4.761 0.192 -0.022 0.035 -0.151 -0.142 -0.082 0.070 0.002 0.139 -0.212 -0.084 -0.182
+ 4.893 0.383 0.008 0.158 -0.282 -0.058 -0.023 0.001 -0.132 -0.023 0.037 -0.011 -0.182
+ 5.873 0.256 0.307 0.318 -0.355 -0.142 0.014 -0.040 -0.211 -0.009 -0.107 -0.018 -0.117
+ 5.780 0.099 0.088 0.489 -0.344 -0.196 -0.031 -0.177 -0.107 0.078 -0.040 0.004 -0.102
+ 6.066 -0.071 0.069 0.625 -0.380 -0.119 -0.039 -0.206 -0.174 0.034 -0.010 0.067 -0.058
+ 6.349 0.089 0.087 0.386 -0.407 -0.277 -0.170 -0.161 -0.258 0.046 -0.032 -0.066 -0.224
+ 6.847 0.223 0.276 0.462 -0.354 -0.271 0.112 -0.014 0.035 0.061 -0.090 -0.131 -0.248
+ 7.269 0.836 0.492 0.239 -0.368 -0.112 0.083 -0.275 -0.207 -0.244 -0.102 0.027 -0.079
+ 7.753 0.614 0.295 0.223 -0.360 -0.049 -0.086 -0.186 -0.224 -0.074 -0.234 0.048 -0.116
+ 8.061 0.641 0.059 0.152 -0.099 -0.169 -0.181 -0.300 -0.207 -0.073 -0.362 0.022 -0.004
+ 8.459 0.831 0.209 0.201 0.003 -0.071 -0.201 -0.335 -0.376 -0.029 -0.385 -0.087 -0.032
+ 7.218 0.075 0.186 0.168 -0.079 -0.309 -0.359 -0.158 -0.102 -0.173 -0.242 -0.021 -0.046
+ 8.151 -0.420 0.030 0.032 -0.085 -0.317 -0.063 -0.166 -0.183 0.082 -0.198 -0.032 -0.082
+ 7.376 -0.235 0.224 0.086 -0.108 -0.272 -0.170 -0.143 -0.086 0.056 -0.174 -0.041 -0.029
+ 6.848 -0.345 0.381 0.257 0.096 -0.025 -0.345 -0.152 -0.281 -0.223 -0.274 0.079 0.066
+ 7.619 -0.379 0.417 0.114 0.002 -0.104 -0.157 -0.017 -0.191 -0.010 -0.049 -0.072 0.039
+ 7.199 -0.111 0.515 0.013 -0.057 -0.050 -0.187 0.070 -0.114 -0.051 -0.172 -0.187 -0.159
+ 6.887 -0.204 0.377 0.062 -0.163 -0.135 -0.281 0.006 -0.305 -0.135 -0.161 -0.094 -0.210
+ 6.229 -0.224 0.345 0.137 -0.050 -0.045 -0.053 -0.057 -0.310 -0.159 -0.252 -0.038 -0.107
+ 5.606 -0.289 0.248 0.044 -0.013 -0.097 -0.270 -0.053 -0.102 -0.119 -0.094 -0.019 -0.075
+ 5.925 -0.058 0.290 0.035 0.235 0.315 -0.020 -0.027 -0.059 -0.221 -0.184 -0.040 -0.106
+ 5.517 -0.152 0.227 0.069 0.100 0.084 -0.064 -0.004 -0.122 -0.059 -0.217 -0.112 -0.174
+ 5.252 -0.344 0.076 0.095 0.040 0.032 -0.023 -0.014 -0.042 -0.062 -0.260 -0.322 -0.249
+ 6.268 0.353 0.100 -0.113 -0.068 -0.112 -0.356 -0.209 -0.156 -0.141 -0.158 -0.155 -0.254
+ 6.380 0.951 0.499 -0.047 -0.076 -0.181 -0.349 -0.298 -0.121 -0.056 -0.096 -0.017 -0.137
+ 5.057 -0.005 0.507 -0.035 0.100 -0.024 -0.177 -0.219 -0.070 -0.010 0.025 0.052 0.014
+ 4.800 -0.153 0.060 -0.191 -0.190 -0.128 -0.155 -0.188 -0.112 -0.025 0.108 0.130 -0.080
+ 4.831 -0.101 0.117 -0.080 -0.214 -0.130 -0.107 -0.135 0.034 -0.060 0.035 0.043 -0.041
+ 4.206 -0.169 -0.007 -0.017 0.025 -0.142 -0.133 -0.102 -0.064 0.092 0.150 0.088 -0.038
+ 4.467 -0.154 0.099 0.034 -0.048 -0.187 -0.004 -0.059 -0.045 -0.004 -0.016 -0.028 -0.023
+ 4.487 -0.227 0.046 0.122 0.038 -0.112 -0.088 -0.165 -0.140 -0.083 -0.043 -0.081 -0.000
+ 4.236 0.332 0.054 0.159 -0.018 -0.125 -0.065 -0.123 -0.231 -0.106 -0.146 0.113 0.000
+ 4.201 0.114 -0.030 0.099 -0.113 0.018 -0.057 -0.125 -0.142 -0.111 0.036 0.035 -0.225
+ 4.125 -0.067 -0.158 0.053 -0.271 0.156 0.127 0.086 -0.021 -0.033 -0.003 0.125 0.030
+ 4.500 -0.064 -0.257 0.081 -0.157 -0.149 -0.140 -0.106 -0.070 0.015 0.054 0.081 0.006
+ 4.536 0.184 0.033 0.144 -0.072 0.042 -0.091 -0.197 -0.066 0.017 -0.067 0.030 -0.074
+ 3.760 0.136 -0.032 -0.024 -0.159 -0.085 0.022 -0.029 -0.076 -0.182 -0.027 0.113 -0.021
+ 3.916 0.143 -0.009 -0.087 -0.087 -0.110 0.042 0.058 -0.166 -0.138 0.066 0.119 -0.029
+ 3.945 -0.254 -0.020 -0.082 -0.057 -0.084 -0.091 0.174 0.047 -0.105 -0.009 0.136 -0.024
+ 4.315 0.019 -0.007 0.008 -0.005 -0.041 0.092 -0.065 -0.223 0.022 -0.211 -0.226 -0.019
+ 4.403 0.030 0.107 -0.111 -0.166 0.072 0.103 -0.173 -0.330 -0.069 -0.077 -0.058 -0.002
+ 4.708 -0.123 0.319 -0.075 -0.025 -0.044 -0.105 0.035 -0.043 -0.082 -0.158 -0.096 -0.079
+ 4.585 -0.291 0.301 0.030 0.097 -0.097 -0.245 -0.038 -0.064 -0.161 -0.141 -0.039 -0.067
+ 4.491 -0.444 0.173 -0.069 0.165 0.094 -0.194 -0.030 -0.151 -0.061 -0.116 -0.018 0.093
+ 4.733 -0.380 0.256 0.135 0.084 0.073 -0.139 -0.073 -0.275 -0.060 -0.305 -0.140 0.182
+ 4.829 -0.371 0.149 0.042 -0.077 0.001 -0.132 -0.000 -0.178 0.168 0.046 0.108 0.044
+ 5.341 -0.483 0.246 0.026 -0.044 -0.020 0.032 -0.027 0.014 0.088 -0.057 -0.036 -0.106
+ 5.472 -0.606 0.096 -0.073 -0.007 -0.076 -0.099 -0.180 -0.188 -0.098 0.011 -0.027 -0.045
+ 5.135 -0.154 0.137 0.116 -0.155 0.005 -0.071 -0.069 -0.148 -0.073 -0.076 -0.260 -0.178
+ 4.633 -0.366 0.069 0.096 -0.088 0.018 -0.020 -0.055 -0.092 -0.085 -0.208 -0.233 -0.205
+ 4.844 -0.180 0.048 0.052 -0.390 -0.277 -0.228 0.020 -0.006 0.034 -0.037 0.100 -0.140
+ 4.323 0.368 0.268 0.060 -0.215 -0.288 -0.118 0.135 -0.100 -0.139 -0.251 -0.055 0.068
+ 4.435 -0.083 0.267 0.131 -0.136 0.081 -0.090 0.098 -0.108 -0.161 -0.130 -0.104 0.050
+ 4.963 0.328 0.336 0.053 -0.339 0.101 -0.198 -0.054 -0.033 -0.058 0.006 0.053 -0.069
+ 5.246 0.514 0.377 -0.079 -0.279 0.044 0.006 0.016 0.030 -0.083 0.001 0.036 -0.074
+ 5.579 0.497 0.332 0.066 -0.253 -0.092 0.005 0.075 -0.086 -0.019 -0.165 0.071 -0.018
+ 6.098 0.390 0.254 -0.080 -0.358 0.052 0.008 0.013 -0.090 -0.071 -0.011 -0.059 -0.210
+ 6.748 0.329 0.297 0.140 -0.306 -0.053 -0.024 -0.240 -0.123 -0.059 -0.112 -0.039 -0.140
+ 7.247 0.198 0.079 0.077 -0.217 -0.108 -0.090 -0.253 -0.103 -0.063 -0.077 -0.083 -0.091
+ 6.926 0.103 0.226 -0.093 -0.230 0.022 -0.090 -0.024 -0.057 -0.101 -0.159 -0.013 -0.098
+ 6.717 0.193 0.111 -0.135 -0.281 0.102 -0.106 -0.019 0.057 -0.057 -0.246 0.143 -0.019
+ 6.769 0.316 -0.010 0.009 -0.278 0.042 -0.136 -0.013 -0.088 -0.061 -0.170 0.150 -0.080
+ 6.975 0.279 0.171 0.065 -0.210 -0.004 0.021 -0.194 -0.246 -0.040 -0.236 -0.019 -0.177
+ 6.425 -0.005 0.249 0.316 -0.178 -0.195 -0.331 -0.131 -0.038 0.070 -0.051 0.066 -0.141
+ 7.263 -0.612 0.163 -0.047 -0.353 -0.391 -0.328 -0.121 0.035 0.198 0.022 0.306 0.236
+ 7.862 -0.339 0.294 -0.013 -0.247 -0.096 -0.180 0.005 -0.048 0.082 0.023 -0.065 0.007
+ 7.902 -0.234 0.296 0.124 -0.252 -0.192 -0.232 -0.174 -0.206 -0.099 -0.039 -0.038 -0.068
+ 8.017 -0.494 0.156 0.159 -0.230 -0.093 -0.180 -0.365 -0.159 -0.056 0.047 0.056 -0.117
+ 7.933 -0.532 0.031 0.124 -0.325 -0.069 -0.141 -0.206 -0.046 0.056 0.059 0.110 0.006
+ 7.627 -0.495 0.116 -0.056 -0.465 -0.131 -0.134 -0.309 -0.191 0.072 0.000 -0.094 0.042
+ 7.938 -0.495 0.012 0.115 -0.365 -0.103 -0.166 -0.357 -0.158 -0.006 -0.128 0.008 -0.104
+ 8.007 -0.516 0.053 0.104 -0.516 -0.352 -0.156 -0.304 -0.100 -0.153 -0.113 0.077 -0.053
+ 7.410 -0.642 -0.107 0.103 -0.575 -0.294 -0.080 -0.329 -0.097 -0.023 0.026 0.077 -0.061
+ 7.249 -0.548 0.053 0.052 -0.264 -0.128 0.117 -0.376 -0.094 0.023 0.022 -0.137 -0.084
+ 7.147 -0.632 -0.105 0.139 -0.271 -0.272 0.088 -0.252 -0.115 -0.073 0.014 0.024 -0.105
+ 7.324 -0.924 -0.191 0.169 -0.404 -0.290 0.080 -0.378 -0.149 -0.141 -0.036 0.021 -0.020
+ 6.853 -1.121 -0.352 0.040 -0.152 -0.252 -0.223 -0.415 -0.124 -0.055 0.074 0.184 -0.090
+ 6.785 -0.752 -0.217 0.122 -0.193 -0.141 -0.283 -0.347 -0.175 -0.028 0.004 0.141 -0.135
+ 6.353 -0.659 -0.181 0.180 -0.066 0.057 -0.182 -0.465 -0.366 -0.030 -0.027 0.123 -0.081
+ 6.155 -0.128 -0.069 -0.049 -0.459 -0.183 -0.099 -0.082 0.040 -0.033 -0.110 0.035 -0.015
+ 5.482 0.088 0.233 -0.133 -0.503 -0.062 -0.027 -0.139 -0.106 -0.009 -0.085 -0.048 -0.013
+ 5.389 0.733 0.132 -0.049 -0.199 -0.140 -0.420 -0.255 -0.211 -0.109 -0.128 -0.011 -0.114
+ 6.892 0.897 -0.297 0.000 -0.438 0.013 -0.420 -0.411 -0.063 -0.060 -0.174 -0.026 0.017
+ 7.482 0.942 -0.510 0.117 -0.580 0.108 -0.496 -0.508 -0.036 0.003 -0.189 -0.068 0.093
+ 7.741 0.797 -0.378 0.023 -0.530 0.130 -0.473 -0.540 -0.035 0.075 -0.211 -0.075 0.111
+ 7.488 0.929 -0.412 0.112 -0.554 0.139 -0.414 -0.604 0.001 0.041 -0.201 -0.048 0.085
+ 7.184 1.026 -0.371 0.150 -0.494 0.079 -0.356 -0.666 -0.035 0.024 -0.180 -0.021 0.045
+ 6.942 0.964 -0.242 0.145 -0.354 0.059 -0.314 -0.578 -0.142 0.012 -0.172 -0.058 -0.023
+ 6.665 0.890 -0.247 0.198 -0.248 0.122 -0.268 -0.544 -0.167 -0.025 -0.290 -0.029 -0.037
+ 5.941 0.898 -0.118 0.257 -0.162 0.017 -0.060 -0.409 -0.097 -0.081 -0.371 -0.235 0.031
+ 5.492 0.701 -0.059 0.208 -0.084 0.073 -0.129 -0.314 -0.023 -0.088 -0.218 -0.001 0.009
+ 5.225 0.790 0.117 -0.093 -0.105 -0.107 -0.407 -0.297 -0.032 -0.074 -0.020 0.059 0.087
+ 4.782 0.685 0.168 0.206 -0.060 -0.195 -0.403 -0.310 0.036 -0.042 -0.073 0.016 0.073
+ 4.635 0.636 0.145 0.154 -0.039 -0.193 -0.359 -0.266 -0.185 0.002 0.064 0.153 0.035
+ 4.546 0.567 -0.091 0.048 -0.074 0.085 -0.254 -0.222 -0.089 0.017 0.014 0.033 0.030
+ 4.580 0.673 0.100 0.033 -0.236 0.046 -0.348 -0.227 -0.012 -0.020 0.039 0.064 0.041
+ 4.772 0.745 -0.010 -0.020 -0.089 0.135 -0.143 -0.209 -0.022 -0.017 -0.039 -0.055 0.003
+ 5.422 0.793 -0.036 -0.254 -0.154 0.024 -0.079 -0.101 -0.124 0.135 0.079 -0.020 0.049
+ 5.828 0.958 -0.269 -0.248 -0.075 0.030 -0.017 -0.025 0.000 0.180 -0.064 -0.065 0.008
+ 5.982 1.064 -0.486 -0.253 -0.105 0.050 0.075 -0.043 -0.096 0.328 -0.037 -0.170 -0.098
+ 6.127 1.154 -0.600 -0.219 -0.092 0.105 -0.087 -0.092 -0.050 0.245 -0.134 -0.134 -0.036
+ 6.087 1.073 -0.432 -0.240 -0.256 0.071 -0.094 -0.101 -0.100 0.262 -0.088 -0.171 0.047
+ 5.776 0.845 -0.355 -0.168 -0.168 -0.065 -0.171 -0.037 -0.078 0.243 -0.050 -0.023 0.049
+ 5.559 0.724 -0.346 0.097 -0.235 -0.103 -0.212 -0.136 -0.040 0.098 0.059 0.023 0.113
+ 5.162 0.620 -0.170 0.225 -0.249 -0.008 -0.090 -0.149 -0.057 0.245 0.168 -0.003 0.104
+ 4.284 0.611 -0.143 0.147 -0.261 -0.073 -0.067 -0.074 -0.117 0.166 -0.023 -0.065 -0.119
+ 4.476 0.488 -0.220 0.158 -0.144 -0.006 0.070 -0.067 -0.118 0.111 0.014 0.101 0.033
+ 3.821 0.558 0.062 0.269 0.082 -0.040 -0.068 0.028 0.082 0.042 -0.073 0.078 0.032
+ 3.730 0.423 -0.228 0.148 0.110 0.178 -0.194 -0.054 0.059 0.044 -0.064 0.061 -0.059
+ 3.698 0.377 -0.218 0.039 -0.117 0.000 -0.219 -0.137 -0.115 -0.127 -0.012 -0.056 -0.069
+ 3.442 0.298 -0.037 0.317 -0.085 -0.086 -0.262 -0.142 -0.026 -0.090 0.020 -0.029 -0.038
+ 3.608 0.490 0.126 0.327 0.067 -0.012 -0.075 -0.197 -0.251 0.008 0.102 -0.048 -0.054
+ 3.620 0.538 -0.164 0.075 0.081 -0.061 -0.184 -0.117 -0.054 0.154 0.021 -0.042 0.048
+ 5.454 0.191 0.343 0.322 -0.013 0.124 -0.075 -0.321 -0.077 -0.106 -0.058 -0.238 0.002
+ 7.521 -0.128 -0.002 0.189 0.063 0.236 -0.266 -0.375 -0.027 0.017 -0.021 -0.397 0.028
+ 5.609 -0.142 -0.227 0.073 -0.051 0.234 -0.188 -0.267 0.169 0.261 0.231 -0.289 -0.085
+ 3.803 0.030 -0.040 0.132 -0.015 0.127 -0.068 -0.015 -0.030 0.075 0.107 -0.009 0.060
+ 4.599 -0.083 0.112 -0.073 0.026 0.054 -0.038 -0.214 -0.272 -0.031 -0.020 -0.009 0.031
+ 4.762 -0.174 -0.114 0.078 0.107 -0.025 -0.075 -0.129 -0.153 -0.136 -0.119 -0.002 -0.002
+ 5.815 -0.687 -0.078 0.096 -0.183 -0.042 0.065 -0.309 0.037 0.128 0.018 -0.023 -0.073
+ 6.307 -0.465 -0.020 0.133 -0.440 0.036 0.070 -0.323 -0.144 0.127 -0.017 -0.083 -0.173
+ 6.342 -0.969 -0.162 0.180 -0.282 0.166 -0.057 -0.173 -0.048 0.175 0.080 0.068 -0.118
+ 5.896 -0.295 -0.001 0.207 -0.077 0.054 -0.015 -0.138 -0.204 0.096 0.042 -0.164 -0.036
+ 6.188 0.013 0.037 0.084 0.059 -0.110 -0.194 -0.422 -0.257 0.199 -0.049 -0.118 -0.047
+ 5.838 -0.024 0.333 0.094 -0.191 -0.120 -0.138 -0.173 0.048 0.004 0.031 0.015 -0.034
+ 5.557 0.241 0.251 0.150 -0.053 -0.143 -0.187 -0.216 -0.110 -0.093 -0.063 -0.103 -0.023
+ 5.212 0.051 -0.125 0.103 -0.061 0.030 -0.136 -0.225 -0.056 -0.176 -0.125 -0.068 0.004
+ 5.327 0.008 0.014 0.074 -0.131 -0.037 -0.075 -0.150 -0.150 -0.043 -0.131 -0.175 -0.068
+ 5.067 0.193 0.052 0.005 -0.136 -0.092 0.009 -0.187 -0.085 -0.086 -0.100 -0.191 -0.259
+ 5.031 0.037 0.072 -0.012 -0.233 -0.128 -0.004 -0.178 -0.200 -0.098 -0.123 0.009 -0.087
+ 4.508 0.305 -0.033 0.045 -0.013 0.012 -0.108 -0.127 -0.102 0.015 0.008 -0.033 0.044
+ 4.145 0.422 0.040 -0.088 -0.247 -0.053 -0.139 -0.118 -0.198 -0.137 -0.045 0.044 -0.197
+ 4.616 -0.124 -0.154 0.019 -0.332 0.015 -0.245 -0.171 -0.071 -0.153 -0.127 0.069 0.008
+ 5.149 -0.204 -0.132 -0.034 -0.216 0.033 0.035 -0.174 -0.026 0.024 0.022 -0.001 -0.035
+ 5.202 0.017 0.061 -0.121 -0.214 0.118 0.035 -0.148 -0.054 -0.008 -0.112 0.039 0.060
+ 5.800 -0.689 0.076 0.087 0.035 0.096 -0.202 -0.230 -0.162 0.028 0.041 -0.021 -0.044
+ 5.331 -0.355 0.065 -0.003 -0.176 -0.059 -0.169 -0.174 -0.044 0.104 0.024 0.013 -0.053
+ 5.803 0.402 0.378 -0.035 -0.361 -0.248 -0.339 -0.124 -0.295 -0.144 -0.138 -0.041 0.008
+ 5.492 -0.016 0.106 0.180 -0.103 -0.230 -0.202 -0.287 -0.282 0.069 -0.092 0.071 -0.083
+ 7.013 -0.206 0.048 0.126 -0.393 -0.374 -0.182 -0.169 -0.288 0.077 0.001 -0.101 0.127
+ 7.046 -0.244 0.144 0.188 -0.592 -0.302 -0.170 -0.311 -0.134 0.116 -0.075 -0.155 -0.002
+ 6.461 -0.209 0.099 0.538 -0.770 -0.321 -0.279 -0.321 -0.274 0.062 0.056 0.061 -0.188
+ 6.334 -0.187 0.053 0.431 -0.843 -0.381 -0.269 0.009 -0.284 0.024 -0.041 0.043 -0.119
+ 5.313 -0.154 -0.065 0.284 -0.321 -0.140 -0.253 -0.044 -0.269 0.066 -0.120 -0.011 -0.243
+ 4.855 -0.061 0.163 0.197 -0.377 -0.320 -0.237 -0.110 -0.238 0.075 -0.190 -0.046 -0.077
+ 4.961 0.027 0.368 0.207 -0.269 -0.263 -0.169 -0.223 -0.265 -0.090 0.002 -0.008 0.000
+ 4.826 0.344 0.209 0.266 -0.319 -0.029 -0.127 -0.028 -0.273 -0.219 -0.110 -0.088 -0.057
+ 4.482 0.129 0.143 0.179 -0.131 -0.143 -0.073 -0.095 -0.137 -0.114 -0.382 -0.136 -0.052
+ 5.180 0.119 0.110 -0.003 -0.324 -0.225 -0.102 -0.230 -0.180 -0.115 -0.239 0.002 0.024
+ 5.049 -0.258 0.170 0.076 -0.313 -0.175 -0.175 -0.280 -0.136 -0.264 0.111 0.232 -0.011
+ 5.891 -0.100 -0.158 0.356 -0.305 -0.470 -0.455 -0.412 -0.067 -0.300 -0.020 0.354 0.153
+ 6.786 -0.279 -0.457 0.216 -0.526 -0.511 -0.695 -0.474 -0.085 -0.331 -0.162 0.428 0.091
+ 7.444 -0.207 -0.302 0.188 -0.492 -0.330 -0.726 -0.313 0.018 -0.213 -0.347 0.440 -0.098
+ 7.576 -0.220 -0.351 0.072 -0.619 -0.345 -0.830 -0.225 0.133 -0.046 -0.342 0.414 -0.211
+ 7.545 -0.259 -0.341 0.003 -0.614 -0.256 -0.677 -0.093 0.279 0.086 -0.448 0.287 -0.261
+ 7.648 -0.016 -0.235 0.036 -0.624 -0.323 -0.714 -0.135 0.316 0.183 -0.472 0.206 -0.175
+ 7.456 0.108 -0.331 -0.224 -0.725 -0.336 -0.680 -0.218 0.271 0.073 -0.495 0.209 -0.172
+ 7.381 0.161 0.215 -0.247 -0.530 -0.272 -0.620 -0.124 0.142 -0.047 -0.103 0.255 -0.255
+ 6.974 0.271 -0.105 -0.105 -0.381 -0.236 -0.718 -0.196 0.056 0.033 -0.246 0.338 -0.193
+ 6.488 0.400 -0.145 -0.147 -0.369 -0.156 -0.466 -0.237 0.080 0.054 -0.110 0.068 -0.130
+ 5.857 0.405 -0.202 -0.120 -0.278 -0.144 -0.359 -0.009 0.204 0.050 -0.285 0.011 -0.126
+ 5.840 0.591 0.021 0.003 -0.404 -0.260 -0.292 -0.182 -0.040 0.198 -0.210 0.061 -0.140
+ 5.575 0.547 -0.118 -0.031 -0.228 -0.154 -0.205 -0.221 -0.275 -0.080 -0.161 -0.062 -0.207
+ 5.377 0.509 -0.315 -0.179 -0.238 -0.353 -0.320 -0.320 -0.212 0.029 -0.154 -0.128 -0.140
+ 5.398 0.363 -0.181 -0.179 -0.409 -0.209 -0.260 -0.270 -0.108 0.067 -0.092 -0.068 0.005
+ 5.585 0.393 -0.313 -0.159 -0.394 -0.197 -0.298 -0.369 -0.244 0.061 -0.126 -0.009 -0.004
+ 5.722 0.339 -0.099 -0.128 -0.215 -0.294 -0.290 -0.302 -0.084 0.003 -0.182 0.033 -0.094
+ 5.870 0.317 0.016 -0.035 -0.134 -0.151 -0.214 -0.103 -0.157 -0.036 -0.276 -0.036 -0.100
+ 5.951 0.274 -0.108 -0.018 -0.127 -0.050 -0.170 -0.291 -0.226 -0.165 -0.256 0.023 -0.035
+ 6.047 0.480 0.070 -0.323 -0.202 -0.173 -0.212 -0.268 -0.199 -0.071 -0.180 -0.060 -0.015
+ 5.779 0.672 0.151 -0.237 -0.384 -0.159 -0.287 -0.271 -0.168 -0.061 -0.207 -0.072 0.035
+ 7.500 -0.221 0.007 -0.152 -0.270 -0.316 -0.224 -0.210 -0.206 -0.049 -0.126 0.070 0.020
+ 6.550 -0.011 -0.056 -0.391 -0.545 -0.408 -0.230 -0.171 -0.219 -0.100 -0.191 0.006 0.015
+ 5.926 0.621 -0.011 -0.395 -0.424 0.143 -0.303 -0.014 -0.162 -0.320 -0.152 -0.198 -0.142
+ 5.900 0.699 -0.033 -0.369 -0.431 -0.049 -0.295 -0.037 -0.110 -0.105 -0.125 -0.122 -0.201
+ 6.059 0.741 -0.288 -0.550 -0.386 0.015 -0.382 -0.104 -0.192 0.075 -0.025 -0.047 -0.167
+ 6.547 0.776 -0.496 -0.509 -0.311 0.194 -0.481 -0.131 -0.071 0.107 -0.105 -0.118 -0.201
+ 6.674 0.353 -0.607 -0.312 -0.352 0.228 -0.416 -0.047 0.021 0.010 -0.233 -0.192 -0.316
+ 7.182 0.080 -0.713 -0.310 -0.646 0.008 -0.394 0.161 0.191 -0.043 -0.280 0.062 -0.026
+ 7.565 0.088 -0.729 -0.113 -0.608 -0.139 -0.529 0.178 0.205 -0.097 -0.285 0.165 -0.156
+ 7.783 -0.122 -0.722 -0.068 -0.647 -0.224 -0.409 0.356 0.109 0.016 -0.229 0.252 -0.129
+ 7.437 -0.298 -0.628 0.047 -0.728 -0.415 -0.249 0.166 -0.045 0.105 -0.164 0.016 -0.282
+ 7.414 -0.212 -0.445 0.202 -0.649 -0.404 -0.139 0.112 -0.138 0.253 -0.228 0.010 -0.204
+ 7.075 -0.354 -0.350 0.242 -0.770 -0.480 -0.163 -0.007 -0.280 0.036 -0.121 0.139 -0.041
+ 6.551 -0.436 -0.230 0.356 -0.580 -0.428 0.051 -0.024 -0.178 0.011 -0.102 0.130 -0.065
+ 5.884 -0.261 -0.347 0.237 -0.362 -0.133 0.059 -0.204 -0.247 0.011 -0.143 0.021 -0.056
+ 6.251 -0.259 0.017 0.164 -0.207 -0.175 -0.230 -0.136 -0.043 -0.100 -0.201 -0.157 0.029
+ 6.330 -0.210 0.126 -0.034 -0.043 -0.100 -0.274 -0.164 -0.049 -0.112 -0.223 -0.053 -0.020
+ 7.690 -0.428 0.059 0.163 -0.142 -0.128 -0.441 -0.296 -0.168 -0.161 -0.149 -0.183 -0.125
+ 8.127 -0.722 -0.002 0.231 -0.039 0.007 -0.308 -0.259 -0.181 -0.159 -0.049 -0.010 -0.169
+ 7.712 -0.384 -0.125 -0.019 -0.039 -0.101 -0.292 -0.168 -0.049 -0.020 0.074 -0.133 -0.114
+ 7.734 -0.173 -0.175 -0.176 -0.205 -0.091 -0.122 -0.292 -0.107 0.023 -0.080 -0.280 -0.065
+ 6.925 -0.073 -0.299 -0.001 -0.533 -0.020 -0.067 -0.079 -0.135 0.031 -0.089 -0.201 -0.057
+ 7.033 -0.212 -0.310 0.100 -0.430 -0.252 -0.285 -0.348 -0.276 -0.108 0.003 0.154 -0.103
+ 8.344 -0.305 -0.280 0.170 -0.344 -0.172 -0.312 -0.201 -0.034 0.086 0.004 0.093 -0.128
+ 6.889 -0.369 -0.146 0.114 -0.286 -0.077 -0.199 -0.014 -0.275 0.067 0.068 0.090 -0.083
+ 6.056 -0.094 -0.082 0.174 -0.271 -0.094 -0.113 -0.213 -0.318 0.060 0.081 0.003 -0.085
+ 6.703 -0.414 -0.144 0.360 -0.616 -0.154 -0.144 -0.074 -0.185 0.088 0.133 0.009 -0.044
+ 6.746 -0.287 -0.135 0.319 -0.446 -0.082 -0.303 -0.142 -0.284 -0.023 0.062 0.123 -0.038
+ 6.975 -0.316 -0.312 0.140 -0.420 -0.180 -0.233 -0.266 -0.239 0.210 -0.062 -0.051 -0.187
+ 6.857 -0.289 -0.117 0.296 -0.318 -0.084 -0.129 -0.421 -0.448 -0.002 -0.352 -0.159 -0.149
+ 7.403 -0.385 -0.139 0.251 -0.132 -0.035 -0.231 -0.319 -0.385 -0.138 -0.260 -0.074 -0.178
+ 7.131 -0.437 -0.014 0.313 -0.111 -0.129 -0.127 -0.178 -0.264 -0.206 -0.185 -0.185 -0.378
+ 6.754 -0.263 0.235 0.196 -0.282 -0.054 -0.140 -0.336 -0.325 -0.024 -0.278 -0.099 -0.159
+ 6.350 -0.266 0.407 0.364 -0.392 -0.072 -0.096 -0.360 -0.263 0.180 -0.282 -0.091 -0.151
+ 6.081 -0.362 0.300 0.203 -0.323 -0.044 0.119 -0.329 -0.361 0.049 -0.540 -0.182 -0.111
+ 6.158 -0.196 0.476 0.375 -0.389 -0.130 0.179 -0.185 -0.301 0.049 -0.542 -0.224 -0.165
+ 7.453 0.025 0.129 0.199 -0.482 -0.122 -0.089 -0.264 -0.264 0.075 -0.320 0.009 -0.017
+ 7.667 0.118 0.185 -0.177 -0.505 -0.099 -0.200 -0.355 -0.326 -0.178 -0.202 -0.027 -0.021
+ 7.306 0.154 0.066 -0.058 -0.540 -0.030 -0.212 -0.354 -0.283 -0.054 -0.232 0.032 -0.078
+ 6.065 0.011 0.152 0.023 -0.459 -0.015 -0.203 -0.310 -0.233 -0.100 -0.019 -0.072 -0.091
+ 6.209 -0.060 0.216 0.112 -0.374 -0.118 -0.322 -0.475 -0.282 -0.150 -0.034 0.132 -0.001
+ 6.172 -0.115 -0.183 0.105 -0.497 -0.053 -0.268 -0.285 -0.068 0.092 -0.035 0.192 -0.011
+ 6.191 -0.437 -0.369 0.080 -0.435 0.106 -0.091 -0.242 -0.195 0.137 -0.032 0.014 -0.104
+ 6.250 -0.569 -0.207 0.119 -0.487 -0.104 -0.444 -0.294 -0.176 0.057 -0.109 -0.082 0.026
+ 5.932 0.114 -0.033 0.253 -0.422 -0.393 -0.469 -0.405 -0.114 -0.024 -0.122 -0.092 0.034
+ 4.350 0.116 -0.117 0.250 -0.327 -0.116 -0.218 -0.227 -0.105 -0.050 -0.213 -0.012 -0.026
+ 3.780 0.204 -0.008 0.343 -0.135 -0.098 -0.134 -0.097 -0.104 0.020 -0.213 0.037 0.064
+ 3.761 0.310 -0.053 0.187 -0.197 -0.048 -0.042 -0.027 -0.049 -0.049 -0.100 0.127 -0.099
+ 3.632 0.191 -0.059 0.104 0.047 0.066 -0.157 -0.126 0.003 -0.130 -0.102 -0.201 -0.256
+ 3.594 0.170 -0.206 0.084 0.070 0.206 -0.073 -0.127 -0.068 -0.001 -0.173 -0.102 -0.299
+ 4.447 0.323 -0.196 -0.083 -0.065 0.042 -0.381 -0.105 -0.104 0.155 0.034 0.021 -0.069
+ 6.560 0.319 -0.474 -0.221 -0.450 0.072 -0.778 -0.137 -0.056 0.309 -0.166 0.014 0.036
+ 7.288 0.210 -0.476 -0.340 -0.548 0.042 -0.879 -0.075 0.012 0.103 -0.379 0.008 -0.022
+ 7.535 0.020 -0.539 -0.263 -0.553 0.121 -0.913 -0.105 0.005 0.031 -0.436 -0.007 -0.115
+ 7.564 -0.053 -0.664 -0.211 -0.513 0.180 -0.938 -0.208 -0.104 -0.004 -0.427 0.024 -0.138
+ 7.704 0.123 -0.605 -0.237 -0.621 0.200 -0.823 0.041 -0.102 -0.022 -0.429 0.008 -0.150
+ 7.761 0.200 -0.609 -0.229 -0.545 0.180 -0.849 -0.005 -0.043 -0.073 -0.464 0.162 -0.190
+ 7.783 -0.061 -0.685 -0.324 -0.540 -0.068 -0.943 0.027 -0.098 -0.220 -0.409 0.183 -0.252
+ 8.163 -0.181 -0.574 -0.134 -0.476 -0.108 -0.806 0.161 -0.031 0.026 -0.400 0.127 -0.481
+ 7.908 -0.040 -0.671 -0.159 -0.728 -0.238 -0.533 0.260 0.105 -0.089 -0.353 0.183 -0.527
+ 7.366 -0.014 -0.665 -0.159 -0.705 -0.276 -0.624 0.297 0.199 -0.055 -0.333 0.268 -0.314
+ 6.805 -0.020 -0.533 -0.062 -0.482 -0.306 -0.639 0.255 0.096 -0.013 -0.161 0.315 -0.263
+ 6.441 0.043 -0.386 0.120 -0.607 -0.382 -0.593 0.163 -0.009 0.067 -0.054 0.173 -0.646
+ 6.503 0.137 -0.468 0.106 -0.598 -0.437 -0.633 0.174 0.114 0.114 0.155 0.196 -0.246
+ 6.380 0.268 -0.429 0.130 -0.683 -0.339 -0.743 0.136 0.140 -0.048 -0.070 0.128 -0.210
+ 6.308 0.010 -0.523 0.166 -0.659 -0.274 -0.716 -0.047 0.023 -0.137 0.007 0.232 -0.124
+ 6.008 0.263 -0.516 0.207 -0.533 -0.260 -0.626 -0.097 -0.058 -0.145 -0.064 0.149 -0.132
+ 5.671 0.239 -0.295 0.103 -0.407 -0.234 -0.547 -0.101 0.116 -0.084 -0.034 0.318 -0.102
+ 5.338 0.260 -0.165 0.137 -0.294 -0.203 -0.615 -0.182 -0.071 -0.177 0.082 0.176 -0.202
+ 4.900 0.199 -0.184 0.133 -0.315 -0.121 -0.391 0.054 0.062 -0.063 -0.157 0.014 -0.155
+ 4.678 0.382 -0.150 0.125 -0.254 -0.240 -0.332 0.043 -0.089 -0.011 -0.053 0.101 -0.060
+ 4.372 0.211 -0.257 -0.016 -0.224 -0.199 -0.506 0.028 -0.186 0.041 0.013 0.044 -0.067
+ 4.426 0.202 -0.249 0.211 0.054 -0.018 -0.151 0.048 0.003 0.032 -0.087 0.100 -0.297
+ 4.164 0.353 -0.183 0.240 -0.203 0.055 -0.352 -0.004 -0.042 0.035 -0.002 0.021 -0.206
+ 4.236 0.293 -0.219 0.194 -0.150 0.071 -0.351 -0.027 -0.053 -0.075 -0.049 0.147 -0.023
+ 3.869 0.185 -0.252 0.077 -0.169 0.135 -0.148 0.044 0.008 -0.113 -0.031 0.152 0.025
+ 3.672 0.066 -0.397 0.145 -0.088 0.029 -0.255 -0.096 0.007 0.024 0.031 0.073 -0.099
+ 3.624 0.104 -0.520 0.192 -0.044 -0.032 -0.094 0.001 0.175 0.074 0.087 0.194 0.005
+ 3.697 0.283 -0.405 0.204 0.027 0.142 -0.186 -0.005 -0.024 -0.085 0.054 -0.005 -0.118
+ 3.711 0.343 -0.217 0.158 0.124 -0.018 -0.183 -0.102 0.045 0.008 -0.110 0.205 0.050
+ 3.403 0.199 -0.391 0.001 0.005 0.055 -0.073 0.004 0.162 -0.015 -0.064 0.117 0.025
+ 3.331 0.327 -0.065 0.016 -0.104 0.118 -0.238 -0.057 0.119 0.056 -0.132 0.130 0.086
+ 3.324 0.336 -0.125 0.028 -0.254 -0.133 -0.092 -0.022 -0.012 -0.056 0.050 0.027 -0.114
+ 3.232 0.060 -0.414 -0.008 -0.023 0.016 -0.104 -0.024 0.011 0.074 0.097 0.050 -0.075
+ 3.568 0.227 -0.411 0.034 0.071 0.039 -0.191 -0.016 -0.051 -0.041 -0.018 -0.027 -0.095
+ 3.386 0.293 -0.233 -0.044 0.121 0.082 -0.070 -0.222 -0.124 -0.070 0.145 0.126 0.011
+ 3.406 0.327 -0.132 0.054 0.107 0.057 -0.136 -0.197 -0.051 -0.001 -0.083 0.174 0.175
+ 3.444 0.419 -0.067 0.035 -0.137 -0.003 -0.039 -0.083 -0.050 -0.087 -0.005 0.008 -0.142
+ 3.486 0.245 -0.320 0.129 0.010 -0.115 -0.178 -0.130 -0.044 0.112 -0.011 -0.004 -0.040
+ 3.216 0.164 -0.325 -0.009 -0.026 -0.089 -0.042 0.049 0.066 0.135 -0.138 -0.050 0.068
+ 3.304 0.191 -0.209 0.032 -0.032 0.057 -0.199 -0.029 -0.213 0.033 -0.036 0.004 0.004
+ 3.460 0.178 -0.257 0.106 -0.051 -0.037 -0.103 -0.152 -0.162 0.115 0.020 0.148 -0.013
+ 3.157 0.107 -0.210 0.129 0.038 0.130 -0.117 -0.223 -0.047 0.241 0.063 0.192 0.039
+ 3.483 0.245 -0.203 0.205 -0.027 0.086 -0.187 -0.211 -0.142 0.048 0.081 0.202 -0.016
+ 3.537 0.220 -0.217 0.067 -0.144 -0.006 -0.119 -0.137 -0.028 -0.058 0.084 0.179 -0.036
+ 3.416 0.215 -0.268 -0.042 -0.231 -0.042 -0.053 -0.156 -0.066 0.024 0.141 0.155 0.001
+ 3.376 0.257 -0.032 0.079 -0.046 0.118 -0.280 -0.210 -0.057 -0.058 0.053 -0.061 -0.082
+ 3.123 0.092 -0.171 0.148 -0.104 -0.008 -0.180 -0.132 -0.025 0.036 0.008 -0.065 -0.128
+ 3.121 0.106 -0.489 -0.012 0.092 -0.037 -0.203 0.014 0.072 -0.020 -0.043 0.081 -0.002
+ 3.133 0.244 -0.233 0.130 0.067 0.119 -0.259 -0.206 -0.059 0.027 -0.052 -0.037 -0.000
+ 3.088 0.389 -0.062 -0.013 -0.110 0.080 -0.175 -0.268 0.103 0.020 0.019 0.017 0.000
+ 3.185 0.401 -0.264 -0.030 -0.053 -0.087 -0.328 -0.207 0.022 0.043 0.110 -0.028 -0.049
+ 3.004 0.036 -0.170 -0.026 -0.314 0.072 -0.024 0.002 -0.113 0.049 0.258 0.170 0.016
+ 3.203 0.257 -0.249 -0.162 -0.023 0.077 0.014 -0.056 -0.175 0.058 0.215 0.214 0.084
+ 3.355 0.274 -0.171 -0.095 -0.299 -0.032 -0.223 -0.170 -0.085 -0.095 -0.118 0.154 0.118
+ 3.406 0.365 -0.118 0.038 -0.080 -0.038 -0.062 -0.149 0.116 0.149 -0.120 0.068 -0.136
+ 3.078 0.280 -0.182 0.038 -0.116 0.004 -0.258 -0.237 0.089 0.002 0.033 0.100 0.021
+ 3.289 0.256 -0.187 0.297 0.113 0.115 -0.230 -0.301 -0.052 0.143 0.046 0.157 0.010
+ 3.068 0.071 -0.265 0.113 0.116 0.086 -0.159 -0.115 -0.078 0.048 -0.007 0.007 -0.022
+ 3.474 0.324 -0.184 0.115 -0.044 -0.042 -0.110 -0.169 -0.214 -0.108 0.007 0.003 0.034
+ 3.786 0.428 -0.019 0.159 -0.018 -0.082 -0.240 -0.307 -0.132 -0.086 0.022 -0.011 -0.052
+ 3.735 0.091 -0.274 0.060 -0.184 -0.060 -0.186 -0.094 0.022 -0.068 -0.098 -0.009 -0.128
+ 3.511 0.000 -0.216 0.167 -0.166 -0.101 -0.122 -0.221 -0.051 0.082 0.061 0.162 -0.082
+ 3.402 0.087 -0.201 -0.061 -0.213 0.003 -0.157 -0.141 -0.180 0.016 0.030 0.055 -0.074
+ 3.448 0.216 -0.144 0.177 -0.043 0.047 -0.064 0.084 -0.091 -0.028 -0.197 -0.011 0.062
+ 3.492 0.154 -0.208 0.082 0.040 -0.008 0.022 0.003 0.016 0.022 -0.101 -0.048 -0.180
+ 3.321 0.343 0.029 0.224 -0.025 0.098 -0.002 -0.278 -0.060 0.097 0.028 0.092 0.036
+ 3.262 0.384 -0.210 0.047 0.013 0.043 -0.025 -0.071 -0.011 0.105 0.011 0.075 0.015
+ 3.693 0.213 -0.341 0.029 -0.080 -0.005 -0.064 -0.236 0.005 0.236 0.159 -0.022 0.011
+ 3.489 0.141 -0.320 0.083 0.003 0.077 -0.140 -0.292 -0.046 0.022 0.214 0.003 -0.102
+ 3.523 0.275 -0.166 0.083 -0.092 0.109 -0.038 -0.125 -0.063 -0.034 0.102 -0.010 -0.008
+ 3.498 0.321 -0.376 -0.031 0.034 0.174 -0.017 -0.129 -0.112 -0.041 -0.089 -0.085 0.082
+ 3.527 0.116 -0.292 0.062 0.124 0.147 -0.061 -0.094 -0.062 0.055 -0.165 0.035 -0.044
+ 3.752 0.076 -0.279 0.033 0.009 -0.051 -0.033 -0.067 -0.061 0.028 0.008 0.131 0.044
+ 3.744 -0.231 -0.293 -0.067 0.035 0.075 0.135 -0.070 -0.082 -0.011 -0.185 -0.083 -0.095
+ 4.057 -0.412 -0.208 -0.008 0.015 0.077 0.020 -0.130 -0.106 0.179 0.059 -0.006 0.046
+ 4.343 -0.644 -0.053 0.027 -0.250 -0.085 0.088 0.147 -0.140 0.293 0.099 -0.132 0.071
+ 5.003 -0.504 0.020 -0.002 -0.201 -0.002 -0.032 0.082 -0.180 0.124 -0.002 -0.103 -0.032
+ 5.292 -0.615 -0.054 -0.099 -0.123 -0.045 -0.116 -0.148 -0.241 0.118 -0.110 -0.060 -0.039
+ 5.497 -0.873 0.066 -0.082 -0.169 -0.024 0.015 -0.142 -0.065 -0.047 -0.162 -0.039 -0.098
+ 5.806 -0.964 -0.016 0.062 0.056 -0.005 -0.209 -0.073 -0.138 0.042 -0.142 -0.009 0.027
+ 5.686 -1.036 -0.152 0.027 0.106 0.039 -0.142 0.067 -0.046 0.147 0.093 -0.029 -0.049
+ 6.063 -1.007 -0.040 0.238 0.067 -0.063 -0.361 -0.183 -0.140 0.113 0.045 0.031 0.164
+ 6.133 -1.106 -0.120 -0.054 -0.107 -0.168 0.077 -0.165 -0.232 0.221 -0.032 -0.023 -0.059
+ 6.117 -0.942 -0.387 -0.019 0.097 -0.070 0.079 0.019 -0.217 0.069 -0.101 -0.176 -0.085
+ 6.061 -1.036 -0.296 -0.040 -0.015 0.013 -0.025 -0.008 -0.164 0.010 -0.118 -0.162 -0.101
+ 5.772 -0.905 -0.195 0.109 0.044 -0.018 -0.026 0.055 -0.216 -0.104 -0.021 -0.076 0.151
+ 5.665 -1.119 -0.072 0.180 -0.014 0.013 -0.003 -0.004 -0.092 -0.009 0.030 -0.097 0.073
+ 5.317 -1.008 -0.122 -0.032 -0.024 -0.213 -0.015 0.066 0.067 0.105 -0.104 -0.002 0.012
+ 5.693 -0.842 -0.113 0.009 -0.081 -0.010 -0.119 -0.050 -0.164 0.055 -0.091 -0.054 -0.021
+ 5.805 -0.840 -0.155 0.039 -0.096 -0.085 0.110 -0.088 -0.343 0.162 -0.009 0.002 -0.077
+ 5.350 -0.665 -0.141 0.071 -0.074 -0.075 0.055 -0.122 -0.261 0.085 0.070 -0.050 0.002
+ 5.141 -0.375 0.013 -0.058 0.033 0.067 -0.027 0.012 -0.265 -0.009 -0.001 0.090 0.019
+ 5.478 -0.536 -0.293 0.275 0.096 0.114 -0.222 -0.238 -0.068 -0.060 -0.031 0.017 -0.023
+ 5.273 -0.553 -0.331 0.193 -0.008 0.034 -0.343 -0.168 0.019 0.085 -0.037 0.086 -0.028
+ 4.091 0.013 -0.148 0.058 0.047 0.040 -0.140 -0.136 0.004 0.172 0.041 0.049 -0.128
+ 3.658 0.240 -0.009 0.125 0.035 0.121 -0.064 0.026 -0.062 0.048 -0.026 -0.111 -0.130
+ 5.644 -0.649 0.260 0.113 0.215 -0.301 0.044 -0.216 -0.329 0.023 0.036 -0.129 0.207
+ 5.244 -0.809 0.245 0.199 0.162 -0.190 0.025 -0.276 -0.187 0.065 0.096 -0.188 0.196
+ 3.526 0.046 -0.072 -0.046 0.020 0.165 0.081 -0.319 -0.130 -0.000 -0.084 0.232 0.011
+ 4.126 -0.326 0.097 -0.197 0.040 0.001 -0.161 -0.313 -0.236 -0.036 -0.071 0.088 -0.007
+ 4.270 -0.433 0.258 -0.046 0.086 0.307 -0.336 -0.194 -0.138 0.087 0.024 0.094 0.019
+ 4.021 0.248 0.105 -0.013 0.064 -0.051 -0.152 -0.130 -0.153 -0.012 -0.072 0.139 -0.103
+ 3.861 0.228 -0.048 0.153 -0.143 -0.048 -0.189 -0.162 -0.095 -0.050 -0.028 0.153 -0.006
+ 5.331 -0.063 0.106 0.187 -0.238 0.033 -0.231 -0.094 -0.088 -0.005 -0.049 0.153 -0.147
+ 9.892 -0.297 0.554 0.214 -0.051 -0.202 -0.237 -0.167 -0.076 -0.247 -0.079 0.059 -0.246
+ 12.353 -0.380 0.411 0.441 0.001 -0.284 -0.445 -0.161 -0.318 -0.352 -0.183 -0.104 -0.339
+ 13.936 -0.458 0.120 0.624 -0.284 -0.205 -0.645 0.010 -0.585 -0.313 -0.282 0.037 -0.346
+ 14.756 -0.547 0.135 0.641 -0.405 -0.248 -0.724 0.066 -0.641 -0.314 -0.266 0.020 -0.371
+ 14.922 -0.590 0.153 0.672 -0.436 -0.240 -0.789 0.091 -0.680 -0.325 -0.288 0.064 -0.470
+ 14.925 -0.665 0.206 0.720 -0.407 -0.287 -0.759 0.053 -0.690 -0.318 -0.297 0.075 -0.497
+ 14.685 -0.597 0.223 0.708 -0.386 -0.269 -0.744 0.036 -0.694 -0.267 -0.328 0.088 -0.528
+ 14.022 -0.511 0.215 0.681 -0.287 -0.209 -0.691 0.032 -0.610 -0.254 -0.382 0.121 -0.511
+ 12.646 -0.285 0.185 0.271 -0.373 -0.310 -0.368 0.123 -0.423 -0.193 -0.397 0.063 -0.361
+ 8.965 0.208 0.538 0.368 0.005 -0.114 -0.163 0.175 -0.281 -0.036 -0.390 -0.001 -0.301
+ 7.414 0.343 0.516 0.595 0.118 -0.048 -0.330 0.364 -0.244 -0.106 -0.384 0.181 -0.446
+ 7.016 0.496 0.622 0.767 0.074 -0.089 -0.340 0.250 -0.178 -0.091 -0.210 0.213 -0.450
+ 6.717 0.605 0.534 0.697 0.054 -0.078 -0.338 0.331 -0.222 -0.098 -0.299 0.239 -0.393
+ 7.925 0.214 0.426 0.406 0.420 -0.012 -0.082 -0.288 -0.259 -0.143 -0.272 0.128 -0.334
+ 11.598 -0.415 0.278 0.152 0.107 -0.190 -0.195 -0.213 -0.219 -0.312 -0.278 -0.026 -0.446
+ 12.460 -0.742 0.297 0.231 0.066 -0.349 -0.277 -0.062 -0.259 -0.347 -0.140 -0.027 -0.320
+ 13.172 -0.444 0.112 0.494 -0.100 -0.377 -0.372 -0.046 -0.450 -0.351 -0.303 0.033 -0.458
+ 13.709 -0.400 0.119 0.587 -0.135 -0.416 -0.446 -0.140 -0.560 -0.293 -0.165 -0.033 -0.477
+ 13.711 -0.260 0.067 0.675 -0.266 -0.385 -0.505 -0.104 -0.559 -0.275 -0.186 -0.078 -0.481
+ 13.801 -0.197 0.011 0.663 -0.385 -0.326 -0.512 -0.116 -0.501 -0.286 -0.232 -0.065 -0.506
+ 13.363 -0.083 -0.074 0.685 -0.332 -0.285 -0.532 -0.068 -0.491 -0.278 -0.252 -0.062 -0.542
+ 12.386 -0.076 -0.041 0.593 -0.119 -0.304 -0.383 -0.023 -0.448 -0.322 -0.295 0.008 -0.560
+ 9.902 0.035 0.084 0.538 0.047 -0.320 -0.302 0.076 -0.337 -0.234 -0.305 0.156 -0.422
+ 7.016 0.494 0.523 0.624 0.192 -0.296 -0.013 0.217 -0.094 -0.258 -0.181 0.034 -0.401
+ 6.950 0.379 0.325 0.327 0.022 -0.027 0.183 0.359 -0.129 -0.166 -0.232 -0.211 -0.341
+ 6.761 0.429 0.656 0.228 0.045 -0.167 -0.059 0.208 -0.111 -0.238 -0.219 -0.133 -0.306
+ 6.277 0.283 0.580 0.045 0.132 -0.201 -0.041 -0.172 -0.097 -0.184 -0.124 -0.169 -0.171
+ 6.205 0.046 0.804 0.276 0.253 -0.161 0.086 -0.214 -0.200 -0.319 -0.061 -0.258 -0.229
+ 6.160 -0.091 0.792 0.230 0.110 0.020 0.023 0.111 -0.201 -0.279 -0.078 -0.338 -0.349
+ 8.814 -0.353 0.457 -0.127 -0.097 0.093 -0.073 -0.018 -0.078 -0.022 -0.136 -0.156 -0.313
+ 10.640 -0.510 0.568 -0.082 -0.123 -0.084 -0.185 -0.116 -0.191 -0.172 -0.170 -0.122 -0.342
+ 11.844 -0.727 0.553 0.224 -0.098 -0.433 -0.246 -0.017 -0.283 -0.471 -0.074 -0.051 -0.429
+ 13.032 -0.453 0.217 0.384 0.009 -0.480 -0.346 -0.184 -0.298 -0.427 -0.159 -0.037 -0.432
+ 13.781 -0.370 0.086 0.489 -0.312 -0.297 -0.461 -0.052 -0.562 -0.332 -0.175 -0.003 -0.381
+ 14.175 -0.351 0.012 0.668 -0.388 -0.260 -0.599 -0.055 -0.612 -0.275 -0.328 0.059 -0.413
+ 14.453 -0.329 -0.072 0.668 -0.403 -0.306 -0.585 -0.047 -0.620 -0.300 -0.342 0.061 -0.413
+ 14.506 -0.302 -0.056 0.617 -0.389 -0.356 -0.531 -0.129 -0.561 -0.350 -0.349 0.058 -0.405
+ 14.118 -0.212 -0.099 0.626 -0.228 -0.359 -0.578 -0.081 -0.537 -0.365 -0.433 0.147 -0.438
+ 13.527 -0.300 0.064 0.528 -0.071 -0.387 -0.570 -0.043 -0.408 -0.404 -0.479 0.189 -0.318
+ 12.658 -0.180 0.153 0.326 -0.228 -0.343 -0.508 0.185 -0.262 -0.294 -0.517 0.007 -0.257
+ 12.904 -0.254 0.213 0.423 -0.147 -0.273 -0.646 -0.054 -0.374 -0.292 -0.473 0.061 -0.278
+ 13.154 -0.316 0.096 0.526 -0.021 -0.276 -0.508 -0.174 -0.475 -0.361 -0.440 0.215 -0.110
+ 13.276 -0.087 -0.067 0.695 -0.218 -0.343 -0.533 -0.142 -0.420 -0.265 -0.456 0.169 -0.162
+ 13.593 -0.034 -0.157 0.619 -0.326 -0.226 -0.586 -0.066 -0.450 -0.357 -0.360 0.131 -0.243
+ 13.898 -0.036 -0.235 0.699 -0.420 -0.221 -0.641 -0.047 -0.503 -0.308 -0.349 0.142 -0.370
+ 13.775 0.040 -0.332 0.770 -0.462 -0.225 -0.687 0.013 -0.480 -0.223 -0.380 0.138 -0.502
+ 13.348 0.055 -0.312 0.818 -0.426 -0.191 -0.686 0.050 -0.376 -0.090 -0.484 0.070 -0.475
+ 12.170 0.316 -0.441 0.781 -0.391 -0.116 -0.512 0.063 -0.217 -0.188 -0.545 -0.046 -0.371
+ 8.769 0.818 -0.414 0.430 0.052 0.013 -0.178 0.050 -0.269 -0.088 -0.434 -0.362 -0.387
+ 6.757 0.729 0.012 0.619 0.370 -0.041 -0.357 -0.002 -0.168 -0.119 -0.343 -0.234 -0.422
+ 6.729 0.937 -0.002 0.475 0.365 0.004 -0.211 -0.069 -0.169 -0.134 -0.421 -0.074 -0.462
+ 6.100 0.765 0.180 0.536 0.369 -0.075 -0.169 0.006 -0.220 -0.038 -0.277 -0.199 -0.419
+ 6.241 0.502 0.031 0.547 0.275 -0.052 -0.241 -0.065 -0.193 -0.251 -0.292 -0.046 -0.315
+ 6.362 0.391 -0.137 0.312 0.016 -0.022 0.064 0.072 -0.044 0.015 -0.256 -0.121 -0.247
+ 8.895 0.191 -0.533 0.168 -0.220 -0.149 0.019 -0.001 -0.013 -0.027 -0.416 -0.331 -0.244
+ 6.416 0.498 -0.152 0.221 -0.123 -0.058 0.051 0.052 -0.018 0.007 -0.358 -0.297 -0.194
+ 4.778 0.406 0.218 0.348 0.049 -0.084 -0.132 -0.052 -0.168 0.020 0.075 0.180 -0.157
+ 4.538 0.372 -0.106 0.241 -0.095 -0.112 -0.233 0.156 -0.153 -0.053 -0.029 -0.082 -0.076
+ 4.291 0.203 -0.193 0.177 0.013 -0.127 -0.175 -0.095 -0.226 -0.174 -0.050 -0.059 -0.180
+ 4.029 0.172 -0.072 0.234 -0.028 -0.248 -0.124 0.016 -0.223 -0.104 -0.143 -0.080 -0.131
+ 4.152 0.119 -0.295 0.287 0.081 -0.070 -0.050 -0.028 -0.285 -0.032 -0.014 0.021 -0.204
+ 4.240 0.198 -0.294 0.253 0.012 -0.114 -0.118 0.032 -0.210 -0.065 -0.090 0.150 0.011
+ 3.851 0.286 -0.095 0.246 -0.166 -0.051 -0.191 -0.070 -0.070 -0.198 -0.024 0.098 -0.082
+ 3.742 0.239 -0.170 0.177 -0.083 0.022 -0.110 0.120 -0.138 -0.051 0.170 0.187 -0.109
+ 3.722 0.186 -0.150 0.173 -0.024 -0.026 -0.116 0.088 -0.065 0.073 0.012 0.066 -0.014
+ 3.913 0.157 -0.285 0.054 0.017 0.059 -0.027 -0.077 -0.278 -0.263 -0.075 0.037 -0.023
+ 3.768 0.267 -0.282 0.147 -0.026 -0.105 -0.114 -0.064 -0.210 -0.095 -0.021 0.109 -0.018
+ 3.784 0.321 -0.437 0.044 0.015 0.005 -0.103 -0.135 -0.123 0.055 -0.056 0.066 -0.051
+ 3.907 0.263 -0.187 0.202 0.110 0.020 0.070 -0.063 -0.193 -0.126 -0.042 -0.033 -0.080
+ 3.533 0.196 -0.149 0.092 0.005 -0.084 -0.172 -0.013 -0.147 0.153 0.039 0.060 -0.015
+ 3.521 0.254 -0.099 0.043 0.163 0.077 -0.172 -0.124 -0.179 0.065 0.103 0.148 -0.122
+ 3.751 0.176 -0.131 0.194 0.223 0.104 0.027 -0.131 -0.254 0.050 0.123 0.195 -0.073
+ 8.193 0.328 -0.434 -0.138 -0.257 -0.186 -0.570 -0.427 -0.204 -0.004 -0.100 -0.165 -0.087
+ 8.105 0.410 -0.318 -0.277 -0.247 -0.272 -0.858 -0.660 -0.074 0.193 0.048 -0.171 0.043
+ 6.775 -0.363 -0.024 -0.224 -0.437 -0.780 -0.464 -0.288 0.289 0.502 0.285 -0.258 -0.008
+ 6.874 -0.069 -0.635 -0.489 -0.197 -0.254 -0.274 0.009 0.142 0.185 -0.005 -0.195 -0.171
+ 9.556 0.151 -1.343 -0.587 -0.322 -0.083 -0.354 0.011 -0.142 0.311 -0.030 -0.158 0.034
+ 12.328 0.885 -1.161 -0.876 -0.288 0.068 -0.456 0.223 -0.358 0.245 -0.370 -0.290 -0.057
+ 12.996 0.833 -1.402 -0.634 -0.396 0.041 -0.340 0.219 -0.300 0.275 -0.577 -0.248 -0.057
+ 13.546 0.539 -1.437 -0.305 -0.514 -0.089 -0.315 0.160 -0.147 0.277 -0.650 -0.190 -0.004
+ 13.709 0.643 -1.357 -0.278 -0.489 -0.216 -0.277 0.095 -0.134 0.159 -0.504 -0.211 -0.047
+ 14.430 0.358 -1.271 -0.138 -0.494 -0.437 -0.277 0.169 -0.089 0.091 -0.508 -0.102 -0.143
+ 14.075 0.525 -1.065 -0.038 -0.477 -0.622 -0.352 0.171 -0.188 0.063 -0.432 0.102 -0.281
+ 14.105 0.512 -0.921 0.245 -0.505 -0.628 -0.547 0.159 -0.428 0.074 -0.462 0.232 -0.343
+ 13.406 0.547 -0.798 0.474 -0.457 -0.621 -0.546 0.014 -0.505 0.003 -0.538 0.357 -0.373
+ 13.003 0.455 -0.681 0.587 -0.373 -0.454 -0.399 -0.114 -0.483 -0.097 -0.686 0.323 -0.398
+ 13.012 0.557 -0.598 0.603 -0.382 -0.566 -0.441 -0.212 -0.480 -0.064 -0.607 0.362 -0.431
+ 13.651 0.383 -0.554 0.643 -0.446 -0.555 -0.452 -0.159 -0.525 -0.039 -0.453 0.216 -0.455
+ 13.951 0.269 -0.581 0.674 -0.546 -0.598 -0.389 -0.093 -0.556 -0.018 -0.410 0.147 -0.464
+ 13.870 0.196 -0.447 0.697 -0.624 -0.531 -0.389 -0.093 -0.589 -0.047 -0.357 0.013 -0.414
+ 13.723 -0.017 -0.228 0.780 -0.627 -0.517 -0.427 -0.072 -0.546 0.041 -0.322 0.024 -0.385
+ 13.143 0.092 -0.164 0.664 -0.692 -0.419 -0.227 0.029 -0.459 0.039 -0.357 -0.078 -0.367
+ 12.309 0.252 -0.108 0.529 -0.603 -0.415 -0.007 0.050 -0.394 0.044 -0.286 -0.157 -0.286
+ 11.132 0.497 0.129 0.408 -0.112 -0.309 0.077 0.027 -0.360 0.116 -0.381 -0.178 -0.307
+ 10.661 0.668 0.171 0.283 0.058 -0.460 0.187 -0.075 -0.257 0.320 -0.606 -0.130 -0.223
+ 10.954 0.580 0.222 0.223 0.064 -0.507 0.117 -0.006 -0.330 0.280 -0.628 -0.141 -0.160
+ 11.083 0.425 0.287 0.292 0.000 -0.517 0.056 -0.034 -0.313 0.229 -0.611 -0.196 -0.116
+ 11.546 0.016 0.465 0.457 -0.347 -0.328 -0.063 -0.157 -0.299 0.172 -0.472 -0.196 -0.147
+ 12.037 -0.136 0.512 0.445 -0.744 -0.230 -0.087 -0.237 -0.274 0.329 -0.342 -0.241 -0.185
+ 12.024 -0.145 0.461 0.469 -0.974 -0.034 -0.230 -0.139 -0.415 0.294 -0.308 -0.326 -0.202
+ 11.909 -0.239 0.659 0.421 -0.936 -0.002 -0.250 -0.152 -0.412 0.147 -0.331 -0.397 -0.176
+ 11.699 -0.259 0.750 0.445 -0.869 -0.006 -0.293 -0.127 -0.458 0.095 -0.309 -0.393 -0.167
+ 11.610 -0.365 0.820 0.456 -0.805 -0.041 -0.293 -0.185 -0.494 0.098 -0.235 -0.348 -0.199
+ 11.701 -0.340 0.700 0.567 -0.804 -0.227 -0.187 -0.148 -0.532 0.075 -0.264 -0.307 -0.207
+ 11.710 0.019 0.291 0.631 -0.482 -0.572 -0.090 -0.065 -0.586 0.032 -0.257 -0.348 -0.119
+ 11.356 0.343 0.137 0.412 0.001 -0.687 -0.279 0.046 -0.636 0.008 -0.245 -0.412 -0.035
+ 10.839 0.705 -0.044 0.395 0.261 -0.627 -0.358 -0.108 -0.560 0.004 -0.271 -0.365 -0.024
+ 10.851 0.924 -0.187 0.404 0.097 -0.549 -0.354 0.007 -0.420 -0.086 -0.385 -0.313 0.003
+ 11.397 0.585 0.081 0.249 0.060 -0.583 -0.349 0.079 -0.394 -0.130 -0.319 -0.412 0.066
+ 11.619 0.618 -0.108 0.474 -0.075 -0.668 -0.289 0.092 -0.542 -0.010 -0.237 -0.357 -0.041
+ 12.185 0.344 -0.128 0.707 -0.245 -0.712 -0.220 0.064 -0.513 -0.037 -0.209 -0.215 -0.166
+ 11.976 0.231 0.079 0.654 -0.388 -0.528 -0.207 0.118 -0.476 0.022 -0.274 -0.132 -0.136
+ 10.430 0.542 0.364 0.468 0.047 -0.349 -0.167 -0.012 -0.244 0.076 -0.583 -0.074 -0.241
+ 10.224 0.522 0.480 0.452 0.116 -0.400 -0.138 -0.128 -0.006 -0.199 -0.468 0.025 -0.269
+ 10.215 0.629 0.484 0.265 0.062 -0.333 -0.023 -0.120 -0.087 -0.250 -0.475 -0.040 -0.169
+ 10.030 0.483 0.645 0.268 -0.054 -0.347 0.038 -0.088 -0.222 -0.040 -0.456 -0.088 -0.317
+ 9.479 0.588 0.481 0.276 -0.079 -0.526 0.093 -0.003 -0.055 -0.029 -0.395 -0.158 -0.270
+ 8.522 0.594 0.124 0.229 -0.004 -0.239 0.179 -0.114 0.004 -0.036 -0.272 -0.241 -0.305
+ 6.987 0.618 0.247 0.248 -0.044 -0.302 0.108 -0.002 0.140 0.034 -0.325 -0.247 -0.249
+ 6.275 0.385 -0.024 0.048 -0.163 -0.321 0.223 0.162 0.244 0.089 -0.471 -0.224 -0.199
+ 5.518 0.361 0.060 -0.066 -0.289 -0.222 0.117 0.100 0.013 -0.028 -0.456 -0.190 -0.186
+ 9.753 -0.717 -0.097 0.067 -0.485 0.101 -0.365 -0.034 -0.106 -0.211 -0.044 -0.152 -0.125
+ 12.218 -1.272 0.099 -0.134 -0.384 -0.027 -0.390 -0.248 -0.082 -0.148 -0.175 -0.067 -0.247
+ 12.664 -2.094 0.546 -0.045 -0.350 -0.035 -0.383 -0.183 -0.063 -0.175 -0.066 -0.148 -0.175
+ 12.787 -2.594 0.650 0.061 -0.563 0.082 -0.105 -0.281 0.005 -0.080 0.006 -0.076 -0.174
+ 13.152 -2.483 0.546 0.229 -0.549 0.009 -0.003 -0.210 -0.139 -0.263 -0.120 -0.173 -0.124
+ 13.078 -2.295 0.435 0.337 -0.506 -0.012 -0.043 -0.285 -0.194 -0.184 -0.014 -0.130 -0.319
+ 12.850 -2.227 0.276 0.416 -0.292 -0.131 -0.010 -0.021 -0.088 -0.223 0.013 -0.047 -0.291
+ 13.180 -1.969 0.484 0.503 -0.420 -0.222 -0.017 -0.035 -0.113 -0.236 -0.006 0.044 -0.090
+ 12.628 -1.823 0.276 0.594 -0.612 -0.232 -0.090 -0.084 -0.093 -0.299 -0.190 0.154 -0.092
+ 11.328 -1.283 0.227 0.793 -0.509 -0.139 0.010 -0.078 -0.090 -0.109 -0.189 0.068 -0.174
+ 13.131 0.310 -0.354 0.280 -0.444 -0.600 -0.258 -0.221 -0.133 -0.204 -0.200 0.047 -0.238
+ 14.941 0.236 -0.752 0.212 -0.545 -0.760 -0.342 -0.124 -0.228 -0.066 -0.196 0.193 -0.285
+ 15.598 -0.116 -0.670 0.066 -0.693 -0.790 -0.472 0.091 -0.225 0.054 -0.202 0.126 -0.359
+ 15.665 -0.073 -0.809 -0.005 -0.689 -0.722 -0.612 0.234 -0.333 0.063 -0.235 0.141 -0.418
+ 15.681 -0.227 -0.765 -0.215 -0.612 -0.743 -0.488 0.411 -0.331 0.181 -0.329 0.034 -0.457
+ 15.359 -0.289 -0.724 -0.198 -0.540 -0.758 -0.489 0.403 -0.300 0.216 -0.278 0.007 -0.418
+ 15.087 -0.228 -0.707 -0.190 -0.530 -0.797 -0.451 0.375 -0.335 0.187 -0.241 -0.014 -0.384
+ 14.449 -0.011 -0.547 -0.118 -0.460 -0.912 -0.413 0.226 -0.324 0.184 -0.147 0.016 -0.366
+ 13.474 0.110 -0.211 0.032 -0.549 -1.020 -0.235 0.030 -0.285 0.160 -0.179 0.060 -0.359
+ 11.635 -0.091 0.052 0.264 -0.542 -0.989 -0.163 -0.193 -0.342 0.095 -0.101 0.070 -0.174
+ 9.009 0.126 -0.311 0.079 -0.433 -0.703 -0.066 0.227 -0.066 0.268 0.097 -0.033 -0.219
+ 7.810 0.194 -0.087 0.083 -0.674 -0.810 -0.404 0.337 -0.083 0.006 0.115 0.153 -0.366
+ 7.217 0.042 -0.116 0.117 -0.389 -0.821 -0.284 0.356 -0.126 0.071 0.140 0.125 -0.200
+ 8.065 -0.926 0.053 0.407 -0.558 -0.272 -0.614 0.111 0.034 -0.100 0.081 -0.033 -0.210
+ 8.346 -0.993 -0.101 0.189 -0.553 -0.132 -0.599 0.033 0.209 0.052 0.100 -0.158 -0.267
+ 6.281 0.069 -0.198 -0.026 -0.359 -0.631 -0.453 0.165 0.109 0.160 -0.023 -0.042 -0.158
+ 5.981 -0.037 -0.223 -0.248 -0.408 -0.534 -0.335 0.387 0.168 0.253 -0.038 -0.078 -0.131
+ 5.965 0.052 -0.205 -0.103 -0.242 -0.691 -0.518 0.430 -0.042 0.097 -0.060 0.058 -0.228
+ 10.544 -1.378 0.029 -0.244 -0.124 -0.091 -0.432 0.001 -0.054 -0.238 -0.227 0.018 -0.042
+ 11.361 -1.529 -0.078 -0.412 -0.260 -0.146 -0.504 -0.043 -0.118 -0.170 -0.141 0.056 0.011
+ 8.345 -1.548 0.326 -0.525 -0.150 -0.033 -0.340 0.113 -0.079 -0.081 -0.092 0.026 -0.038
+ 9.234 -1.185 0.812 -0.625 -0.166 0.010 -0.455 0.045 -0.188 -0.091 -0.147 -0.125 -0.109
+ 10.593 -0.646 0.972 -0.146 -0.153 -0.173 -0.382 -0.169 -0.324 -0.284 -0.112 -0.181 -0.250
+ 11.762 -0.322 0.667 0.257 -0.232 -0.478 -0.692 0.184 -0.728 -0.048 -0.239 0.009 -0.380
+ 12.625 -0.076 0.257 0.188 -0.302 -0.588 -0.656 0.076 -0.585 -0.151 -0.179 0.061 -0.253
+ 13.172 -0.035 0.093 0.108 -0.524 -0.570 -0.653 0.089 -0.417 -0.113 -0.170 0.083 -0.228
+ 13.480 0.030 -0.261 0.090 -0.475 -0.561 -0.805 0.200 -0.425 -0.002 -0.193 0.330 -0.376
+ 13.648 0.027 -0.358 -0.079 -0.446 -0.645 -0.789 0.295 -0.233 0.028 -0.247 0.337 -0.466
+ 13.587 0.046 -0.372 -0.182 -0.404 -0.625 -0.829 0.252 -0.130 0.064 -0.298 0.340 -0.382
+ 13.352 0.173 -0.274 -0.282 -0.420 -0.498 -0.803 -0.022 0.041 0.168 -0.484 0.431 -0.342
+ 12.810 -0.046 -0.175 -0.313 -0.307 -0.444 -0.515 -0.178 0.158 0.218 -0.560 0.206 -0.130
+ 12.236 -0.160 -0.272 -0.520 -0.302 -0.368 -0.509 -0.037 0.183 0.129 -0.546 -0.037 -0.083
+ 11.508 -1.263 0.492 -0.550 -0.066 -0.196 -0.354 0.091 0.159 0.002 -0.259 -0.145 -0.028
+ 11.391 -1.815 0.808 -0.657 0.121 -0.028 -0.140 -0.083 -0.020 -0.179 -0.132 -0.141 -0.041
+ 10.728 -1.874 1.047 -0.719 -0.059 -0.076 -0.104 -0.042 0.015 -0.163 -0.224 0.040 -0.008
+ 10.702 -1.846 1.012 -0.697 0.007 -0.222 -0.298 -0.104 -0.217 -0.131 -0.267 0.095 -0.019
+ 10.396 -1.788 0.956 -0.511 -0.007 -0.387 -0.206 0.020 -0.114 -0.070 -0.170 -0.049 -0.266
+ 9.282 -1.755 0.713 -0.542 0.023 -0.240 -0.252 -0.096 -0.189 -0.028 0.019 0.074 -0.057
+ 8.391 -1.100 0.663 -0.640 -0.209 -0.354 -0.411 -0.246 -0.291 -0.258 -0.155 0.105 -0.082
+ 8.441 -1.075 0.440 -0.409 -0.254 0.009 -0.485 -0.098 -0.357 -0.169 -0.351 -0.185 -0.221
+ 9.459 -1.476 0.606 -0.333 -0.384 0.094 -0.513 -0.092 -0.313 -0.249 -0.254 -0.288 -0.227
+ 10.440 -2.138 0.807 0.107 -0.560 0.112 -0.308 -0.029 -0.157 -0.103 -0.220 -0.160 -0.089
+ 12.629 -1.775 0.428 -0.271 -0.676 0.049 -0.242 -0.121 -0.186 -0.167 -0.146 -0.148 -0.196
+ 13.204 -1.405 0.136 -0.197 -0.724 -0.086 -0.336 -0.218 -0.211 -0.244 -0.192 -0.040 -0.178
+ 12.532 -0.402 0.240 0.268 -0.355 -0.311 -0.435 -0.299 -0.091 -0.168 -0.363 0.051 -0.091
+ 12.307 0.500 -0.207 0.281 -0.087 -0.539 -0.683 0.030 -0.531 -0.000 -0.500 -0.011 -0.077
+ 12.206 0.424 -0.222 0.321 -0.113 -0.366 -0.995 0.362 -0.618 -0.058 -0.396 0.032 -0.096
+ 11.776 0.280 -0.250 0.563 -0.151 -0.264 -0.805 -0.005 -0.399 -0.098 -0.428 0.037 0.024
+ 9.967 0.301 -0.256 0.668 0.098 -0.381 -0.672 -0.067 -0.358 -0.138 -0.385 -0.003 0.107
+ 7.847 0.071 0.088 0.611 0.114 -0.144 -0.260 0.068 -0.026 -0.080 -0.403 -0.122 0.192
+ 7.554 -0.201 0.271 0.803 0.293 -0.073 0.001 0.001 -0.069 -0.183 -0.344 -0.329 -0.102
+ 8.470 -0.053 -0.111 0.615 -0.100 0.010 -0.209 -0.106 0.008 -0.094 -0.314 -0.086 -0.103
+ 12.650 -0.125 -0.396 0.494 -0.371 -0.267 -0.700 0.007 -0.329 -0.107 -0.365 0.159 -0.155
+ 13.149 0.064 -0.407 0.157 -0.194 -0.728 -0.648 0.014 -0.310 0.031 -0.278 0.197 -0.065
+ 13.163 0.165 -0.481 0.111 -0.156 -0.910 -0.619 -0.026 -0.310 0.131 -0.286 0.324 -0.129
+ 13.422 0.197 -0.525 0.145 -0.293 -0.909 -0.597 -0.007 -0.334 0.125 -0.240 0.265 -0.165
+ 13.577 -0.002 -0.365 0.231 -0.376 -0.856 -0.556 0.024 -0.361 0.051 -0.127 0.144 -0.113
+ 13.202 0.020 -0.302 0.372 -0.435 -0.761 -0.635 0.183 -0.502 0.040 -0.054 0.011 -0.053
+ 13.038 -0.065 -0.244 0.415 -0.379 -0.741 -0.578 0.065 -0.494 0.090 -0.149 0.055 -0.073
+ 12.731 -0.000 -0.269 0.477 -0.369 -0.735 -0.574 0.128 -0.668 0.153 -0.179 0.026 -0.099
+ 12.571 0.027 -0.275 0.447 -0.195 -0.811 -0.568 0.211 -0.779 0.106 -0.160 -0.079 -0.118
+ 12.434 0.128 -0.158 0.254 0.160 -0.823 -0.591 0.191 -0.773 0.048 -0.361 -0.063 -0.210
+ 11.802 0.628 -0.190 0.050 0.144 -0.448 -0.441 -0.139 -0.747 0.178 -0.416 -0.305 -0.199
+ 10.911 0.933 -0.022 -0.249 -0.013 -0.293 -0.164 -0.115 -0.813 0.015 -0.400 -0.043 -0.142
+ 10.368 0.968 0.228 -0.336 -0.237 -0.339 -0.061 -0.050 -0.771 -0.017 -0.441 -0.045 -0.093
+ 10.349 1.007 0.256 -0.316 -0.285 -0.373 -0.136 0.076 -0.793 -0.029 -0.428 -0.160 -0.103
+ 10.736 0.992 0.212 -0.327 -0.420 -0.364 -0.212 0.143 -0.849 -0.106 -0.398 -0.185 -0.059
+ 11.102 1.159 0.065 -0.429 -0.427 -0.354 -0.243 0.097 -1.006 -0.022 -0.267 -0.095 -0.088
+ 11.916 1.020 -0.101 -0.366 -0.388 -0.332 -0.359 -0.030 -0.865 0.033 -0.122 -0.034 -0.122
+ 12.248 1.008 -0.373 -0.445 -0.446 -0.332 -0.339 -0.202 -0.717 0.213 0.060 -0.024 -0.119
+ 12.745 0.864 -0.569 -0.467 -0.466 -0.291 -0.420 -0.314 -0.503 0.245 0.090 -0.150 -0.118
+ 13.115 0.712 -0.639 -0.439 -0.506 -0.364 -0.412 -0.380 -0.319 0.418 0.155 -0.277 -0.138
+ 13.409 0.531 -0.728 -0.285 -0.499 -0.370 -0.422 -0.391 -0.206 0.481 0.002 -0.367 -0.123
+ 13.585 0.469 -0.855 -0.285 -0.594 -0.402 -0.394 -0.224 -0.116 0.429 -0.255 -0.213 -0.073
+ 13.717 0.300 -0.745 -0.170 -0.697 -0.183 -0.617 -0.141 -0.094 0.434 -0.400 -0.143 -0.052
+ 13.375 0.319 -0.652 -0.189 -0.610 -0.228 -0.599 -0.186 -0.114 0.446 -0.376 -0.095 -0.021
+ 12.988 0.335 -0.598 -0.144 -0.639 -0.197 -0.765 -0.223 -0.181 0.617 -0.396 -0.057 0.033
+ 12.534 0.228 -0.395 -0.001 -0.578 -0.074 -0.851 -0.311 -0.462 0.649 -0.373 -0.102 0.048
+ 11.474 0.273 -0.215 0.045 -0.353 0.022 -0.615 -0.295 -0.547 0.317 -0.324 -0.234 -0.036
+ 11.819 0.214 -0.272 0.049 -0.371 0.127 -0.757 -0.248 -0.469 0.285 -0.441 -0.117 -0.041
+ 12.551 0.162 -0.350 0.060 -0.490 0.046 -0.834 -0.290 -0.351 0.402 -0.462 -0.065 0.032
+ 12.916 0.098 -0.373 0.034 -0.514 -0.094 -0.921 -0.245 -0.311 0.465 -0.478 -0.005 0.073
+ 13.168 0.076 -0.397 -0.007 -0.493 -0.238 -0.926 -0.241 -0.225 0.447 -0.432 -0.014 0.118
+ 13.245 0.175 -0.541 0.124 -0.460 -0.401 -0.839 -0.236 -0.187 0.339 -0.386 -0.111 0.101
+ 13.062 0.421 -0.653 -0.031 -0.101 -0.502 -0.850 -0.057 -0.321 0.159 -0.201 -0.149 -0.071
+ 12.505 0.821 -0.753 -0.297 0.145 -0.355 -0.977 -0.066 -0.203 -0.028 -0.219 0.061 -0.259
+ 11.701 1.096 -0.669 -0.415 0.232 -0.256 -0.965 -0.228 -0.201 -0.015 -0.308 0.142 -0.263
+ 11.099 1.339 -0.672 -0.530 0.248 -0.236 -0.826 -0.411 -0.215 0.030 -0.337 0.104 -0.162
+ 10.664 1.690 -0.679 -0.600 0.082 -0.090 -0.725 -0.452 -0.238 -0.095 -0.272 0.132 -0.154
+ 10.794 1.858 -0.753 -0.649 0.062 -0.198 -0.572 -0.367 -0.288 -0.219 -0.243 0.157 -0.177
+ 10.754 1.693 -0.622 -0.657 0.091 -0.244 -0.534 -0.249 -0.401 -0.266 -0.183 0.211 -0.183
+ 10.433 1.430 -0.543 -0.656 0.106 -0.316 -0.535 -0.299 -0.400 -0.398 -0.062 0.293 -0.208
+ 11.098 1.448 -0.574 -0.814 0.255 -0.538 -0.374 -0.278 -0.526 -0.300 -0.099 0.249 -0.299
+ 11.185 1.254 -0.437 -0.745 0.237 -0.466 -0.385 -0.211 -0.512 -0.263 0.081 0.059 -0.303
+ 10.753 1.249 -0.529 -0.660 0.189 -0.503 -0.393 -0.355 -0.512 -0.256 0.196 0.022 -0.380
+ 11.343 1.373 -0.743 -0.529 0.147 -0.615 -0.411 -0.463 -0.467 -0.140 0.182 -0.020 -0.459
+ 11.743 1.175 -0.687 -0.214 -0.007 -0.586 -0.436 -0.422 -0.372 -0.026 0.121 -0.198 -0.271
+ 12.146 0.835 -0.655 -0.070 -0.129 -0.427 -0.502 -0.499 -0.281 0.123 -0.182 -0.142 -0.144
+ 12.579 0.345 -0.459 0.004 -0.263 -0.295 -0.759 -0.375 -0.360 0.283 -0.306 -0.106 0.035
+ 12.789 0.201 -0.343 -0.029 -0.327 -0.258 -0.804 -0.304 -0.335 0.310 -0.428 -0.100 0.066
+ 12.404 0.126 -0.228 -0.020 -0.259 -0.143 -0.624 -0.291 -0.250 0.316 -0.517 -0.164 0.104
+ 11.886 -0.304 0.304 -0.221 -0.064 -0.116 -0.778 -0.113 -0.149 -0.060 -0.490 -0.114 -0.022
+ 11.185 -1.205 0.698 -0.238 0.271 -0.184 -0.684 -0.045 -0.260 -0.105 -0.461 -0.006 -0.056
+ 10.745 -1.535 1.059 -0.256 0.091 -0.156 -0.600 -0.121 -0.266 -0.106 -0.460 0.017 -0.035
+ 10.797 -1.605 1.125 -0.379 0.032 -0.147 -0.598 -0.111 -0.259 -0.101 -0.259 0.025 -0.111
+ 11.326 -1.329 0.940 -0.452 -0.076 0.023 -0.628 0.094 -0.026 -0.033 -0.367 -0.087 -0.140
+ 11.042 -1.319 0.763 -0.165 -0.242 0.176 -0.841 0.031 -0.082 -0.131 -0.276 0.102 0.101
+ 10.076 -0.725 0.485 0.264 -0.352 -0.020 -0.636 -0.150 0.240 -0.238 -0.193 0.083 0.079
+ 9.309 0.355 0.298 -0.023 -0.243 -0.321 -0.288 -0.101 0.071 0.014 -0.374 -0.085 -0.002
+ 9.181 0.407 0.275 0.170 0.303 -0.305 -0.177 -0.062 0.032 -0.243 -0.318 -0.224 -0.121
+ 9.540 0.597 0.179 0.145 0.239 -0.350 -0.075 -0.138 -0.085 -0.077 -0.252 -0.253 -0.277
+ 10.021 0.375 0.168 0.182 0.234 -0.296 -0.191 -0.112 -0.082 0.035 -0.126 -0.288 -0.281
+ 10.455 0.492 -0.152 0.368 0.311 -0.477 -0.127 -0.102 -0.193 -0.040 -0.127 -0.223 -0.243
+ 10.415 0.132 0.094 0.326 0.376 -0.365 -0.113 -0.027 -0.504 0.170 -0.203 -0.189 -0.283
+ 10.243 0.284 0.180 0.124 0.322 -0.407 -0.032 -0.019 -0.583 0.104 -0.195 -0.170 -0.144
+ 10.862 0.644 0.029 -0.196 0.157 -0.411 -0.186 -0.142 -0.472 0.131 -0.007 -0.265 -0.103
+ 11.350 0.770 -0.135 -0.293 0.078 -0.490 -0.418 -0.116 -0.611 0.275 0.016 -0.237 -0.058
+ 11.677 0.685 -0.022 -0.389 0.173 -0.413 -0.515 -0.110 -0.634 0.379 -0.078 -0.268 -0.037
+ 11.774 0.660 -0.127 -0.228 0.207 -0.472 -0.520 -0.109 -0.648 0.404 -0.087 -0.410 0.066
+ 12.069 0.520 -0.188 -0.168 0.174 -0.432 -0.531 -0.093 -0.612 0.312 -0.119 -0.396 -0.033
+ 11.773 0.568 -0.155 -0.168 0.190 -0.475 -0.491 -0.150 -0.646 0.337 -0.187 -0.357 -0.056
+ 11.621 0.672 -0.241 -0.166 0.280 -0.538 -0.489 -0.161 -0.675 0.310 -0.240 -0.364 -0.089
+ 11.639 0.696 -0.347 -0.029 0.316 -0.515 -0.490 -0.241 -0.680 0.218 -0.216 -0.381 -0.091
+ 11.801 0.664 -0.397 -0.046 0.182 -0.370 -0.494 -0.286 -0.649 0.147 -0.169 -0.507 0.026
+ 11.611 0.707 -0.306 -0.009 0.191 -0.285 -0.475 -0.114 -0.658 0.228 -0.307 -0.340 -0.063
+ 11.406 0.518 -0.194 -0.020 0.175 -0.240 -0.378 -0.189 -0.477 0.150 -0.207 -0.420 -0.093
+ 10.876 0.506 -0.224 -0.084 0.091 -0.257 -0.399 -0.104 -0.522 0.250 -0.105 -0.315 -0.092
+ 10.882 0.344 -0.229 -0.099 0.008 -0.328 -0.611 -0.099 -0.607 0.288 -0.107 -0.374 -0.076
+ 10.839 0.400 -0.429 -0.025 0.052 -0.382 -0.561 0.058 -0.381 0.213 -0.194 -0.405 -0.015
+ 11.632 0.315 -0.439 -0.047 -0.108 -0.270 -0.616 0.113 -0.490 0.200 -0.199 -0.338 -0.001
+ 11.981 0.228 -0.604 -0.123 -0.123 -0.479 -0.741 0.190 -0.512 0.218 -0.173 -0.344 0.085
+ 12.585 0.239 -0.560 -0.002 -0.127 -0.591 -0.763 0.219 -0.395 0.337 -0.108 -0.251 0.197
+ 12.855 0.230 -0.693 0.077 -0.218 -0.865 -0.623 0.178 -0.222 0.195 0.030 -0.201 0.239
+ 13.484 0.134 -0.560 0.117 -0.209 -0.851 -0.563 0.305 -0.210 0.101 0.025 -0.323 0.151
+ 13.206 0.205 -0.729 0.309 -0.393 -0.653 -0.519 0.313 -0.246 0.153 0.040 -0.169 0.051
+ 12.892 0.171 -0.786 0.485 -0.638 -0.546 -0.386 0.425 -0.341 0.272 0.007 -0.091 -0.056
+ 12.682 0.093 -0.576 0.419 -0.662 -0.603 -0.271 0.405 -0.422 0.355 -0.032 -0.148 -0.079
+ 12.343 0.281 -0.553 0.452 -0.691 -0.620 -0.167 0.361 -0.554 0.494 -0.171 -0.089 -0.146
+ 11.904 0.311 -0.300 0.241 -0.529 -0.512 0.024 0.127 -0.530 0.502 -0.220 -0.196 -0.085
+ 11.368 0.254 0.003 -0.062 -0.285 -0.437 -0.044 0.086 -0.385 0.372 -0.469 -0.104 0.017
+ 10.665 0.444 -0.127 -0.229 -0.017 -0.634 -0.111 0.150 -0.335 0.216 -0.305 -0.020 -0.066
+ 9.962 0.309 0.024 -0.109 0.200 -0.628 0.049 0.121 -0.280 0.058 -0.293 -0.017 -0.027
+ 9.036 -0.160 0.429 0.008 0.143 -0.688 0.049 0.001 -0.277 0.005 -0.379 -0.242 -0.104
+ 7.816 0.075 0.222 0.455 -0.376 -0.469 -0.296 0.163 -0.235 -0.076 -0.201 -0.172 -0.020
+ 7.406 -0.019 0.108 0.536 -0.472 -0.312 -0.158 0.187 -0.423 -0.385 -0.227 -0.088 -0.032
+ 7.194 -0.070 0.032 0.586 -0.396 -0.153 -0.162 0.080 -0.359 -0.204 -0.156 -0.099 -0.076
+ 7.147 0.050 0.112 0.677 -0.300 -0.084 -0.347 0.143 -0.421 -0.214 -0.116 -0.145 -0.025
+ 6.935 0.104 0.076 0.697 -0.223 -0.270 -0.501 -0.019 -0.340 -0.310 -0.200 -0.036 0.063
+ 6.593 0.193 0.102 0.658 -0.147 -0.158 -0.307 0.047 -0.432 -0.270 -0.340 -0.241 -0.067
+ 6.077 0.266 0.118 0.602 -0.041 -0.154 -0.348 -0.034 -0.257 -0.263 -0.300 -0.225 -0.069
+ 6.012 0.221 0.087 0.544 -0.158 -0.195 -0.429 -0.086 -0.308 -0.296 -0.164 -0.228 0.035
+ 6.253 0.326 -0.092 0.481 -0.090 -0.157 -0.378 0.045 -0.124 -0.247 -0.257 -0.084 0.064
+ 6.687 -0.084 -0.140 0.410 -0.245 0.060 -0.252 0.005 0.107 -0.189 -0.213 0.027 0.014
+ 6.712 0.065 -0.031 0.401 -0.261 -0.037 -0.365 -0.118 0.102 -0.160 -0.153 0.030 0.002
+ 6.506 0.436 0.140 0.248 -0.218 -0.094 -0.442 -0.090 -0.066 -0.352 -0.212 -0.169 0.065
+ 6.730 0.686 -0.041 0.302 -0.151 -0.138 -0.487 -0.280 0.036 -0.328 -0.337 -0.204 0.017
+ 6.430 0.857 -0.196 0.303 -0.065 -0.053 -0.726 -0.252 0.018 -0.362 -0.406 -0.303 -0.009
+ 6.559 0.667 -0.295 0.288 0.100 -0.090 -0.684 -0.277 -0.300 -0.272 -0.324 -0.204 -0.051
+ 6.563 0.636 -0.343 -0.028 -0.080 -0.070 -0.657 -0.338 -0.345 -0.051 -0.229 -0.130 -0.015
+ 6.439 0.631 -0.218 -0.257 -0.255 -0.054 -0.480 -0.095 -0.462 -0.258 -0.217 -0.137 0.056
+ 6.503 0.373 0.044 -0.014 -0.174 0.063 -0.324 0.020 -0.597 -0.154 -0.336 -0.133 -0.053
+ 6.585 0.449 0.144 0.103 -0.228 -0.137 -0.313 0.254 -0.436 -0.159 -0.255 -0.220 -0.208
+ 6.635 0.538 0.101 -0.061 -0.200 -0.135 -0.183 0.214 -0.436 -0.233 -0.292 -0.155 -0.089
+ 6.764 0.365 0.215 -0.106 -0.271 -0.020 -0.125 0.078 -0.434 -0.085 -0.304 -0.148 -0.191
+ 6.779 0.283 0.165 -0.019 -0.263 -0.049 0.044 0.107 -0.598 -0.325 -0.323 -0.125 -0.106
+ 7.057 0.290 0.144 -0.055 -0.395 -0.089 -0.092 0.045 -0.623 -0.302 -0.159 -0.020 0.018
+ 7.137 0.353 0.056 -0.351 -0.306 -0.046 -0.114 0.040 -0.470 -0.118 0.042 0.104 -0.129
+ 7.408 0.386 -0.044 -0.228 -0.353 -0.076 -0.197 -0.038 -0.329 0.023 0.028 -0.023 -0.275
+ 7.526 0.407 -0.018 -0.321 -0.233 -0.062 -0.209 -0.032 -0.423 -0.007 0.131 -0.070 -0.216
+ 7.595 0.296 -0.202 -0.220 -0.431 -0.165 -0.397 -0.030 -0.221 0.257 0.240 0.083 -0.325
+ 7.320 0.185 -0.084 -0.118 -0.332 -0.277 -0.448 0.019 -0.295 0.119 -0.055 -0.086 -0.241
+ 7.231 -0.058 -0.223 -0.133 -0.193 -0.188 -0.285 0.210 -0.312 0.081 0.020 -0.064 -0.267
+ 6.908 -0.208 0.009 -0.064 -0.109 -0.204 -0.281 0.131 -0.130 0.145 0.010 -0.149 -0.322
+ 7.498 -0.108 -0.035 0.031 -0.423 -0.265 -0.340 0.158 -0.228 0.012 0.094 0.050 -0.257
+ 7.717 -0.143 -0.233 -0.103 -0.331 -0.297 -0.354 0.192 -0.101 0.185 0.091 -0.083 -0.314
+ 7.893 -0.091 -0.252 -0.243 -0.444 -0.167 -0.321 0.144 0.025 0.292 0.049 -0.192 -0.239
+ 7.679 -0.195 -0.364 -0.362 -0.602 -0.192 -0.278 0.225 0.146 0.210 0.048 -0.029 -0.244
+ 7.888 -0.088 -0.345 -0.396 -0.491 -0.239 -0.339 0.206 0.003 0.096 0.020 0.044 -0.349
+ 8.049 -0.132 -0.302 -0.290 -0.389 -0.233 -0.364 0.288 0.044 0.004 -0.215 -0.016 -0.180
+ 7.886 -0.161 -0.270 -0.092 -0.298 -0.222 -0.459 0.245 0.281 0.056 -0.295 -0.015 -0.191
+ 7.799 -0.199 -0.178 0.056 -0.154 -0.223 -0.451 0.349 0.112 -0.039 -0.169 0.009 -0.229
+ 7.704 -0.344 -0.148 0.120 -0.176 -0.219 -0.358 0.427 0.064 0.021 -0.148 -0.012 -0.178
+ 7.793 -0.143 -0.059 -0.050 -0.310 -0.393 -0.408 0.366 0.168 0.027 -0.244 0.162 -0.060
+ 7.533 -0.302 -0.046 0.043 -0.269 -0.454 -0.390 0.315 0.058 0.016 -0.043 0.171 -0.130
+ 7.062 -0.621 -0.196 0.161 -0.220 -0.379 -0.295 0.315 -0.012 -0.030 -0.076 -0.005 -0.172
+ 6.990 -0.510 -0.322 0.164 -0.108 -0.458 -0.431 0.167 -0.122 0.109 0.029 -0.015 -0.159
+ 6.930 -0.662 -0.224 0.158 0.094 -0.365 -0.467 0.085 -0.130 0.074 0.200 0.117 -0.215
+ 6.884 -0.735 -0.213 0.005 -0.064 -0.214 -0.388 0.068 -0.063 0.009 0.182 -0.055 -0.129
+ 6.738 -0.819 -0.209 -0.072 -0.274 -0.388 -0.537 0.116 0.052 0.097 0.186 0.114 -0.115
+ 6.851 -0.796 -0.039 0.063 -0.085 -0.267 -0.216 0.216 -0.105 -0.066 0.191 0.035 -0.171
+ 6.297 -0.941 -0.017 0.114 -0.146 -0.159 -0.189 0.136 -0.138 0.069 0.243 0.112 -0.092
+ 6.495 -0.978 -0.185 0.182 -0.082 -0.334 -0.214 0.255 -0.084 0.002 0.149 0.147 -0.118
+ 6.703 -0.887 -0.107 0.132 -0.016 -0.377 -0.288 0.367 0.094 -0.049 0.209 0.019 -0.151
+ 6.521 -0.770 -0.281 0.025 -0.117 -0.230 -0.288 0.296 -0.187 -0.166 0.035 -0.011 -0.234
+ 6.467 -0.837 -0.324 -0.021 -0.166 -0.178 -0.314 0.248 -0.110 -0.073 0.048 0.200 -0.039
+ 6.381 -0.879 -0.344 0.134 -0.111 -0.293 -0.345 0.116 -0.102 -0.068 0.049 0.055 0.005
+ 6.706 -0.458 -0.257 0.073 -0.160 -0.361 -0.428 0.205 -0.153 -0.116 0.098 -0.020 -0.238
+ 7.387 -0.110 -0.162 0.054 -0.081 -0.275 -0.536 -0.020 -0.183 -0.182 -0.000 0.016 0.080
+ 7.903 0.094 -0.193 -0.274 -0.173 -0.179 -0.546 -0.188 -0.117 0.025 -0.018 -0.062 0.053
+ 8.044 0.229 -0.476 -0.389 -0.226 -0.352 -0.699 0.004 0.012 0.005 -0.013 -0.074 -0.103
+ 8.080 0.262 -0.392 -0.215 -0.381 -0.403 -0.728 -0.214 -0.005 0.093 0.157 -0.190 -0.079
+ 8.223 0.398 -0.339 -0.273 -0.330 -0.257 -0.558 -0.241 0.015 0.092 0.121 -0.087 -0.072
+ 8.428 0.190 -0.445 -0.160 -0.295 -0.271 -0.528 -0.109 -0.072 0.146 0.107 -0.018 -0.130
+ 8.487 0.347 -0.414 -0.193 -0.361 -0.331 -0.587 -0.381 -0.116 0.033 -0.090 0.036 -0.058
+ 8.582 0.395 -0.371 -0.173 -0.284 -0.313 -0.826 -0.363 -0.085 -0.081 -0.107 -0.030 -0.108
+ 8.435 0.310 -0.371 0.069 -0.285 -0.308 -0.715 -0.268 -0.043 0.035 -0.046 -0.045 -0.081
+ 8.402 0.315 -0.393 0.167 -0.177 -0.245 -0.657 -0.303 -0.156 0.050 -0.125 -0.178 -0.102
+ 8.441 0.132 -0.229 0.562 -0.286 -0.369 -0.660 -0.234 -0.038 0.033 -0.115 -0.141 -0.078
+ 8.124 0.058 -0.258 0.309 -0.394 -0.104 -0.600 -0.227 0.026 -0.008 0.045 0.067 -0.074
+ 7.719 0.356 -0.122 0.320 -0.168 -0.448 -0.564 -0.251 -0.066 0.021 -0.114 -0.018 -0.115
+ 7.075 0.050 -0.290 0.214 -0.097 -0.133 -0.523 -0.108 0.066 0.165 0.002 -0.067 -0.077
+ 7.191 0.231 -0.253 0.063 -0.135 -0.361 -0.593 -0.077 0.027 0.158 -0.006 -0.014 -0.109
+ 6.980 0.148 -0.298 0.108 -0.087 -0.204 -0.582 -0.206 -0.125 0.119 -0.244 -0.161 0.051
+ 7.175 -0.190 -0.321 0.073 0.013 -0.353 -0.453 -0.113 0.034 -0.034 -0.157 -0.071 -0.083
+ 7.444 -0.244 -0.131 0.064 0.016 -0.554 -0.547 -0.150 -0.014 -0.391 -0.175 0.012 -0.036
+ 7.416 -0.238 -0.166 0.097 -0.232 -0.373 -0.349 -0.376 0.048 -0.288 -0.374 0.016 -0.007
+ 7.305 -0.439 -0.192 0.502 -0.211 -0.223 -0.516 -0.293 -0.022 -0.260 -0.266 0.101 -0.165
+ 7.994 -0.275 -0.044 0.501 -0.388 -0.230 -0.662 -0.288 -0.001 -0.294 -0.195 0.097 -0.266
+ 7.829 -0.463 -0.092 0.544 -0.421 -0.303 -0.564 -0.092 0.108 -0.222 -0.081 0.321 -0.217
+ 7.657 -0.301 0.026 0.649 -0.424 -0.313 -0.672 -0.161 -0.077 -0.127 0.028 0.302 -0.278
+ 7.682 -0.410 -0.069 0.579 -0.458 -0.267 -0.697 -0.176 -0.174 -0.176 0.046 0.291 -0.214
+ 7.850 -0.320 -0.160 0.487 -0.514 -0.224 -0.795 -0.239 -0.173 -0.203 -0.015 0.049 -0.233
+ 7.922 -0.212 -0.159 0.344 -0.653 -0.469 -0.733 -0.084 -0.234 -0.205 -0.111 0.088 -0.351
+ 7.191 -0.254 -0.184 0.330 -0.470 -0.446 -0.704 -0.058 -0.088 -0.079 -0.150 0.167 -0.148
+ 7.214 0.050 -0.130 0.211 -0.249 -0.255 -0.620 -0.007 -0.150 -0.186 -0.320 0.067 -0.234
+ 7.164 0.165 -0.144 0.259 -0.201 -0.243 -0.734 -0.078 -0.247 -0.206 -0.285 0.131 -0.225
+ 6.980 0.076 -0.110 0.427 -0.139 -0.148 -0.617 -0.112 -0.216 -0.345 -0.316 0.049 -0.176
+ 6.389 0.094 -0.167 0.285 -0.284 -0.155 -0.633 -0.152 -0.207 -0.355 -0.206 0.151 -0.258
+ 6.366 0.314 -0.188 0.176 -0.137 -0.159 -0.582 -0.183 -0.081 -0.186 -0.300 0.101 -0.096
+ 6.573 0.075 -0.172 0.274 -0.137 -0.272 -0.705 -0.132 -0.165 -0.233 -0.191 0.102 -0.184
+ 6.326 0.139 -0.105 0.274 -0.211 -0.250 -0.500 -0.137 -0.253 -0.233 -0.332 0.112 -0.180
+ 5.911 0.246 -0.195 0.160 -0.121 -0.348 -0.508 0.008 -0.222 -0.105 -0.184 -0.051 -0.084
+ 5.647 0.194 -0.168 0.160 -0.094 -0.337 -0.438 0.023 -0.188 -0.249 -0.238 0.158 -0.241
+ 5.910 0.093 -0.181 0.195 0.070 0.005 -0.695 -0.132 0.033 -0.055 -0.168 0.013 -0.226
+ 6.000 -0.033 -0.358 0.166 0.049 -0.025 -0.591 -0.136 -0.081 -0.212 -0.249 0.260 0.025
+ 5.716 0.216 -0.281 0.042 -0.166 -0.084 -0.512 -0.001 -0.038 -0.130 -0.277 -0.190 -0.167
+ 5.817 0.251 -0.293 0.048 -0.240 0.044 -0.497 -0.053 0.109 -0.007 -0.250 -0.181 -0.204
+ 6.014 0.385 -0.502 0.057 -0.280 -0.232 -0.487 0.090 0.175 0.099 -0.259 -0.292 -0.093
+ 6.073 0.303 -0.606 -0.137 -0.220 0.040 -0.616 -0.064 0.173 0.144 -0.147 -0.281 -0.199
+ 6.582 -0.003 -0.589 -0.002 -0.294 0.126 -0.681 -0.022 0.298 0.182 -0.315 -0.250 -0.054
+ 6.847 -0.009 -0.593 0.030 -0.304 0.149 -0.745 -0.007 0.286 0.306 -0.252 -0.174 0.114
+ 7.026 0.192 -0.476 0.038 -0.286 -0.022 -0.686 -0.012 0.129 0.399 -0.169 -0.002 -0.092
+ 6.356 0.396 -0.394 0.187 -0.242 -0.156 -0.718 0.003 0.095 0.333 -0.277 -0.059 -0.003
+ 5.982 0.476 -0.198 0.212 -0.072 -0.107 -0.752 -0.016 -0.065 0.097 -0.324 -0.137 -0.095
+ 5.573 0.526 -0.209 -0.033 -0.201 -0.327 -0.664 -0.124 -0.151 0.048 -0.359 -0.184 -0.179
+ 5.152 0.324 -0.406 -0.105 -0.050 -0.386 -0.499 -0.031 0.011 0.205 -0.326 -0.238 -0.079
+ 5.168 0.400 -0.235 -0.122 -0.001 -0.241 -0.233 -0.118 0.002 0.203 -0.242 -0.148 0.034
+ 5.812 -0.194 0.092 0.150 -0.148 0.048 -0.441 -0.168 -0.008 -0.029 -0.080 -0.185 -0.087
+ 5.152 0.047 0.109 0.136 -0.184 -0.074 -0.244 -0.176 -0.093 -0.082 -0.056 -0.134 -0.185
+ 4.688 -0.012 -0.022 0.172 -0.156 -0.084 -0.196 -0.270 -0.231 -0.124 -0.132 -0.140 -0.037
+ 4.980 -0.113 -0.056 0.324 -0.176 -0.044 -0.299 -0.216 -0.116 -0.019 -0.074 0.007 -0.036
+ 5.328 -0.101 0.184 0.495 -0.221 -0.068 -0.348 -0.168 -0.167 -0.178 -0.210 -0.176 0.051
+ 5.226 -0.168 -0.150 0.442 -0.025 -0.071 -0.374 -0.146 -0.250 -0.169 -0.206 -0.238 -0.007
+ 5.246 -0.109 -0.271 0.233 -0.258 -0.300 -0.183 -0.120 -0.232 -0.294 -0.242 -0.141 -0.079
+ 5.428 -0.087 -0.367 0.324 -0.231 -0.090 -0.068 -0.121 -0.110 -0.335 -0.233 -0.214 -0.045
+ 5.810 -0.168 -0.413 0.286 -0.298 -0.088 -0.037 0.169 -0.108 -0.286 -0.167 -0.139 -0.140
+ 6.004 -0.160 -0.433 0.402 -0.290 -0.079 -0.077 0.103 -0.162 -0.253 -0.167 -0.323 -0.380
+ 6.339 0.038 -0.239 0.457 -0.513 -0.376 -0.207 0.201 -0.045 -0.058 -0.193 -0.337 -0.367
+ 6.658 0.056 -0.555 0.257 -0.561 -0.239 -0.343 0.110 -0.115 0.037 0.024 -0.139 -0.302
+ 6.047 0.098 -0.481 0.312 -0.542 -0.163 -0.223 0.120 -0.185 0.011 -0.075 -0.183 -0.069
+ 6.372 -0.056 -0.401 0.331 -0.701 -0.214 -0.170 0.175 -0.084 -0.030 -0.180 -0.181 -0.225
+ 6.392 -0.067 -0.395 0.278 -0.700 -0.295 0.018 0.211 -0.117 0.076 -0.181 -0.121 -0.187
+ 6.482 0.042 -0.155 0.288 -0.869 -0.270 -0.076 0.255 -0.184 -0.012 -0.254 -0.097 -0.205
+ 6.117 0.098 -0.028 0.134 -0.848 -0.074 -0.036 0.262 -0.174 -0.116 -0.370 -0.019 -0.236
+ 5.764 0.015 0.023 0.296 -0.661 -0.193 -0.109 0.034 -0.130 0.157 -0.195 -0.048 -0.130
+ 5.521 -0.110 -0.162 0.104 -0.674 -0.266 -0.025 -0.105 -0.074 0.144 -0.268 -0.097 -0.081
+ 5.317 0.096 -0.199 0.068 -0.421 -0.085 -0.039 0.024 -0.173 0.049 -0.120 -0.122 -0.114
+ 5.368 0.081 -0.321 0.343 -0.226 -0.330 -0.145 0.084 -0.039 -0.043 -0.297 -0.158 -0.111
+ 5.965 -0.356 -0.473 0.243 0.041 -0.041 0.024 0.105 -0.072 -0.110 -0.205 -0.001 -0.018
+ 6.569 -0.852 -0.236 -0.019 -0.073 -0.116 -0.147 0.049 0.067 -0.181 -0.188 0.073 -0.032
+ 7.060 -1.198 -0.173 0.114 -0.119 -0.075 -0.172 -0.235 -0.113 -0.130 -0.298 -0.037 0.008
+ 7.526 -1.283 -0.121 0.272 -0.203 -0.229 -0.184 -0.042 -0.142 -0.162 -0.191 -0.023 -0.208
+ 7.822 -1.232 -0.082 0.003 -0.233 -0.161 -0.283 0.023 0.142 -0.183 -0.126 -0.024 -0.053
+ 8.183 -1.264 -0.103 0.235 -0.030 -0.206 -0.182 -0.065 0.035 -0.044 -0.046 0.043 -0.115
+ 8.268 -1.147 -0.239 0.170 -0.093 -0.268 -0.206 -0.014 -0.051 -0.203 -0.404 0.075 0.036
+ 8.270 -0.677 -0.448 0.040 -0.039 -0.002 -0.325 0.116 -0.106 -0.108 -0.329 0.181 0.063
+ 7.696 -0.106 -0.282 -0.023 0.102 -0.058 -0.168 0.010 -0.023 0.002 -0.279 0.102 -0.021
+ 9.492 0.655 0.348 0.041 -0.182 -0.423 -0.560 -0.117 -0.021 0.166 -0.445 0.112 -0.068
+ 11.383 0.636 0.115 -0.196 -0.271 -0.350 -0.776 -0.154 -0.087 0.290 -0.400 0.138 -0.083
+ 12.162 0.634 -0.160 -0.373 -0.299 -0.280 -1.048 0.032 -0.162 0.370 -0.406 0.160 -0.191
+ 10.984 0.904 -0.188 -0.118 -0.265 -0.472 -1.138 0.135 0.178 0.245 -0.271 -0.142 -0.177
+ 11.103 0.753 -0.240 -0.025 -0.312 -0.419 -0.963 0.146 -0.036 0.331 -0.308 -0.154 -0.081
+ 11.064 0.713 -0.276 -0.244 -0.228 -0.353 -0.875 0.060 0.017 0.371 -0.210 -0.151 -0.279
+ 11.284 0.691 -0.354 -0.353 -0.233 -0.306 -0.852 0.102 -0.007 0.403 -0.187 -0.162 -0.257
+ 11.749 0.691 -0.457 -0.415 -0.320 -0.254 -0.801 0.140 -0.043 0.436 -0.220 -0.207 -0.224
+ 12.247 0.635 -0.524 -0.441 -0.318 -0.293 -0.689 0.117 -0.155 0.568 -0.340 -0.157 -0.266
+ 12.476 0.512 -0.535 -0.430 -0.353 -0.242 -0.601 -0.012 -0.077 0.536 -0.299 -0.236 -0.245
+ 12.448 0.578 -0.633 -0.388 -0.368 -0.297 -0.469 -0.061 -0.132 0.571 -0.298 -0.233 -0.265
+ 12.148 0.586 -0.573 -0.457 -0.349 -0.320 -0.414 -0.067 -0.153 0.593 -0.262 -0.228 -0.330
+ 12.034 0.551 -0.505 -0.492 -0.353 -0.324 -0.381 -0.090 -0.164 0.567 -0.206 -0.209 -0.348
+ 12.110 0.607 -0.532 -0.478 -0.394 -0.296 -0.339 -0.172 -0.137 0.538 -0.147 -0.222 -0.351
+ 12.044 0.745 -0.620 -0.381 -0.458 -0.198 -0.424 -0.103 -0.222 0.527 -0.135 -0.174 -0.394
+ 12.059 0.699 -0.520 -0.347 -0.495 -0.212 -0.334 -0.130 -0.261 0.516 -0.142 -0.109 -0.400
+ 11.843 0.786 -0.558 -0.351 -0.530 -0.259 -0.135 -0.153 -0.315 0.452 -0.117 0.025 -0.415
+ 11.588 0.740 -0.418 -0.459 -0.567 -0.286 0.029 -0.244 -0.278 0.365 -0.084 0.059 -0.303
+ 11.363 0.669 -0.335 -0.494 -0.585 -0.411 0.185 -0.191 -0.241 0.140 -0.084 0.130 -0.128
+ 10.683 0.751 -0.099 -0.424 -0.633 -0.640 0.423 -0.010 0.069 -0.338 -0.155 0.130 0.027
+ 9.741 0.485 0.363 -0.303 -0.464 -0.566 0.351 -0.092 0.154 -0.231 -0.381 0.015 -0.013
+ 8.832 -0.141 0.077 0.002 -0.186 -0.431 0.137 -0.118 0.004 0.086 -0.298 0.011 -0.166
+ 8.114 -0.264 0.054 -0.158 -0.156 -0.086 0.142 0.034 0.091 0.004 -0.330 -0.005 -0.125
+ 8.036 -0.331 0.194 -0.146 -0.150 0.074 0.012 0.172 0.106 0.145 -0.252 0.011 -0.092
+ 8.004 -0.463 0.477 0.091 -0.002 -0.129 -0.159 -0.029 -0.120 0.146 -0.143 0.117 0.074
+ 8.130 -0.638 0.527 0.155 -0.099 -0.282 0.002 -0.055 -0.138 0.110 -0.067 0.116 -0.155
+ 8.083 -0.758 0.486 0.124 0.077 -0.224 0.208 -0.038 -0.225 0.032 -0.176 -0.149 -0.202
+ 7.905 -0.652 0.412 0.130 -0.033 -0.253 0.103 0.002 -0.162 0.181 -0.215 -0.135 -0.084
+ 7.555 -0.837 0.469 0.319 -0.156 -0.144 0.055 -0.076 -0.147 0.176 -0.180 0.103 0.016
+ 7.884 -0.559 0.605 0.186 -0.174 -0.199 0.036 0.030 -0.144 0.143 -0.247 -0.198 -0.066
+ 8.098 -0.265 0.417 -0.150 -0.314 -0.135 0.143 0.029 0.057 0.227 -0.185 -0.207 -0.095
+ 8.020 -0.127 0.251 -0.316 -0.300 -0.180 0.137 -0.086 -0.008 0.252 -0.010 -0.186 -0.105
+ 8.204 0.121 -0.184 -0.635 -0.495 -0.028 -0.023 -0.122 0.012 0.337 -0.077 -0.157 -0.064
+ 8.534 0.352 -0.263 -0.535 -0.434 -0.178 -0.224 -0.132 0.139 0.415 -0.071 -0.127 -0.146
+ 8.552 0.408 -0.329 -0.671 -0.467 -0.217 -0.243 -0.191 0.155 0.310 -0.191 -0.134 -0.111
+ 8.390 0.461 -0.285 -0.589 -0.542 -0.105 -0.171 -0.066 0.203 0.333 -0.254 0.055 -0.025
+ 8.270 0.464 -0.366 -0.453 -0.563 -0.146 -0.134 -0.140 0.132 0.327 -0.174 0.003 -0.010
+ 8.359 0.492 -0.294 -0.386 -0.513 -0.126 -0.284 -0.215 0.063 0.404 -0.124 -0.009 -0.011
+ 8.339 0.585 -0.297 -0.336 -0.533 -0.299 -0.479 -0.178 0.036 0.462 -0.126 -0.219 -0.059
+ 8.027 0.517 -0.208 -0.365 -0.597 -0.241 -0.364 -0.221 0.154 0.402 -0.156 -0.142 -0.090
+ 7.567 0.269 -0.279 -0.367 -0.519 -0.214 -0.447 -0.306 0.175 0.343 -0.137 -0.310 -0.083
+ 7.135 0.239 -0.254 -0.404 -0.448 -0.081 -0.074 -0.130 0.107 0.298 -0.168 -0.205 -0.099
+ 7.226 0.337 -0.266 -0.413 -0.436 -0.127 -0.208 -0.250 0.096 0.421 -0.061 -0.155 0.027
+ 7.478 0.473 -0.186 -0.434 -0.387 -0.086 -0.168 -0.159 0.023 0.271 0.044 -0.148 -0.102
+ 7.219 0.157 -0.288 -0.420 -0.273 -0.186 -0.188 -0.137 -0.004 0.274 0.004 0.074 -0.130
+ 7.316 0.265 -0.133 -0.278 -0.165 -0.055 -0.184 -0.224 -0.118 0.142 -0.118 -0.028 -0.240
+ 7.581 0.255 -0.057 -0.116 -0.313 -0.161 -0.237 -0.195 -0.193 0.206 -0.018 -0.105 -0.178
+ 7.807 -0.007 0.075 -0.053 -0.312 -0.202 -0.328 -0.251 -0.306 0.301 -0.184 -0.041 -0.086
+ 7.976 -0.576 0.254 0.382 -0.368 -0.189 -0.440 -0.411 -0.451 0.373 -0.331 0.091 0.010
+ 8.248 -0.502 0.252 0.260 -0.747 -0.375 -0.502 -0.464 -0.392 0.466 -0.208 0.273 0.129
+ 8.664 -0.447 0.385 0.257 -0.686 -0.256 -0.398 -0.482 -0.599 0.307 -0.228 0.329 0.169
+ 9.145 -0.286 0.283 0.322 -0.802 -0.317 -0.423 -0.443 -0.538 0.332 -0.191 0.218 -0.011
+ 9.597 -0.399 0.272 0.416 -0.816 -0.272 -0.481 -0.420 -0.574 0.417 -0.176 0.225 0.064
+ 9.639 -0.471 0.279 0.208 -0.805 -0.421 -0.517 -0.325 -0.526 0.441 -0.163 0.212 0.080
+ 9.685 -0.282 0.369 0.117 -0.760 -0.437 -0.466 -0.356 -0.577 0.377 -0.250 0.130 -0.031
--- /dev/null
+chan3.raw
+chan3.wav
+chan3.2chan.wav
+chan3.sph
--- /dev/null
+0.000 0.52 3675.00
+0.010 0.52 3675.00
+0.020 0.52 3675.00
+0.030 0.52 3675.00
+0.040 0.47 3675.00
+0.050 0.20 3675.00
+0.060 0.45 424.04
+0.070 0.38 424.04
+0.080 0.00 424.04
+0.090 0.18 2205.00
+0.100 0.00 183.75
+0.110 0.00 183.75
+0.120 0.53 193.42
+0.130 0.16 190.09
+0.140 0.17 196.88
+0.150 0.09 86.13
+0.160 0.14 108.09
+0.170 0.54 100.23
+0.180 0.30 121.15
+0.190 0.00 84.81
+0.200 0.44 103.04
+0.210 0.08 102.08
+0.220 0.53 121.15
+0.229 0.00 102.08
+0.239 0.00 136.11
+0.249 0.52 104.01
+0.259 0.61 112.50
+0.269 0.78 110.25
+0.279 0.85 109.16
+0.289 0.87 108.09
+0.299 0.84 106.01
+0.309 0.90 106.01
+0.319 0.91 104.01
+0.329 0.92 103.04
+0.339 0.93 99.32
+0.349 0.94 98.44
+0.359 0.93 99.32
+0.369 0.94 98.44
+0.379 0.92 99.32
+0.389 0.87 99.32
+0.399 0.92 99.32
+0.409 0.92 100.23
+0.419 0.91 101.15
+0.429 0.93 100.23
+0.439 0.93 100.23
+0.449 0.94 101.15
+0.459 0.89 101.15
+0.469 0.94 101.15
+0.479 0.96 103.04
+0.489 0.91 104.01
+0.499 0.91 102.08
+0.509 0.85 99.32
+0.519 0.91 97.57
+0.529 0.81 98.44
+0.539 0.91 97.57
+0.549 0.92 94.23
+0.559 0.91 93.43
+0.569 0.90 93.43
+0.579 0.91 90.37
+0.589 0.92 89.63
+0.599 0.92 89.63
+0.609 0.95 90.37
+0.619 0.95 90.37
+0.629 0.95 90.37
+0.639 0.60 91.12
+0.649 0.64 92.65
+0.659 0.82 91.88
+0.668 0.89 91.88
+0.678 0.91 94.23
+0.688 0.94 93.43
+0.698 0.90 95.04
+0.708 0.92 95.04
+0.718 0.92 95.04
+0.728 0.80 95.87
+0.738 0.80 97.57
+0.748 0.84 97.57
+0.758 0.82 96.71
+0.768 0.82 95.87
+0.778 0.85 95.04
+0.788 0.90 94.23
+0.798 0.91 91.88
+0.808 0.91 89.63
+0.818 0.91 86.81
+0.828 0.83 82.89
+0.838 0.67 86.13
+0.848 0.47 88.91
+0.858 0.67 88.20
+0.868 0.76 88.20
+0.878 0.87 87.50
+0.888 0.18 84.81
+0.898 0.56 80.47
+0.908 0.62 5512.50
+0.918 0.62 5512.50
+0.928 0.64 5512.50
+0.938 0.67 5512.50
+0.948 0.67 5512.50
+0.958 0.67 5512.50
+0.968 0.67 5512.50
+0.978 0.31 5512.50
+0.988 0.01 11025.00
+0.998 0.26 80.47
+1.008 0.00 80.47
+1.018 0.13 580.26
+1.028 0.00 82.89
+1.038 0.48 501.14
+1.048 0.32 282.69
+1.058 0.54 88.91
+1.068 0.55 87.50
+1.078 0.79 86.13
+1.088 0.95 85.47
+1.098 0.95 85.47
+1.107 0.68 81.67
+1.117 0.24 95.87
+1.127 0.06 96.71
+1.137 0.00 689.06
+1.147 0.03 3675.00
+1.157 0.50 3675.00
+1.167 0.39 3675.00
+1.177 0.51 3675.00
+1.187 0.51 3675.00
+1.197 0.13 99.32
+1.207 0.00 92.65
+1.217 0.68 80.47
+1.227 0.73 90.37
+1.237 0.65 94.23
+1.247 0.67 88.91
+1.257 0.83 86.81
+1.267 0.79 84.16
+1.277 0.61 85.47
+1.287 0.47 82.89
+1.297 0.95 80.47
+1.307 0.95 80.47
+1.317 0.38 88.20
+1.327 0.63 84.81
+1.337 0.29 94.23
+1.347 0.35 80.47
+1.357 0.00 282.69
+1.367 0.45 103.04
+1.377 0.13 126.72
+1.387 0.00 128.20
+1.397 0.00 93.43
+1.407 0.44 80.47
+1.417 0.57 81.07
+1.427 0.83 82.28
+1.437 0.79 80.47
+1.447 0.54 80.47
+1.457 0.48 91.12
+1.467 0.77 735.00
+1.477 0.77 735.00
+1.487 0.77 735.00
+1.497 0.73 735.00
+1.507 0.73 735.00
+1.517 0.71 689.06
+1.527 0.68 689.06
+1.537 0.68 648.53
+1.546 0.70 648.53
+1.556 0.75 648.53
+1.566 0.78 612.50
+1.576 0.68 580.26
+1.586 0.81 551.25
+1.596 0.56 501.14
+1.606 0.24 525.00
+1.616 0.43 212.02
+1.626 0.34 177.82
+1.636 0.66 175.00
+1.646 0.52 177.82
+1.656 0.00 183.75
+1.666 0.12 155.28
+1.676 0.00 85.47
+1.686 0.04 82.89
+1.696 0.12 122.50
+1.706 0.27 157.50
+1.716 0.51 145.07
+1.726 0.51 82.28
+1.736 0.43 80.47
+1.746 0.62 94.23
+1.756 0.49 99.32
+1.766 0.00 117.29
+1.776 0.00 123.88
+1.786 0.39 245.00
+1.796 0.00 83.52
+1.806 0.00 93.43
+1.816 0.47 80.47
+1.826 0.40 100.23
+1.836 0.03 177.82
+1.846 0.00 367.50
+1.856 0.52 408.33
+1.866 0.83 424.04
+1.876 0.46 441.00
+1.886 0.33 479.35
+1.896 0.60 479.35
+1.906 0.45 424.04
+1.916 0.00 424.04
+1.926 0.28 137.81
+1.936 0.00 157.50
+1.946 0.60 126.72
+1.956 0.23 121.15
+1.966 0.27 155.28
+1.976 0.00 80.47
+1.985 0.00 208.02
+1.995 0.00 216.18
+2.005 0.00 229.69
+2.015 0.58 250.57
+2.025 0.73 268.90
+2.035 0.62 256.40
+2.045 0.49 245.00
+2.055 0.01 250.57
+2.065 0.21 256.40
+2.075 0.01 136.11
+2.085 0.00 128.20
+2.095 0.27 80.47
+2.105 0.29 84.81
+2.115 0.00 80.47
+2.125 0.39 82.89
+2.135 0.39 82.89
+2.145 0.24 91.88
+2.155 0.08 80.47
+2.165 0.55 86.81
+2.175 0.61 87.50
+2.185 0.19 93.43
+2.195 0.36 99.32
+2.205 0.50 169.62
+2.215 0.45 186.86
+2.225 0.00 169.62
+2.235 0.00 126.72
+2.245 0.59 137.81
+2.255 0.22 151.03
+2.265 0.00 169.62
+2.275 0.00 177.82
+2.285 0.10 80.47
+2.295 0.35 86.81
+2.305 0.52 86.13
+2.315 0.05 83.52
+2.325 0.00 82.28
+2.335 0.02 256.40
+2.345 0.47 250.57
+2.355 0.00 216.18
+2.365 0.02 268.90
+2.375 0.17 114.84
+2.385 0.32 114.84
+2.395 0.22 97.57
+2.405 0.31 83.52
+2.415 0.54 84.16
+2.424 0.42 80.47
+2.434 0.16 92.65
+2.444 0.00 172.27
+2.454 0.00 159.78
+2.464 0.00 190.09
+2.474 0.17 87.50
+2.484 0.00 85.47
+2.494 0.54 97.57
+2.504 0.17 151.03
+2.514 0.70 143.18
+2.524 0.70 143.18
+2.534 0.56 132.83
+2.544 0.00 169.62
+2.554 0.00 113.66
+2.564 0.00 80.47
+2.574 0.00 80.47
+2.584 0.00 100.23
+2.594 0.00 100.23
+2.604 0.43 118.55
+2.614 0.07 112.50
+2.624 0.00 147.00
+2.634 0.29 80.47
+2.644 0.00 80.47
+2.654 0.00 100.23
+2.664 0.00 225.00
+2.674 0.00 183.75
+2.684 0.35 183.75
+2.694 0.49 216.18
+2.704 0.00 183.75
+2.714 0.41 190.09
+2.724 0.41 84.16
+2.734 0.42 82.89
+2.744 0.22 108.09
+2.754 0.12 119.84
+2.764 0.69 122.50
+2.774 0.12 119.84
+2.784 0.05 151.03
+2.794 0.39 113.66
+2.804 0.64 122.50
+2.814 0.00 137.81
+2.824 0.34 107.04
+2.834 0.49 1837.50
+2.844 0.15 1837.50
+2.854 0.00 1102.50
+2.863 0.19 1002.27
+2.873 0.54 918.75
+2.883 0.00 167.05
+2.893 0.00 125.28
+2.903 0.56 134.45
+2.913 0.91 118.55
+2.923 0.91 118.55
+2.933 0.88 117.29
+2.943 0.87 117.29
+2.953 0.81 113.66
+2.963 0.64 110.25
+2.973 0.44 107.04
+2.983 0.93 105.00
+2.993 0.93 103.04
+3.003 0.98 101.15
+3.013 0.98 101.15
+3.023 0.61 100.23
+3.033 0.19 99.32
+3.043 0.27 99.32
+3.053 0.63 98.44
+3.063 0.50 96.71
+3.073 0.46 92.65
+3.083 0.00 612.50
+3.093 0.00 848.08
+3.103 0.00 787.50
+3.113 0.00 2756.25
+3.123 0.00 3675.00
+3.133 0.56 2756.25
+3.143 0.56 2756.25
+3.153 0.28 2756.25
+3.163 0.26 2756.25
+3.173 0.00 103.04
+3.183 0.38 108.09
+3.193 0.72 104.01
+3.203 0.54 104.01
+3.213 0.18 151.03
+3.223 0.84 122.50
+3.233 0.58 104.01
+3.243 0.29 121.15
+3.253 0.55 80.47
+3.263 0.70 80.47
+3.273 0.70 80.47
+3.283 0.08 91.88
+3.293 0.00 80.47
+3.302 0.00 2205.00
+3.312 0.00 2205.00
+3.322 0.27 918.75
+3.332 0.71 918.75
+3.342 0.71 918.75
+3.352 0.71 918.75
+3.362 0.71 918.75
+3.372 0.27 123.88
+3.382 0.29 126.72
+3.392 0.72 132.83
+3.402 0.59 129.71
+3.412 0.78 125.28
+3.422 0.87 121.15
+3.432 0.87 121.15
+3.442 0.87 121.15
+3.452 0.85 118.55
+3.462 0.70 119.84
+3.472 0.81 121.15
+3.482 0.87 121.15
+3.492 0.90 123.88
+3.502 0.89 121.15
+3.512 0.92 118.55
+3.522 0.71 112.50
+3.532 0.70 101.15
+3.542 0.51 107.04
+3.552 0.59 86.81
+3.562 0.87 103.04
+3.572 0.77 117.29
+3.582 0.83 121.15
+3.592 0.84 119.84
+3.602 0.77 118.55
+3.612 0.93 117.29
+3.622 0.92 117.29
+3.632 0.95 118.55
+3.642 0.91 119.84
+3.652 0.89 121.15
+3.662 0.88 121.15
+3.672 0.89 121.15
+3.682 0.50 123.88
+3.692 0.70 121.15
+3.702 0.63 122.50
+3.712 0.68 122.50
+3.722 0.76 121.15
+3.732 0.78 119.84
+3.741 0.84 118.55
+3.751 0.80 114.84
+3.761 0.90 111.36
+3.771 0.95 108.09
+3.781 0.95 106.01
+3.791 0.95 105.00
+3.801 0.95 102.08
+3.811 0.91 102.08
+3.821 0.95 102.08
+3.831 0.91 101.15
+3.841 0.91 101.15
+3.851 0.90 101.15
+3.861 0.92 100.23
+3.871 0.93 98.44
+3.881 0.94 96.71
+3.891 0.93 95.04
+3.901 0.92 95.04
+3.911 0.33 97.57
+3.921 0.35 118.55
+3.931 0.42 93.43
+3.941 0.71 95.04
+3.951 0.77 96.71
+3.961 0.84 98.44
+3.971 0.84 98.44
+3.981 0.84 98.44
+3.991 0.83 97.57
+4.001 0.93 95.87
+4.011 0.93 95.87
+4.021 0.84 96.71
+4.031 0.83 97.57
+4.041 0.87 96.71
+4.051 0.91 95.87
+4.061 0.83 94.23
+4.071 0.53 90.37
+4.081 0.88 91.88
+4.091 0.93 94.23
+4.101 0.26 95.04
+4.111 0.72 95.87
+4.121 0.61 93.43
+4.131 0.93 92.65
+4.141 0.87 91.88
+4.151 0.76 90.37
+4.161 0.53 89.63
+4.171 0.91 95.87
+4.180 0.93 94.23
+4.190 0.93 94.23
+4.200 0.91 95.04
+4.210 0.90 93.43
+4.220 0.41 103.04
+4.230 0.93 93.43
+4.240 0.93 93.43
+4.250 0.92 92.65
+4.260 0.92 92.65
+4.270 0.82 91.12
+4.280 0.92 92.65
+4.290 0.76 94.23
+4.300 0.66 93.43
+4.310 0.54 91.12
+4.320 0.44 80.47
+4.330 0.65 89.63
+4.340 0.41 95.87
+4.350 0.59 92.65
+4.360 0.59 92.65
+4.370 0.00 114.84
+4.380 0.17 121.15
+4.390 0.00 91.88
+4.400 0.56 114.84
+4.410 0.82 97.57
+4.420 0.67 91.12
+4.430 0.51 82.28
+4.440 0.40 99.32
+4.450 0.35 441.00
+4.460 0.55 102.08
+4.470 0.00 89.63
+4.480 0.34 86.13
+4.490 0.27 501.14
+4.500 0.00 501.14
+4.510 0.00 132.83
+4.520 0.05 11025.00
+4.530 0.50 11025.00
+4.540 0.50 11025.00
+4.550 0.50 11025.00
+4.560 0.50 11025.00
+4.570 0.04 91.12
+4.580 0.00 91.12
+4.590 0.58 108.09
+4.600 0.00 134.45
+4.610 0.00 91.12
+4.620 0.40 11025.00
+4.629 0.06 11025.00
+4.639 0.00 11025.00
+4.649 0.21 11025.00
+4.659 0.00 91.88
+4.669 0.34 11025.00
+4.679 0.05 11025.00
+4.689 0.26 80.47
+4.699 0.00 80.47
+4.709 0.60 80.47
+4.719 0.46 98.44
+4.729 0.56 95.04
+4.739 0.66 94.23
+4.749 0.00 95.04
+4.759 0.61 85.47
+4.769 0.03 80.47
+4.779 0.00 80.47
+4.789 0.15 11025.00
+4.799 0.00 129.71
+4.809 0.09 98.44
+4.819 0.68 104.01
+4.829 0.60 107.04
+4.839 0.23 118.55
+4.849 0.00 92.65
+4.859 0.60 82.89
+4.869 0.00 80.47
+4.879 0.00 80.47
+4.889 0.52 100.23
+4.899 0.00 90.37
+4.909 0.17 102.08
+4.919 0.00 99.32
+4.929 0.39 90.37
+4.939 0.53 80.47
+4.949 0.00 80.47
+4.959 0.60 80.47
+4.969 0.60 80.47
+4.979 0.60 80.47
+4.989 0.04 80.47
+4.999 0.60 80.47
+5.009 0.00 157.50
+5.019 0.28 162.13
+5.029 0.52 136.11
+5.039 0.00 114.84
+5.049 0.00 147.00
+5.059 0.00 90.37
+5.068 0.04 94.23
+5.078 0.66 96.71
+5.088 0.71 96.71
+5.098 0.86 100.23
+5.108 0.89 97.57
+5.118 0.85 94.23
+5.128 0.92 95.04
+5.138 0.94 92.65
+5.148 0.92 91.12
+5.158 0.78 88.91
+5.168 0.59 82.28
+5.178 0.68 80.47
+5.188 0.68 80.47
+5.198 0.68 80.47
+5.208 0.40 100.23
+5.218 0.00 91.88
+5.228 0.46 167.05
+5.238 0.00 96.71
+5.248 0.00 100.23
+5.258 0.82 80.47
+5.268 0.82 80.47
+5.278 0.00 80.47
+5.288 0.36 80.47
+5.298 0.00 95.87
+5.308 0.15 11025.00
+5.318 0.40 11025.00
+5.328 0.00 108.09
+5.338 0.00 99.32
+5.348 0.83 90.37
+5.358 0.90 90.37
+5.368 0.93 89.63
+5.378 0.93 89.63
+5.388 0.88 88.20
+5.398 0.92 85.47
+5.408 0.92 87.50
+5.418 0.90 87.50
+5.428 0.93 86.81
+5.438 0.92 84.81
+5.448 0.85 82.28
+5.458 0.92 84.81
+5.468 0.54 84.81
+5.478 0.67 85.47
+5.488 0.52 80.47
+5.498 0.67 85.47
+5.507 0.56 5512.50
+5.517 0.56 5512.50
+5.527 0.56 5512.50
+5.537 0.00 551.25
+5.547 0.05 501.14
+5.557 0.57 525.00
+5.567 0.28 97.57
+5.577 0.42 92.65
+5.587 0.79 89.63
+5.597 0.80 88.91
+5.607 0.91 87.50
+5.617 0.90 86.81
+5.627 0.91 87.50
+5.637 0.89 86.81
+5.647 0.91 86.13
+5.657 0.87 86.13
+5.667 0.89 84.81
+5.677 0.92 85.47
+5.687 0.87 84.16
+5.697 0.90 83.52
+5.707 0.85 82.28
+5.717 0.85 81.07
+5.727 0.92 80.47
+5.737 0.71 80.47
+5.747 0.64 90.37
+5.757 0.77 80.47
+5.767 0.72 80.47
+5.777 0.89 81.67
+5.787 0.65 90.37
+5.797 0.43 88.91
+5.807 0.52 551.25
+5.817 0.68 459.38
+5.827 0.24 551.25
+5.837 0.00 106.01
+5.847 0.00 128.20
+5.857 0.69 125.28
+5.867 0.65 106.01
+5.877 0.19 106.01
+5.887 0.40 90.37
+5.897 0.59 612.50
+5.907 0.00 612.50
+5.917 0.02 11025.00
+5.927 0.62 5512.50
+5.937 0.62 5512.50
+5.946 0.62 5512.50
+5.956 0.62 5512.50
+5.966 0.58 5512.50
+5.976 0.58 5512.50
+5.986 0.58 5512.50
+5.996 0.00 122.50
+6.006 0.08 98.44
+6.016 0.64 100.23
+6.026 0.84 85.47
+6.036 0.87 80.47
+6.046 0.87 80.47
+6.056 0.87 80.47
+6.066 0.61 93.43
+6.076 0.51 90.37
+6.086 0.64 648.53
+6.096 0.64 648.53
+6.106 0.56 89.63
+6.116 0.63 89.63
+6.126 0.95 80.47
+6.136 0.95 80.47
+6.146 0.92 81.07
+6.156 0.80 81.67
+6.166 0.67 81.67
+6.176 0.63 82.28
+6.186 0.67 82.89
+6.196 0.63 81.67
+6.206 0.53 81.07
+6.216 0.63 81.67
+6.226 0.50 82.89
+6.236 0.60 86.13
+6.246 0.67 82.28
+6.256 0.60 80.47
+6.266 0.35 81.07
+6.276 0.32 81.67
+6.286 0.18 91.12
+6.296 0.33 1575.00
+6.306 0.05 95.87
+6.316 0.00 290.13
+6.326 0.05 306.25
+6.336 0.42 334.09
+6.346 0.25 324.26
+6.356 0.08 408.33
+6.366 0.40 1837.50
+6.376 0.30 1837.50
+6.385 0.53 1837.50
+6.395 0.53 1837.50
+6.405 0.53 1837.50
+6.415 0.38 918.75
+6.425 0.39 918.75
+6.435 0.56 918.75
+6.445 0.28 918.75
+6.455 0.11 848.08
+6.465 0.07 1837.50
+6.475 0.37 580.26
+6.485 0.04 580.26
+6.495 0.22 551.25
+6.505 0.17 117.29
+6.515 0.17 612.50
+6.525 0.14 580.26
+6.535 0.45 580.26
+6.545 0.49 1837.50
+6.555 0.10 1837.50
+6.565 0.49 1837.50
+6.575 0.39 2205.00
+6.585 0.00 132.83
+6.595 0.27 104.01
+6.605 0.58 84.16
+6.615 0.71 84.16
+6.625 0.68 83.52
+6.635 0.62 83.52
+6.645 0.45 96.71
+6.655 0.08 250.57
+6.665 0.00 220.50
+6.675 0.00 525.00
+6.685 0.27 1837.50
+6.695 0.00 81.67
+6.705 0.22 80.47
+6.715 0.69 94.23
+6.725 0.43 116.05
+6.735 0.74 111.36
+6.745 0.42 94.23
+6.755 0.00 104.01
+6.765 0.49 11025.00
+6.775 0.09 11025.00
+6.785 0.49 11025.00
+6.795 0.34 137.81
+6.805 0.00 145.07
+6.815 0.00 117.29
+6.824 0.72 119.84
+6.834 0.19 126.72
+6.844 0.00 101.15
+6.854 0.27 95.04
+6.864 0.00 100.23
+6.874 0.47 99.32
+6.884 0.48 103.04
+6.894 0.00 86.81
+6.904 0.27 128.20
+6.914 0.00 145.07
+6.924 0.00 145.07
+6.934 0.00 111.36
+6.944 0.13 121.15
+6.954 0.18 106.01
+6.964 0.39 143.18
+6.974 0.51 114.84
+6.984 0.76 126.72
+6.994 0.47 107.04
+7.004 0.00 107.04
+7.014 0.29 95.87
+7.024 0.00 100.23
+7.034 0.27 117.29
+7.044 0.04 126.72
+7.054 0.00 126.72
+7.064 0.49 148.99
+7.074 0.00 126.72
+7.084 0.00 126.72
+7.094 0.00 129.71
+7.104 0.00 111.36
+7.114 0.00 81.67
+7.124 0.52 96.71
+7.134 0.01 119.84
+7.144 0.44 100.23
+7.154 0.19 103.04
+7.164 0.03 86.13
+7.174 0.00 95.87
+7.184 0.19 80.47
+7.194 0.24 1837.50
+7.204 0.27 1837.50
+7.214 0.68 1837.50
+7.224 0.72 1837.50
+7.234 0.75 1837.50
+7.244 0.75 1837.50
+7.254 0.75 1837.50
+7.263 0.75 1837.50
+7.273 0.75 1837.50
+7.283 0.74 1837.50
+7.293 0.48 1837.50
+7.303 0.47 1837.50
+7.313 0.72 1837.50
+7.323 0.72 1837.50
+7.333 0.72 1837.50
+7.343 0.58 1837.50
+7.353 0.11 1837.50
+7.363 0.00 84.16
+7.373 0.52 95.04
+7.383 0.72 81.67
+7.393 0.06 81.07
+7.403 0.00 97.57
+7.413 0.59 1837.50
+7.423 0.59 1837.50
+7.433 0.27 1837.50
+7.443 0.00 1837.50
+7.453 0.00 106.01
+7.463 0.53 102.08
+7.473 0.00 108.09
+7.483 0.62 86.81
+7.493 0.23 82.28
+7.503 0.32 90.37
+7.513 0.00 256.40
+7.523 0.00 107.04
+7.533 0.00 80.47
+7.543 0.59 91.12
+7.553 0.47 94.23
+7.563 0.00 107.04
+7.573 0.48 113.66
+7.583 0.28 134.45
+7.593 0.45 134.45
+7.603 0.56 108.09
+7.613 0.36 121.15
+7.623 0.38 119.84
+7.633 0.51 105.00
+7.643 0.00 80.47
+7.653 0.57 84.16
+7.663 0.11 80.47
+7.673 0.00 183.75
+7.683 0.69 216.18
+7.693 0.58 216.18
+7.702 0.69 216.18
+7.712 0.88 225.00
+7.722 0.91 220.50
+7.732 0.91 220.50
+7.742 0.06 220.50
+7.752 0.00 220.50
+7.762 0.71 216.18
+7.772 0.71 216.18
+7.782 0.07 220.50
+7.792 0.00 220.50
+7.802 0.00 225.00
+7.812 0.00 551.25
+7.822 0.66 250.57
+7.832 0.77 239.67
+7.842 0.92 225.00
+7.852 0.90 459.38
+7.862 0.93 459.38
+7.872 0.93 459.38
+7.882 0.93 459.38
+7.892 0.93 459.38
+7.902 0.00 441.00
+7.912 0.00 424.04
+7.922 0.04 196.88
+7.932 0.19 147.00
+7.942 0.34 129.71
+7.952 0.00 132.83
+7.962 0.47 153.12
+7.972 0.29 190.09
+7.982 0.38 141.35
+7.992 0.00 91.88
+8.002 0.47 220.50
+8.012 0.64 225.00
+8.022 0.78 216.18
+8.032 0.78 216.18
+8.042 0.19 193.42
+8.052 0.37 121.15
+8.062 0.60 128.20
+8.072 0.52 117.29
+8.082 0.33 122.50
+8.092 0.40 204.17
+8.102 0.00 229.69
+8.112 0.50 501.14
+8.122 0.84 501.14
+8.132 0.92 525.00
+8.141 0.92 525.00
+8.151 0.86 525.00
+8.161 0.74 551.25
+8.171 0.91 268.90
+8.181 0.29 282.69
+8.191 0.36 268.90
+8.201 0.45 157.50
+8.211 0.62 169.62
+8.221 0.00 145.07
+8.231 0.31 145.07
+8.241 0.00 125.28
+8.251 0.27 80.47
+8.261 0.42 132.83
+8.271 0.18 122.50
+8.281 0.66 107.04
+8.291 0.35 125.28
+8.301 0.30 111.36
+8.311 0.00 125.28
+8.321 0.67 131.25
+8.331 0.93 106.01
+8.341 0.93 106.01
+8.351 0.41 103.04
+8.361 0.52 105.00
+8.371 0.57 104.01
+8.381 0.86 103.04
+8.391 0.93 102.08
+8.401 0.93 101.15
+8.411 0.94 100.23
+8.421 0.93 99.32
+8.431 0.91 99.32
+8.441 0.81 98.44
+8.451 0.69 97.57
+8.461 0.60 97.57
+8.471 0.63 89.63
+8.481 0.86 92.65
+8.491 0.72 91.12
+8.501 0.30 99.32
+8.511 0.61 106.01
+8.521 0.86 99.32
+8.531 0.53 96.71
+8.541 0.76 95.04
+8.551 0.94 94.23
+8.561 0.91 95.04
+8.571 0.94 94.23
+8.580 0.94 94.23
+8.590 0.84 95.04
+8.600 0.82 91.12
+8.610 0.87 89.63
+8.620 0.84 88.91
+8.630 0.87 88.91
+8.640 0.87 88.91
+8.650 0.93 86.13
+8.660 0.91 85.47
+8.670 0.93 86.13
+8.680 0.93 86.13
+8.690 0.70 86.81
+8.700 0.56 97.57
+8.710 0.46 92.65
+8.720 0.48 101.15
+8.730 0.01 11025.00
+8.740 0.23 11025.00
+8.750 0.65 5512.50
+8.760 0.68 5512.50
+8.770 0.68 5512.50
+8.780 0.68 5512.50
+8.790 0.45 5512.50
+8.800 0.13 5512.50
+8.810 0.00 2756.25
+8.820 0.49 2205.00
+8.830 0.49 2205.00
+8.840 0.00 118.55
+8.850 0.29 109.16
+8.860 0.68 100.23
+8.870 0.57 94.23
+8.880 0.53 92.65
+8.890 0.53 91.12
+8.900 0.64 88.91
+8.910 0.40 93.43
+8.920 0.40 87.50
+8.930 0.72 86.13
+8.940 0.83 86.13
+8.950 0.84 84.81
+8.960 0.77 81.07
+8.970 0.58 92.65
+8.980 0.50 91.12
+8.990 0.29 89.63
+9.000 0.51 117.29
+9.010 0.00 128.20
+9.020 0.00 113.66
+9.029 0.00 111.36
+9.039 0.06 109.16
+9.049 0.72 89.63
+9.059 0.60 91.88
+9.069 0.82 83.52
+9.079 0.30 98.44
+9.089 0.22 104.01
+9.099 0.00 200.45
+9.109 0.00 119.84
+9.119 0.00 136.11
+9.129 0.06 11025.00
+9.139 0.50 11025.00
+9.149 0.21 11025.00
+9.159 0.44 80.47
+9.169 0.08 80.47
+9.179 0.73 80.47
+9.189 0.73 80.47
+9.199 0.73 80.47
+9.209 0.38 104.01
+9.219 0.60 88.20
+9.229 0.82 83.52
+9.239 0.86 82.28
+9.249 0.83 80.47
+9.259 0.84 80.47
+9.269 0.84 80.47
+9.279 0.61 91.12
+9.289 0.56 91.12
+9.299 0.52 90.37
+9.309 0.50 612.50
+9.319 0.48 648.53
+9.329 0.45 87.50
+9.339 0.01 11025.00
+9.349 0.46 501.14
+9.359 0.41 92.65
+9.369 0.49 80.47
+9.379 0.87 80.47
+9.389 0.75 81.07
+9.399 0.53 95.87
+9.409 0.30 90.37
+9.419 0.00 408.33
+9.429 0.00 355.65
+9.439 0.62 80.47
+9.449 0.00 96.71
+9.459 0.30 86.13
+9.468 0.00 2205.00
+9.478 0.32 1837.50
+9.488 0.66 1837.50
+9.498 0.66 1837.50
+9.508 0.66 1837.50
+9.518 0.27 80.47
+9.528 0.13 116.05
+9.538 0.56 95.04
+9.548 0.00 81.07
+9.558 0.47 95.87
+9.568 0.51 103.04
+9.578 0.00 128.20
+9.588 0.00 102.08
+9.598 0.00 262.50
+9.608 0.00 86.13
+9.618 0.00 86.13
+9.628 0.34 102.08
+9.638 0.00 80.47
+9.648 0.69 80.47
+9.658 0.69 80.47
+9.668 0.00 98.44
+9.678 0.03 86.81
+9.688 0.49 11025.00
+9.698 0.49 11025.00
+9.708 0.26 80.47
+9.718 0.51 80.47
+9.728 0.51 80.47
+9.738 0.51 80.47
+9.748 0.39 1575.00
+9.758 0.19 98.44
+9.768 0.11 98.44
+9.778 0.66 81.07
+9.788 0.80 85.47
+9.798 0.55 83.52
+9.808 0.33 81.67
+9.818 0.17 83.52
+9.828 0.50 83.52
+9.838 0.25 1837.50
+9.848 0.17 1837.50
+9.858 0.78 1837.50
+9.868 0.78 1837.50
+9.878 0.78 1837.50
+9.888 0.52 1837.50
+9.898 0.65 1837.50
+9.907 0.27 1575.00
+9.917 0.28 114.84
+9.927 0.20 114.84
+9.937 0.51 112.50
+9.947 0.34 112.50
+9.957 0.29 109.16
+9.967 0.48 580.26
+9.977 0.48 580.26
+9.987 0.33 212.02
+9.997 0.39 216.18
+10.007 0.49 212.02
+10.017 0.39 220.50
+10.027 0.05 129.71
+10.037 0.30 129.71
+10.047 0.54 109.16
+10.057 0.33 164.55
+10.067 0.39 220.50
+10.077 0.55 612.50
+10.087 0.79 612.50
+10.097 0.81 612.50
+10.107 0.78 580.26
+10.117 0.62 580.26
+10.127 0.00 648.53
+10.137 0.03 689.06
+10.147 0.48 787.50
+10.157 0.41 848.08
+10.167 0.48 848.08
+10.177 0.00 787.50
+10.187 0.00 918.75
+10.197 0.27 100.23
+10.207 0.00 132.83
+10.217 0.00 98.44
+10.227 0.00 108.09
+10.237 0.42 113.66
+10.247 0.10 99.32
+10.257 0.31 116.05
+10.267 0.00 114.84
+10.277 0.36 83.52
+10.287 0.55 92.65
+10.297 0.44 104.01
+10.307 0.28 102.08
+10.317 0.15 86.81
+10.327 0.53 86.81
+10.337 0.44 88.91
+10.346 0.26 80.47
+10.356 0.00 104.01
+10.366 0.00 121.15
+10.376 0.35 91.12
+10.386 0.68 104.01
+10.396 0.68 104.01
+10.406 0.35 103.04
+10.416 0.00 220.50
+10.426 0.30 208.02
+10.436 0.64 190.09
+10.446 0.23 126.72
+10.456 0.33 122.50
+10.466 0.71 102.08
+10.476 0.56 119.84
+10.486 0.61 86.81
+10.496 0.53 216.18
+10.506 0.62 122.50
+10.516 0.59 141.35
+10.526 0.74 137.81
+10.536 0.59 162.13
+10.546 0.64 132.83
+10.556 0.59 848.08
+10.566 0.69 95.87
+10.576 0.63 735.00
+10.586 0.35 250.57
+10.596 0.57 250.57
+10.606 0.76 250.57
+10.616 0.45 245.00
+10.626 0.44 239.67
+10.636 0.48 735.00
+10.646 0.29 848.08
+10.656 0.08 111.36
+10.666 0.00 90.37
+10.676 0.61 107.04
+10.686 0.47 91.88
+10.696 0.00 109.16
+10.706 0.45 83.52
+10.716 0.60 95.04
+10.726 0.65 90.37
+10.736 0.14 80.47
+10.746 0.54 80.47
+10.756 0.54 80.47
+10.766 0.52 93.43
+10.776 0.00 116.05
+10.785 0.19 99.32
+10.795 0.18 86.13
+10.805 0.70 80.47
+10.815 0.70 80.47
+10.825 0.50 81.07
+10.835 0.30 80.47
+10.845 0.00 80.47
+10.855 0.18 103.04
+10.865 0.00 80.47
+10.875 0.44 84.16
+10.885 0.00 82.89
+10.895 0.31 81.67
+10.905 0.75 250.57
+10.915 0.91 250.57
+10.925 0.91 250.57
+10.935 0.91 250.57
+10.945 0.83 250.57
+10.955 0.93 256.40
+10.965 0.88 256.40
+10.975 0.95 262.50
+10.985 0.95 262.50
+10.995 0.95 262.50
+11.005 0.95 262.50
+11.015 0.94 262.50
+11.025 0.64 268.90
+11.035 0.74 268.90
+11.045 0.66 268.90
+11.055 0.83 275.62
+11.065 0.83 275.62
+11.075 0.00 239.67
+11.085 0.00 239.67
+11.095 0.00 80.47
+11.105 0.00 86.81
+11.115 0.45 86.13
+11.125 0.00 256.40
+11.135 0.00 256.40
+11.145 0.78 250.57
+11.155 0.87 239.67
+11.165 0.85 229.69
+11.175 0.84 225.00
+11.185 0.57 225.00
+11.195 0.75 220.50
+11.205 0.05 216.18
+11.215 0.00 212.02
+11.224 0.38 80.47
+11.234 0.15 87.50
+11.244 0.26 101.15
+11.254 0.53 204.17
+11.264 0.53 196.88
+11.274 0.76 196.88
+11.284 0.54 190.09
+11.294 0.74 196.88
+11.304 0.80 200.45
+11.314 0.00 196.88
+11.324 0.30 193.42
+11.334 0.00 116.05
+11.344 0.00 117.29
+11.354 0.25 80.47
+11.364 0.46 91.12
+11.374 0.30 95.87
+11.384 0.32 193.42
+11.394 0.51 193.42
+11.404 0.79 193.42
+11.414 0.85 190.09
+11.424 0.90 190.09
+11.434 0.92 190.09
+11.444 0.92 190.09
+11.454 0.92 190.09
+11.464 0.95 193.42
+11.474 0.95 193.42
+11.484 0.95 193.42
+11.494 0.95 193.42
+11.504 0.95 193.42
+11.514 0.84 196.88
+11.524 0.85 196.88
+11.534 0.82 200.45
+11.544 0.84 200.45
+11.554 0.84 200.45
+11.564 0.48 193.42
+11.574 0.38 245.00
+11.584 0.26 175.00
+11.594 0.28 99.32
+11.604 0.19 234.57
+11.614 0.30 220.50
+11.624 0.57 204.17
+11.634 0.00 250.57
+11.644 0.00 183.75
+11.654 0.34 1378.12
+11.663 0.34 1378.12
+11.673 0.15 1378.12
+11.683 0.00 216.18
+11.693 0.00 80.47
+11.703 0.00 105.00
+11.713 0.27 105.00
+11.723 0.78 123.88
+11.733 0.13 105.00
+11.743 0.00 105.00
+11.753 0.57 80.47
+11.763 0.57 80.47
+11.773 0.62 80.47
+11.783 0.08 81.67
+11.793 0.62 80.47
+11.803 0.62 80.47
+11.813 0.00 100.23
+11.823 0.00 123.88
+11.833 0.00 111.36
+11.843 0.36 99.32
+11.853 0.18 100.23
+11.863 0.81 80.47
+11.873 0.81 80.47
+11.883 0.00 100.23
+11.893 0.00 100.23
+11.903 0.72 111.36
+11.913 0.00 94.23
+11.923 0.19 94.23
+11.933 0.00 151.03
+11.943 0.00 80.47
+11.953 0.00 100.23
+11.963 0.06 108.09
+11.973 0.18 100.23
+11.983 0.09 100.23
+11.993 0.50 80.47
+12.003 0.35 84.16
+12.013 0.08 85.47
+12.023 0.00 136.11
+12.033 0.00 95.87
+12.043 0.07 95.04
+12.053 0.41 91.88
+12.063 0.21 82.28
+12.073 0.03 131.25
+12.083 0.06 132.83
+12.093 0.45 155.28
+12.102 0.45 141.35
+12.112 0.45 118.55
+12.122 0.28 134.45
+12.132 0.50 125.28
+12.142 0.69 131.25
+12.152 0.51 134.45
+12.162 0.69 131.25
+12.172 0.56 119.84
+12.182 0.47 129.71
+12.192 0.56 119.84
+12.202 0.03 148.99
+12.212 0.00 148.99
+12.222 0.16 80.47
+12.232 0.00 80.47
+12.242 0.00 80.47
+12.252 0.00 99.32
+12.262 0.00 105.00
+12.272 0.45 84.81
+12.282 0.00 91.88
+12.292 0.25 84.81
+12.302 0.47 80.47
+12.312 0.52 80.47
+12.322 0.62 85.47
+12.332 0.56 80.47
+12.342 0.28 80.47
+12.352 0.56 80.47
+12.362 0.24 95.04
+12.372 0.49 104.01
+12.382 0.68 100.23
+12.392 0.34 204.17
+12.402 0.68 100.23
+12.412 0.82 100.23
+12.422 0.86 204.17
+12.432 0.83 204.17
+12.442 0.94 204.17
+12.452 0.94 204.17
+12.462 0.89 204.17
+12.472 0.91 200.45
+12.482 0.80 196.88
+12.492 0.54 204.17
+12.502 0.54 83.52
+12.512 0.57 80.47
+12.522 0.34 186.86
+12.532 0.25 212.02
+12.541 0.77 200.45
+12.551 0.06 196.88
+12.561 0.12 172.27
+12.571 0.00 103.04
+12.581 0.58 82.89
+12.591 0.28 80.47
+12.601 0.00 80.47
+12.611 0.00 147.00
+12.621 0.53 175.00
+12.631 0.67 172.27
+12.641 0.78 167.05
+12.651 0.57 164.55
+12.661 0.45 151.03
+12.671 0.51 153.12
+12.681 0.54 151.03
+12.691 0.54 151.03
+12.701 0.29 164.55
+12.711 0.00 186.86
+12.721 0.00 290.13
+12.731 0.00 80.47
+12.741 0.00 90.37
+12.751 0.00 80.47
+12.761 0.59 95.04
+12.771 0.00 118.55
+12.781 0.47 88.20
+12.791 0.19 109.16
+12.801 0.20 84.81
+12.811 0.28 96.71
+12.821 0.28 86.13
+12.831 0.42 131.25
+12.841 0.42 90.37
+12.851 0.47 106.01
+12.861 0.06 106.01
+12.871 0.00 85.47
+12.881 0.47 86.13
+12.891 0.67 84.81
+12.901 0.10 105.00
+12.911 0.00 86.81
+12.921 0.00 119.84
+12.931 0.00 121.15
+12.941 0.00 86.13
+12.951 0.78 97.57
+12.961 0.00 82.28
+12.971 0.78 97.57
+12.980 0.11 88.20
+12.990 0.00 121.15
+13.000 0.40 123.88
+13.010 0.45 114.84
+13.020 0.22 118.55
+13.030 0.28 105.00
+13.040 0.17 114.84
+13.050 0.10 89.63
+13.060 0.52 103.04
+13.070 0.00 86.81
+13.080 0.45 91.12
+13.090 0.46 220.50
+13.100 0.00 132.83
+13.110 0.00 90.37
+13.120 0.54 107.04
+13.130 0.00 91.88
+13.140 0.00 122.50
+13.150 0.40 80.47
+13.160 0.33 82.28
+13.170 0.08 113.66
+13.180 0.24 117.29
+13.190 0.67 95.87
+13.200 0.38 81.07
+13.210 0.39 81.07
+13.220 0.30 80.47
+13.230 0.11 116.05
+13.240 0.56 94.23
+13.250 0.13 101.15
+13.260 0.41 103.04
+13.270 0.62 92.65
+13.280 0.56 84.16
+13.290 0.32 83.52
+13.300 0.00 89.63
+13.310 0.47 114.84
+13.320 0.17 117.29
+13.330 0.23 118.55
+13.340 0.00 122.50
+13.350 0.01 84.81
+13.360 0.04 112.50
+13.370 0.46 100.23
+13.380 0.18 101.15
+13.390 0.15 88.91
+13.400 0.00 80.47
+13.410 0.64 91.12
+13.420 0.39 113.66
+13.429 0.00 90.37
+13.439 0.45 97.57
+13.449 0.00 87.50
+13.459 0.00 90.37
+13.469 0.61 93.43
+13.479 0.17 102.08
+13.489 0.21 113.66
+13.499 0.12 250.57
+13.509 0.44 80.47
+13.519 0.11 113.66
+13.529 0.00 80.47
+13.539 0.60 91.88
+13.549 0.73 88.20
+13.559 0.00 106.01
+13.569 0.11 80.47
+13.579 0.50 164.55
+13.589 0.00 145.07
+13.599 0.00 148.99
+13.609 0.36 80.47
+13.619 0.36 80.47
+13.629 0.28 80.47
+13.639 0.24 84.81
+13.649 0.83 83.52
+13.659 0.27 88.20
+13.669 0.00 102.08
+13.679 0.00 101.15
+13.689 0.33 117.29
+13.699 0.47 119.84
+13.709 0.75 137.81
+13.719 0.36 125.28
+13.729 0.24 116.05
+13.739 0.24 91.12
+13.749 0.77 94.23
+13.759 0.37 111.36
+13.769 0.00 117.29
+13.779 0.77 88.91
+13.789 0.00 110.25
+13.799 0.53 105.00
+13.809 0.60 117.29
+13.819 0.00 125.28
+13.829 0.38 136.11
+13.839 0.22 106.01
+13.849 0.06 183.75
+13.859 0.54 200.45
+13.868 0.83 196.88
+13.878 0.45 212.02
+13.888 0.39 225.00
+13.898 0.48 89.63
+13.908 0.30 96.71
+13.918 0.58 95.87
+13.928 0.00 82.28
+13.938 0.24 81.07
+13.948 0.00 183.75
+13.958 0.02 525.00
+13.968 0.00 393.75
+13.978 0.34 220.50
+13.988 0.05 216.18
+13.998 0.20 121.15
+14.008 0.00 132.83
+14.018 0.56 107.04
+14.028 0.43 113.66
+14.038 0.23 110.25
+14.048 0.50 121.15
+14.058 0.15 114.84
+14.068 0.32 128.20
+14.078 0.34 81.07
+14.088 0.28 91.12
+14.098 0.46 91.88
+14.108 0.25 108.09
+14.118 0.38 122.50
+14.128 0.76 101.15
+14.138 0.91 103.04
+14.148 0.91 103.04
+14.158 0.91 103.04
+14.168 0.96 102.08
+14.178 0.91 100.23
+14.188 0.87 96.71
+14.198 0.74 94.23
+14.208 0.61 87.50
+14.218 0.58 98.44
+14.228 0.58 169.62
+14.238 0.52 87.50
+14.248 0.76 96.71
+14.258 0.76 96.71
+14.268 0.90 96.71
+14.278 0.89 95.87
+14.288 0.90 96.71
+14.298 0.87 93.43
+14.307 0.90 91.88
+14.317 0.89 90.37
+14.327 0.86 90.37
+14.337 0.41 80.47
+14.347 0.25 81.07
+14.357 0.40 106.01
+14.367 0.67 97.57
+14.377 0.20 112.50
+14.387 0.28 290.13
+14.397 0.19 212.02
+14.407 0.69 245.00
+14.417 0.09 225.00
+14.427 0.00 212.02
+14.437 0.00 193.42
+14.447 0.01 11025.00
+14.457 0.01 11025.00
+14.467 0.00 11025.00
+14.477 0.00 5512.50
+14.487 0.00 3675.00
+14.497 0.00 80.47
+14.507 0.00 100.23
+14.517 0.35 80.47
+14.527 0.00 100.23
+14.537 0.35 80.47
+14.547 0.35 80.47
+14.557 0.00 99.32
+14.567 0.00 99.32
+14.577 0.45 117.29
+14.587 0.41 145.07
+14.597 0.00 99.32
+14.607 0.00 186.86
+14.617 0.14 143.18
+14.627 0.41 114.84
+14.637 0.00 128.20
+14.647 0.28 121.15
+14.657 0.35 92.65
+14.667 0.00 84.81
+14.677 0.23 204.17
+14.687 0.41 204.17
+14.697 0.81 200.45
+14.707 0.45 196.88
+14.717 0.00 225.00
+14.727 0.57 200.45
+14.737 0.41 204.17
+14.746 0.00 196.88
+14.756 0.00 408.33
+14.766 0.00 501.14
+14.776 0.62 229.69
+14.786 0.87 216.18
+14.796 0.92 216.18
+14.806 0.92 216.18
+14.816 0.92 216.18
+14.826 0.92 216.18
+14.836 0.88 208.02
+14.846 0.72 204.17
+14.856 0.39 200.45
+14.866 0.36 200.45
+14.876 0.35 105.00
+14.886 0.60 95.04
+14.896 0.61 97.57
+14.906 0.47 114.84
+14.916 0.29 95.87
+14.926 0.10 95.87
+14.936 0.67 91.88
+14.946 0.62 93.43
+14.956 0.61 92.65
+14.966 0.31 91.88
+14.976 0.29 90.37
+14.986 0.49 88.20
+14.996 0.37 91.12
+15.006 0.34 84.81
+15.016 0.35 84.81
+15.026 0.30 186.86
+15.036 0.39 175.00
+15.046 0.86 175.00
+15.056 0.86 175.00
+15.066 0.75 177.82
+15.076 0.75 177.82
+15.086 0.75 177.82
+15.096 0.34 180.74
+15.106 0.46 164.55
+15.116 0.26 128.20
+15.126 0.00 88.20
+15.136 0.23 86.13
+15.146 0.46 80.47
+15.156 0.63 85.47
+15.166 0.31 88.20
+15.176 0.63 85.47
+15.185 0.00 80.47
+15.195 0.00 80.47
+15.205 0.00 306.25
+15.215 0.00 256.40
+15.225 0.00 290.13
+15.235 0.18 105.00
+15.245 0.00 123.88
+15.255 0.30 167.05
+15.265 0.58 162.13
+15.275 0.66 159.78
+15.285 0.66 159.78
+15.295 0.00 157.50
+15.305 0.33 157.50
+15.315 0.00 408.33
+15.325 0.01 441.00
+15.335 0.44 459.38
+15.345 0.00 424.04
+15.355 0.49 479.35
+15.365 0.05 580.26
+15.375 0.00 525.00
+15.385 0.00 580.26
+15.395 0.36 153.12
+15.405 0.31 147.00
+15.415 0.72 162.13
+15.425 0.18 157.50
+15.435 0.51 153.12
+15.445 0.19 151.03
+15.455 0.00 175.00
+15.465 0.66 177.82
+15.475 0.88 169.62
+15.485 0.88 169.62
+15.495 0.88 169.62
+15.505 0.88 169.62
+15.515 0.82 169.62
+15.525 0.59 167.05
+15.535 0.81 167.05
+15.545 0.81 167.05
+15.555 0.21 186.86
+15.565 0.34 164.55
+15.575 0.60 131.25
+15.585 0.68 128.20
+15.595 0.33 157.50
+15.605 0.34 110.25
+15.615 0.27 155.28
+15.624 0.52 162.13
+15.634 0.08 167.05
+15.644 0.22 167.05
+15.654 0.15 147.00
+15.664 0.36 97.57
+15.674 0.17 101.15
+15.684 0.60 100.23
+15.694 0.18 116.05
+15.704 0.18 117.29
+15.714 0.17 117.29
+15.724 0.56 94.23
+15.734 0.22 80.47
+15.744 0.00 80.47
+15.754 0.40 107.04
+15.764 0.56 123.88
+15.774 0.18 125.28
+15.784 0.34 125.28
+15.794 0.59 101.15
+15.804 0.41 123.88
+15.814 0.22 125.28
+15.824 0.29 137.81
+15.834 0.00 134.45
+15.844 0.44 134.45
+15.854 0.56 122.50
+15.864 0.66 108.09
+15.874 0.17 122.50
+15.884 0.52 134.45
+15.894 0.56 125.28
+15.904 0.30 155.28
+15.914 0.33 122.50
+15.924 0.29 148.99
+15.934 0.00 159.78
+15.944 0.18 117.29
+15.954 0.63 137.81
+15.964 0.03 122.50
+15.974 0.60 110.25
+15.984 0.63 117.29
+15.994 0.45 139.56
+16.004 0.40 110.25
+16.014 0.26 100.23
+16.024 0.51 118.55
+16.034 0.18 136.11
+16.044 0.54 121.15
+16.054 0.29 114.84
+16.063 0.40 102.08
+16.073 0.24 118.55
+16.083 0.68 98.44
+16.093 0.00 122.50
+16.103 0.50 113.66
+16.113 0.04 98.44
+16.123 0.57 116.05
+16.133 0.00 117.29
+16.143 0.45 108.09
+16.153 0.57 141.35
+16.163 0.18 119.84
+16.173 0.43 172.27
+16.183 0.07 153.12
+16.193 0.03 153.12
+16.203 0.18 112.50
+16.213 0.20 95.87
+16.223 0.41 112.50
+16.233 0.27 125.28
+16.243 0.24 126.72
+16.253 0.38 86.13
+16.263 0.38 88.91
+16.273 0.38 88.91
+16.283 0.21 80.47
+16.293 0.19 95.04
+16.303 0.18 153.12
+16.313 0.03 113.66
+16.323 0.14 84.81
+16.333 0.55 95.04
+16.343 0.29 125.28
+16.353 0.00 101.15
+16.363 0.59 119.84
+16.373 0.00 101.15
+16.383 0.00 101.15
+16.393 0.32 80.47
+16.403 0.32 80.47
+16.413 0.13 91.88
+16.423 0.16 117.29
+16.433 0.56 95.87
+16.443 0.00 114.84
+16.453 0.00 169.62
+16.463 0.60 134.45
+16.473 0.81 137.81
+16.483 0.99 139.56
+16.493 0.99 139.56
+16.502 0.92 137.81
+16.512 0.82 137.81
+16.522 0.54 126.72
+16.532 0.91 123.88
+16.542 0.91 125.28
+16.552 0.91 123.88
+16.562 0.90 117.29
+16.572 0.69 119.84
+16.582 0.64 132.83
+16.592 0.66 128.20
+16.602 0.80 129.71
+16.612 0.91 136.11
+16.622 0.91 137.81
+16.632 0.93 141.35
+16.642 0.93 141.35
+16.652 0.68 137.81
+16.662 0.48 119.84
+16.672 0.83 113.66
+16.682 0.67 123.88
+16.692 0.38 141.35
+16.702 0.77 139.56
+16.712 0.63 129.71
+16.722 0.23 141.35
+16.732 0.06 145.07
+16.742 0.39 137.81
+16.752 0.69 131.25
+16.762 0.98 136.11
+16.772 0.99 136.11
+16.782 0.99 136.11
+16.792 0.99 136.11
+16.802 0.99 136.11
+16.812 0.88 132.83
+16.822 0.84 132.83
+16.832 0.84 136.11
+16.842 0.93 137.81
+16.852 0.90 141.35
+16.862 0.93 143.18
+16.872 0.96 147.00
+16.882 0.92 148.99
+16.892 0.96 147.00
+16.902 0.33 136.11
+16.912 0.30 137.81
+16.922 0.00 147.00
+16.932 0.00 136.11
+16.941 0.75 134.45
+16.951 0.19 125.28
+16.961 0.28 148.99
+16.971 0.37 134.45
+16.981 0.57 112.50
+16.991 0.53 108.09
+17.001 0.20 99.32
+17.011 0.48 96.71
+17.021 0.48 96.71
+17.031 0.00 81.67
+17.041 0.00 110.25
+17.051 0.42 131.25
+17.061 0.53 128.20
+17.071 0.51 122.50
+17.081 0.16 119.84
+17.091 0.55 121.15
+17.101 0.22 102.08
+17.111 0.26 151.03
+17.121 0.00 408.33
+17.131 0.00 459.38
+17.141 0.32 580.26
+17.151 0.66 580.26
+17.161 0.82 648.53
+17.171 0.00 648.53
+17.181 0.00 109.16
+17.191 0.81 109.16
+17.201 0.85 121.15
+17.211 0.81 125.28
+17.221 0.71 125.28
+17.231 0.66 129.71
+17.241 0.68 137.81
+17.251 0.77 141.35
+17.261 0.71 151.03
+17.271 0.85 162.13
+17.281 0.84 175.00
+17.291 0.91 183.75
+17.301 0.91 186.86
+17.311 0.96 200.45
+17.321 0.96 200.45
+17.331 0.91 204.17
+17.341 0.91 220.50
+17.351 0.91 216.18
+17.361 0.90 212.02
+17.371 0.92 204.17
+17.380 0.92 196.88
+17.390 0.91 180.74
+17.400 0.92 172.27
+17.410 0.92 167.05
+17.420 0.93 159.78
+17.430 0.91 157.50
+17.440 0.93 153.12
+17.450 0.90 151.03
+17.460 0.91 147.00
+17.470 0.90 141.35
+17.480 0.92 131.25
+17.490 0.90 122.50
+17.500 0.90 118.55
+17.510 0.90 109.16
+17.520 0.91 112.50
+17.530 0.93 108.09
+17.540 0.92 104.01
+17.550 0.89 96.71
+17.560 0.78 90.37
+17.570 0.42 81.67
+17.580 0.61 112.50
+17.590 0.23 101.15
+17.600 0.00 114.84
+17.610 0.59 3675.00
+17.620 0.40 3675.00
+17.630 0.59 3675.00
+17.640 0.42 11025.00
+17.650 0.49 3675.00
+17.660 0.49 3675.00
+17.670 0.44 3675.00
+17.680 0.75 2756.25
+17.690 0.75 2756.25
+17.700 0.00 3675.00
+17.710 0.00 2756.25
+17.720 0.56 128.20
+17.730 0.60 123.88
+17.740 0.67 117.29
+17.750 0.79 113.66
+17.760 0.85 111.36
+17.770 0.77 108.09
+17.780 0.54 129.71
+17.790 0.37 111.36
+17.800 0.74 648.53
+17.810 0.74 648.53
+17.820 0.74 648.53
+17.829 0.14 612.50
+17.839 0.11 129.71
+17.849 0.38 136.11
+17.859 0.74 113.66
+17.869 0.00 98.44
+17.879 0.28 105.00
+17.889 0.70 3675.00
+17.899 0.70 3675.00
+17.909 0.08 107.04
+17.919 0.59 95.04
+17.929 0.71 95.87
+17.939 0.49 93.43
+17.949 0.57 92.65
+17.959 0.64 88.91
+17.969 0.87 86.81
+17.979 0.64 82.28
+17.989 0.44 98.44
+17.999 0.72 5512.50
+18.009 0.67 5512.50
+18.019 0.72 5512.50
+18.029 0.55 5512.50
+18.039 0.72 5512.50
+18.049 0.69 2205.00
+18.059 0.69 2205.00
+18.069 0.43 3675.00
+18.079 0.81 3675.00
+18.089 0.81 3675.00
+18.099 0.81 3675.00
+18.109 0.81 3675.00
+18.119 0.31 106.01
+18.129 0.75 88.91
+18.139 0.37 86.13
+18.149 0.25 81.67
+18.159 0.00 80.47
+18.169 0.70 81.07
+18.179 0.51 80.47
+18.189 0.00 86.81
+18.199 0.54 91.12
+18.209 0.56 88.91
+18.219 0.91 88.20
+18.229 0.91 88.20
+18.239 0.89 87.50
+18.249 0.87 87.50
+18.259 0.90 86.81
+18.268 0.89 85.47
+18.278 0.90 84.81
+18.288 0.94 84.16
+18.298 0.94 84.16
+18.308 0.93 84.81
+18.318 0.94 86.81
+18.328 0.83 88.20
+18.338 0.76 89.63
+18.348 0.80 90.37
+18.358 0.66 89.63
+18.368 0.50 87.50
+18.378 0.76 86.81
+18.388 0.93 86.13
+18.398 0.95 85.47
+18.408 0.86 84.81
+18.418 0.76 83.52
+18.428 0.57 82.28
+18.438 0.62 82.89
+18.448 0.92 83.52
+18.458 0.55 85.47
+18.468 0.92 86.81
+18.478 0.92 86.81
+18.488 0.91 86.81
+18.498 0.93 86.13
+18.508 0.91 85.47
+18.518 0.90 85.47
+18.528 0.91 84.81
+18.538 0.96 83.52
+18.548 0.33 92.65
+18.558 0.44 94.23
+18.568 0.61 83.52
+18.578 0.41 81.07
+18.588 0.21 89.63
+18.598 0.30 91.12
+18.608 0.91 80.47
+18.618 0.92 84.16
+18.628 0.90 85.47
+18.638 0.81 84.81
+18.648 0.56 102.08
+18.658 0.28 100.23
+18.668 0.19 2205.00
+18.678 0.51 2205.00
+18.688 0.57 3675.00
+18.698 0.77 3675.00
+18.707 0.77 3675.00
+18.717 0.77 3675.00
+18.727 0.00 5512.50
+18.737 0.09 97.57
+18.747 0.74 95.04
+18.757 0.90 95.87
+18.767 0.93 89.63
+18.777 0.91 90.37
+18.787 0.79 90.37
+18.797 0.93 86.81
+18.807 0.95 86.81
+18.817 0.95 86.81
+18.827 0.97 86.81
+18.837 0.92 87.50
+18.847 0.97 86.81
+18.857 0.97 86.81
+18.867 0.97 86.81
+18.877 0.00 108.09
+18.887 0.40 101.15
+18.897 0.47 136.11
+18.907 0.00 114.84
+18.917 0.01 101.15
+18.927 0.07 81.07
+18.937 0.52 85.47
+18.947 0.21 106.01
+18.957 0.24 89.63
+18.967 0.34 88.20
+18.977 0.66 87.50
+18.987 0.84 86.81
+18.997 0.83 86.81
+19.007 0.84 86.13
+19.017 0.84 86.13
+19.027 0.79 83.52
+19.037 0.58 82.28
+19.047 0.71 82.28
+19.057 0.63 80.47
+19.067 0.76 82.28
+19.077 0.33 80.47
+19.087 0.31 116.05
+19.097 0.80 114.84
+19.107 0.80 114.84
+19.117 0.75 118.55
+19.127 0.70 111.36
+19.137 0.46 111.36
+19.146 0.71 112.50
+19.156 0.67 110.25
+19.166 0.77 109.16
+19.176 0.87 108.09
+19.186 0.90 107.04
+19.196 0.89 105.00
+19.206 0.89 105.00
+19.216 0.90 424.04
+19.226 0.45 393.75
+19.236 0.79 99.32
+19.246 0.87 96.71
+19.256 0.82 99.32
+19.266 0.71 100.23
+19.276 0.43 100.23
+19.286 0.36 95.87
+19.296 0.00 306.25
+19.306 0.35 297.97
+19.316 0.67 306.25
+19.326 0.18 282.69
+19.336 0.49 315.00
+19.346 0.32 95.04
+19.356 0.79 91.88
+19.366 0.83 92.65
+19.376 0.79 91.88
+19.386 0.83 92.65
+19.396 0.64 93.43
+19.406 0.55 95.04
+19.416 0.09 315.00
+19.426 0.39 96.71
+19.436 0.38 102.08
+19.446 0.22 324.26
+19.456 0.05 306.25
+19.466 0.38 97.57
+19.476 0.28 648.53
+19.486 0.26 275.62
+19.496 0.45 204.17
+19.506 0.46 225.00
+19.516 0.16 239.67
+19.526 0.27 245.00
+19.536 0.40 128.20
+19.546 0.38 268.90
+19.556 0.29 97.57
+19.566 0.28 459.38
+19.576 0.38 479.35
+19.585 0.29 102.08
+19.595 0.48 107.04
+19.605 0.65 111.36
+19.615 0.72 110.25
+19.625 0.04 96.71
+19.635 0.38 112.50
+19.645 0.54 81.67
+19.655 0.45 96.71
+19.665 0.74 96.71
+19.675 0.51 96.71
+19.685 0.45 95.87
+19.695 0.47 172.27
+19.705 0.53 95.87
+19.715 0.39 89.63
+19.725 0.21 104.01
+19.735 0.40 200.45
+19.745 0.50 172.27
+19.755 0.17 196.88
+19.765 0.75 200.45
+19.775 0.63 196.88
+19.785 0.55 193.42
+19.795 0.49 186.86
+19.805 0.80 186.86
+19.815 0.80 186.86
+19.825 0.80 186.86
+19.835 0.44 167.05
+19.845 0.46 367.50
+19.855 0.64 367.50
+19.865 0.69 424.04
+19.875 0.31 459.38
+19.885 0.55 393.75
+19.895 0.24 157.50
+19.905 0.64 175.00
+19.915 0.09 190.09
+19.925 0.06 216.18
+19.935 0.16 84.81
+19.945 0.38 88.91
+19.955 0.33 159.78
+19.965 0.57 175.00
+19.975 0.78 177.82
+19.985 0.56 180.74
+19.995 0.69 183.75
+20.005 0.65 177.82
+20.015 0.70 172.27
+20.024 0.58 175.00
+20.034 0.22 147.00
+20.044 0.48 180.74
+20.054 0.61 177.82
+20.064 0.59 88.91
+20.074 0.48 180.74
+20.084 0.55 169.62
+20.094 0.68 172.27
+20.104 0.69 177.82
+20.114 0.48 180.74
+20.124 0.38 175.00
+20.134 0.34 164.55
+20.144 0.62 162.13
+20.154 0.57 147.00
+20.164 0.37 145.07
+20.174 0.53 147.00
+20.184 0.51 147.00
+20.194 0.76 153.12
+20.204 0.71 155.28
+20.214 0.41 155.28
+20.224 0.44 159.78
+20.234 0.38 159.78
+20.244 0.70 153.12
+20.254 0.55 164.55
+20.264 0.00 155.28
+20.274 0.00 180.74
+20.284 0.13 3675.00
+20.294 0.00 103.04
+20.304 0.18 141.35
+20.314 0.36 119.84
+20.324 0.00 82.28
+20.334 0.00 98.44
+20.344 0.46 97.57
+20.354 0.68 82.28
+20.364 0.44 95.04
+20.374 0.89 88.20
+20.384 0.96 86.13
+20.394 0.90 88.20
+20.404 0.92 87.50
+20.414 0.94 88.20
+20.424 0.94 88.91
+20.434 0.91 88.20
+20.444 0.97 87.50
+20.454 0.94 88.20
+20.463 0.93 88.20
+20.473 0.95 88.20
+20.483 0.90 88.91
+20.493 0.94 87.50
+20.503 0.77 86.13
+20.513 0.94 87.50
+20.523 0.71 88.91
+20.533 0.00 106.01
+20.543 0.45 91.88
+20.553 0.04 109.16
+20.563 0.00 114.84
+20.573 0.34 118.55
+20.583 0.80 136.11
+20.593 0.00 114.84
+20.603 0.00 114.84
+20.613 0.48 80.47
+20.623 0.49 81.07
+20.633 0.73 86.13
+20.643 0.22 80.47
+20.653 0.18 80.47
+20.663 0.29 110.25
+20.673 0.57 111.36
+20.683 0.38 612.50
+20.693 0.41 612.50
+20.703 0.66 648.53
+20.713 0.66 648.53
+20.723 0.66 648.53
+20.733 0.34 689.06
+20.743 0.10 648.53
+20.753 0.02 122.50
+20.763 0.00 82.89
+20.773 0.00 145.07
+20.783 0.00 459.38
+20.793 0.13 459.38
+20.803 0.87 459.38
+20.813 0.78 229.69
+20.823 0.77 229.69
+20.833 0.95 229.69
+20.833 0.87 225.00
--- /dev/null
+# This crontab is installed at sphinx@batman
+#
+# Use this as a template. The actual crontab files are located
+# at ~sphinx/script/crontab.regression.batman (or .mangueira)
+MAILTO=sphinx+regression@cs.cmu.edu
+0 0 * * * $HOME/script/DailyDoxygen.sh
+0 1 * * * (. $HOME/.profile; svn up $SF_ROOT/sphinx3/src/tests/regression/run_dailySTD.sh; $SF_ROOT/sphinx3/src/tests/regression/run_dailySTD.sh)
+0 0 * * 3,7 (. $HOME/.profile; svn up $SF_ROOT/sphinx3/src/tests/regression/run_PERFFULL.sh; $SF_ROOT/sphinx3/src/tests/regression/run_PERFFULL.sh)
+20 07 * * * (. $HOME/.profile; svn up $SF_ROOT/sphinxbase/test/regression/tutorial-check.sh; qsub -o $SF_ROOT/regression/`hostname`/tutorial.out -j oe $SF_ROOT/sphinxbase/test/regression/tutorial-check.sh)
+20 05 * * * (. $HOME/.profile; svn up $SF_ROOT/sphinxbase/test/regression/launchCompileCheck.sh; $SF_ROOT/sphinxbase/test/regression/launchCompileCheck.sh)
--- /dev/null
+#JSGF V1.0;
+
+/**
+ * JSGF Grammar for Hello World example
+ */
+
+grammar polite;
+
+public <startPolite> = [please | kindly | could you | oh mighty computer];
+public <endPolite> = [please | thanks | thank you];
+
+public <allPolite> = (<startPolite> | <endPolite>)*;
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+echo "CEPVIEW TEST"
+tmpout="test-cepview.out"
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 13 \
+-d 13 \
+-f $tests/regression/chan3.mfc \
+> $tmpout 2>test-cepview.err
+if diff -w $tmpout $tests/regression/chan3.cepview > /dev/null 2>&1; then
+pass "CEPVIEW test"; else
+fail "CEPVIEW test"; fi
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe-ctl.out"
+
+echo "WAVE2FEAT CTL/WAV/SPH TEST"
+run_program sphinx_fe/sphinx_fe \
+-samprate 11025 \
+-frate 105 \
+-wlen 0.024 \
+-alpha 0.97 \
+-ncep 13 \
+-nfft 512 \
+-nfilt 36 \
+-upperf 5400 \
+-lowerf 130 \
+-blocksize 262500 \
+-verbose yes \
+-c $tests/regression/chan3.ctl \
+-di $tests/regression \
+-do . \
+-eo mfc \
+-input_endian little \
+> $tmpout 2>&1
+
+if ! cmp chan3.wav.mfc chan3.raw.mfc; then
+ fail "WAV and RAW compare"
+fi
+
+if ! cmp chan3.2chan.wav.mfc chan3.wav.mfc; then
+ fail "WAV2 and WAV compare"
+fi
+
+if ! cmp chan3.raw.mfc chan3.sph.mfc; then
+ fail "SPH and RAW compare"
+fi
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 13 \
+-d 13 \
+-f chan3.wav.mfc \
+> test-sphinx_fe.cepview 2>>$tmpout
+
+compare_table "WAVE2FEAT test" test-sphinx_fe.cepview $tests/regression/chan3.cepview 0.1
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe-dct.out"
+
+echo "WAVE2FEAT-DCT INVERTIBLE TEST"
+run_program sphinx_fe/sphinx_fe \
+-transform dct \
+-cep2spec yes \
+-nfilt 36 \
+-i $tests/regression/chan3.mfc \
+-o test-sphinx_fe-dct.logspec.out \
+> $tmpout 2>&1
+
+run_program sphinx_fe/sphinx_fe \
+-transform dct \
+-spec2cep yes \
+-nfilt 36 \
+-i test-sphinx_fe-dct.logspec.out \
+-o test-sphinx_fe-dct.mfc.out \
+>> $tmpout 2>&1
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 13 \
+-d 13 \
+-f test-sphinx_fe-dct.mfc.out \
+> test-sphinx_fe-dct.cepview.out 2>>$tmpout
+
+compare_table "WAVE2FEAT-DCT INVERTIBLE test" test-sphinx_fe-dct.cepview.out \
+ $tests/regression/chan3.cepview
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe-dither-seed.out"
+
+# Run sphinx_fe with dither and seed, so it is repeatable. There's
+# nothing special about the seed. Just chose it because it's pretty
+echo "WAVE2FEAT-DITHER-SEED TEST"
+run_program sphinx_fe/sphinx_fe \
+-dither 1 \
+-seed 1234 \
+-samprate 11025 \
+-frate 105 \
+-wlen 0.024 \
+-alpha 0.97 \
+-ncep 13 \
+-nfft 512 \
+-nfilt 36 \
+-upperf 5400 \
+-lowerf 130 \
+-blocksize 262500 \
+-i $tests/regression/chan3.raw \
+-input_endian little \
+-o test-sphinx_fe-dither-seed.mfc.out \
+-raw 1 > $tmpout 2>&1
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 13 \
+-d 13 \
+-f test-sphinx_fe-dither-seed.mfc.out \
+> test-sphinx_fe-dither-seed.cepview.out 2>>$tmpout
+
+compare_table "WAVE2FEAT-DITHER-SEED test" test-sphinx_fe-dither-seed.cepview.out \
+ $tests/regression/chan3-dither.cepview 0.1
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe-logspec.out"
+
+echo "WAVE2FEAT-LOGSPEC TEST"
+run_program sphinx_fe/sphinx_fe \
+-logspec 1 \
+-samprate 11025 \
+-frate 105 \
+-wlen 0.024 \
+-alpha 0.97 \
+-nfft 512 \
+-nfilt 36 \
+-upperf 5400 \
+-lowerf 130 \
+-blocksize 262500 \
+-i $tests/regression/chan3.raw \
+-input_endian little \
+-o test-sphinx_fe-logspec.mfc.out \
+-raw 1 > $tmpout 2>&1
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 36 \
+-d 36 \
+-f test-sphinx_fe-logspec.mfc.out \
+> test-sphinx_fe-logspec.cepview.out 2>>$tmpout
+
+compare_table "WAVE2FEAT-LOGSPEC test" test-sphinx_fe-logspec.cepview.out \
+ $tests/regression/chan3-logspec.cepview 0.2
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe-logspec2cep.out"
+
+echo "WAVE2FEAT-LOGSPEC2CEP TEST"
+run_program sphinx_fe/sphinx_fe \
+-spec2cep yes \
+-nfilt 36 \
+-i $tests/regression/chan3.logspec \
+-o test-sphinx_fe-logspec2cep.mfc.out \
+> $tmpout 2>&1
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 13 \
+-d 13 \
+-f test-sphinx_fe-logspec2cep.mfc.out \
+> test-sphinx_fe-logspec2cep.cepview.out 2>>$tmpout
+
+compare_table "WAVE2FEAT-LOGSPEC2CEP test" test-sphinx_fe-logspec2cep.cepview.out \
+ $tests/regression/chan3.cepview
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe-smoothspec.out"
+
+echo "WAVE2FEAT-SMOOTHSPEC TEST"
+run_program sphinx_fe/sphinx_fe \
+-smoothspec yes \
+-samprate 11025 \
+-frate 105 \
+-wlen 0.024 \
+-alpha 0.97 \
+-nfft 512 \
+-nfilt 36 \
+-upperf 5400 \
+-lowerf 130 \
+-blocksize 262500 \
+-i $tests/regression/chan3.raw \
+-input_endian little \
+-o test-sphinx_fe-smoothspec.logspec.out \
+-raw yes > $tmpout 2>&1
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 36 \
+-d 36 \
+-f test-sphinx_fe-smoothspec.logspec.out \
+> test-sphinx_fe-smoothspec.cepview.out 2>>$tmpout
+
+compare_table "WAVE2FEAT-SMOOTHSPEC test" test-sphinx_fe-smoothspec.cepview.out \
+ $tests/regression/chan3-smoothspec.cepview 0.1
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_fe.out"
+
+echo "WAVE2FEAT TEST"
+run_program sphinx_fe/sphinx_fe \
+-samprate 11025 \
+-frate 105 \
+-wlen 0.024 \
+-alpha 0.97 \
+-ncep 13 \
+-nfft 512 \
+-nfilt 36 \
+-upperf 5400 \
+-lowerf 130 \
+-blocksize 262500 \
+-i $tests/regression/chan3.raw \
+-input_endian little \
+-o test-sphinx_fe.mfc \
+-raw 1 > $tmpout 2>&1
+
+run_program sphinx_cepview/sphinx_cepview \
+-i 13 \
+-d 13 \
+-f test-sphinx_fe.mfc \
+> test-sphinx_fe.cepview 2>>$tmpout
+
+compare_table "WAVE2FEAT test" test-sphinx_fe.cepview $tests/regression/chan3.cepview 0.1
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+echo "JSGF2FSG TEST"
+rules="test.rightRecursion test.nestedRightRecursion test.kleene test.nulltest test.command"
+
+tmpout="test-jsgf2fsg.out"
+rm -f $tmpout
+
+JSGF_PATH=$tests/regression
+export JSGF_PATH
+for r in $rules; do
+ run_program sphinx_jsgf2fsg/sphinx_jsgf2fsg \
+ $tests/regression/test.gram $r > $r.out 2>>$tmpout
+ compare_table $r $r.out $tests/regression/$r.fsg
+done
+
--- /dev/null
+#!/bin/sh
+. ./testfuncs.sh
+
+tmpout="test-sphinx_pitch.out"
+
+echo "PITCH TEST"
+run_program sphinx_adtools/sphinx_pitch \
+-samprate 11025 \
+-i $tests/regression/chan3.raw \
+-input_endian little \
+-o test-sphinx_pitch.f0 \
+-raw yes > $tmpout 2>&1
+
+compare_table "PITCH test" test-sphinx_pitch.f0 $tests/regression/chan3.f0 0.1
--- /dev/null
+FSG_BEGIN <test.command>
+NUM_STATES 33
+START_STATE 0
+FINAL_STATE 1
+TRANSITION 0 2 1.000000
+TRANSITION 2 4 1.000000
+TRANSITION 3 14 1.000000
+TRANSITION 4 7 0.200004 oh
+TRANSITION 4 10 0.200004 could
+TRANSITION 4 12 0.200004 kindly
+TRANSITION 4 13 0.200004 please
+TRANSITION 4 6 0.200004
+TRANSITION 5 3 1.000000
+TRANSITION 6 5 1.000000
+TRANSITION 7 8 1.000000 mighty
+TRANSITION 8 9 1.000000 computer
+TRANSITION 9 5 1.000000
+TRANSITION 10 11 1.000000 you
+TRANSITION 11 5 1.000000
+TRANSITION 12 5 1.000000
+TRANSITION 13 5 1.000000
+TRANSITION 14 20 0.500041
+TRANSITION 14 16 0.500041
+TRANSITION 15 24 1.000000
+TRANSITION 16 18 0.500041 stop
+TRANSITION 16 19 0.500041 stop
+TRANSITION 17 15 1.000000
+TRANSITION 18 17 1.000000
+TRANSITION 19 16 1.000000
+TRANSITION 19 17 1.000000
+TRANSITION 20 23 0.500041 go
+TRANSITION 20 22 0.500041
+TRANSITION 21 15 1.000000
+TRANSITION 22 21 1.000000
+TRANSITION 23 20 1.000000
+TRANSITION 23 21 1.000000
+TRANSITION 24 26 1.000000
+TRANSITION 25 1 1.000000
+TRANSITION 26 29 0.250016 thank
+TRANSITION 26 31 0.250016 thanks
+TRANSITION 26 32 0.250016 please
+TRANSITION 26 28 0.250016
+TRANSITION 27 25 1.000000
+TRANSITION 28 27 1.000000
+TRANSITION 29 30 1.000000 you
+TRANSITION 30 27 1.000000
+TRANSITION 31 27 1.000000
+TRANSITION 32 27 1.000000
+FSG_END
--- /dev/null
+#JSGF V1.0;
+
+/**
+ * JSGF Grammar for Hello World example
+ */
+
+grammar test;
+
+import <polite.startPolite>;
+import <polite.endPolite>;
+
+
+public <rightRecursion> = <action> | (<action> and <rightRecursion> ) ;
+<action> = stop | start;
+
+
+public <nestedRightRecursion> = something | <Y> ;
+<Y> = another | <nestedRightRecursion> ;
+
+
+public <kleene> = <polite>* don't crash;
+<polite> = please | kindly | oh mighty computer;
+
+
+public <nulltest> = <ones> <twos> <threes>;
+
+<ones> = <NULL> (one [and] one);
+<twos> = <NULL> (two [and] two);
+<threes> = <NULL> (three [and] three);
+
+
+
+public <command> = <startPolite> <caction> <endPolite>;
+
+<caction> = go* | stop+;
+
--- /dev/null
+FSG_BEGIN <test.kleene>
+NUM_STATES 14
+START_STATE 0
+FINAL_STATE 1
+TRANSITION 0 2 1.000000
+TRANSITION 2 4 0.500041
+TRANSITION 2 5 0.500041
+TRANSITION 3 12 1.000000 don't
+TRANSITION 4 3 1.000000
+TRANSITION 5 7 0.333356 oh
+TRANSITION 5 10 0.333356 kindly
+TRANSITION 5 11 0.333356 please
+TRANSITION 6 2 1.000000
+TRANSITION 6 3 1.000000
+TRANSITION 7 8 1.000000 mighty
+TRANSITION 8 9 1.000000 computer
+TRANSITION 9 6 1.000000
+TRANSITION 10 6 1.000000
+TRANSITION 11 6 1.000000
+TRANSITION 12 13 1.000000 crash
+TRANSITION 13 1 1.000000
+FSG_END
--- /dev/null
+FSG_BEGIN <test.nestedRightRecursion>
+NUM_STATES 6
+START_STATE 0
+FINAL_STATE 1
+TRANSITION 0 5 0.500041 something
+TRANSITION 0 2 0.500041
+TRANSITION 2 4 0.500041 another
+TRANSITION 2 0 0.500041
+TRANSITION 2 3 1.000000
+TRANSITION 3 1 1.000000
+TRANSITION 4 3 1.000000
+TRANSITION 5 1 1.000000
+FSG_END
--- /dev/null
+FSG_BEGIN <test.nulltest>
+NUM_STATES 35
+START_STATE 0
+FINAL_STATE 1
+TRANSITION 0 2 1.000000
+TRANSITION 2 4 1.000000
+TRANSITION 3 13 1.000000
+TRANSITION 4 5 1.000000
+TRANSITION 5 7 1.000000 one
+TRANSITION 6 3 1.000000
+TRANSITION 7 8 1.000000
+TRANSITION 8 11 0.500041 and
+TRANSITION 8 10 0.500041
+TRANSITION 9 12 1.000000 one
+TRANSITION 10 9 1.000000
+TRANSITION 11 9 1.000000
+TRANSITION 12 6 1.000000
+TRANSITION 13 15 1.000000
+TRANSITION 14 24 1.000000
+TRANSITION 15 16 1.000000
+TRANSITION 16 18 1.000000 two
+TRANSITION 17 14 1.000000
+TRANSITION 18 19 1.000000
+TRANSITION 19 22 0.500041 and
+TRANSITION 19 21 0.500041
+TRANSITION 20 23 1.000000 two
+TRANSITION 21 20 1.000000
+TRANSITION 22 20 1.000000
+TRANSITION 23 17 1.000000
+TRANSITION 24 26 1.000000
+TRANSITION 25 1 1.000000
+TRANSITION 26 27 1.000000
+TRANSITION 27 29 1.000000 three
+TRANSITION 28 25 1.000000
+TRANSITION 29 30 1.000000
+TRANSITION 30 33 0.500041 and
+TRANSITION 30 32 0.500041
+TRANSITION 31 34 1.000000 three
+TRANSITION 32 31 1.000000
+TRANSITION 33 31 1.000000
+TRANSITION 34 28 1.000000
+FSG_END
--- /dev/null
+FSG_BEGIN <test.rightRecursion>
+NUM_STATES 13
+START_STATE 0
+FINAL_STATE 1
+TRANSITION 0 2 0.500041
+TRANSITION 0 9 0.500041
+TRANSITION 2 4 1.000000
+TRANSITION 3 1 1.000000
+TRANSITION 4 6 0.500041 start
+TRANSITION 4 7 0.500041 stop
+TRANSITION 5 8 1.000000 and
+TRANSITION 6 5 1.000000
+TRANSITION 7 5 1.000000
+TRANSITION 8 0 1.000000
+TRANSITION 8 3 1.000000
+TRANSITION 9 11 0.500041 start
+TRANSITION 9 12 0.500041 stop
+TRANSITION 10 1 1.000000
+TRANSITION 11 10 1.000000
+TRANSITION 12 10 1.000000
+FSG_END
--- /dev/null
+# Utility functions and parameters for regression tests
+
+# Predefined directories you may need
+# Stupid broken RedHat autoconf doesn't do @abs_top_srcdir@
+builddir="@top_builddir@"
+sourcedir="@top_srcdir@"
+tests=$sourcedir/test
+
+# Automatically report failures on exit
+failures=""
+trap "report_failures" 0
+
+run_program() {
+ program="$1"
+ shift
+ $builddir/libtool --mode=execute "$builddir/src/$program" $@
+}
+
+debug_program() {
+ program="$1"
+ shift
+ $builddir/libtool --mode=execute gdb --args "$builddir/src/$program" $@
+}
+
+memcheck_program() {
+ program="$1"
+ shift
+ $builddir/libtool --mode=execute valgrind --leak-check=full "$builddir/src/$program" $@
+}
+
+pass() {
+ title="$1"
+ echo "$title PASSED"
+}
+
+fail() {
+ title="$1"
+ echo "$title FAILED"
+ failures="$failures,$title"
+}
+
+compare_table() {
+ title="$1"
+ shift
+ if perl "$tests/compare_table.pl" $@ | grep SUCCESS >/dev/null 2>&1; then
+ pass "$title"
+ else
+ fail "$title"
+ fi
+}
+
+report_failures() {
+ if test x"$failures" = x; then
+ echo "All sub-tests passed"
+ exit 0
+ else
+ echo "Sub-tests failed:$failures" | sed -e 's/,/ /g'
+ exit 1
+ fi
+}
--- /dev/null
+# Utility functions and parameters for regression tests
+
+# Predefined directories you may need
+: ${CONFIGURATION:=Debug}
+builddir="../../bin/$CONFIGURATION"
+sourcedir="../.."
+tests=$sourcedir/test
+
+# Automatically report failures on exit
+failures=""
+trap "report_failures" 0
+
+run_program() {
+ program=`basename $1`
+ shift
+ "$builddir/$program" $@
+}
+
+debug_program() {
+ program=`basename $1`
+ shift
+ gdb --args "$builddir/$program" $@
+}
+
+memcheck_program() {
+ program=`basename $1`
+ shift
+ valgrind --leak-check=full "$builddir/$program" $@
+}
+
+pass() {
+ title="$1"
+ echo "$title PASSED"
+}
+
+fail() {
+ title="$1"
+ echo "$title FAILED"
+ failures="$failures,$title"
+}
+
+compare_table() {
+ title="$1"
+ shift
+ if perl "$tests/compare_table.pl" $@ | grep SUCCESS >/dev/null 2>&1; then
+ pass "$title"
+ else
+ fail "$title"
+ fi
+}
+
+report_failures() {
+ if test x"$failures" = x; then
+ echo "All sub-tests passed"
+ exit 0
+ else
+ echo "Sub-tests failed:$failures" | sed -e 's/,/ /g'
+ exit 1
+ fi
+}
--- /dev/null
+#!/bin/bash -x
+
+# Check if we're running under PBS and print information useful for debugging
+if [ -n "$PBS_ENVIRONMENT" ]; then
+ echo ""
+ echo "This job was submitted by user: $PBS_O_LOGNAME"
+ echo "This job was submitted to host: $PBS_O_HOST"
+ echo "This job was submitted to queue: $PBS_O_QUEUE"
+ echo "PBS working directory: $PBS_O_WORKDIR"
+ echo "PBS job id: $PBS_JOBID"
+ echo "PBS job name: $PBS_JOBNAME"
+ echo "PBS environment: $PBS_ENVIRONMENT"
+ echo ""
+ echo "This script is running on `hostname` "
+ echo ""
+fi
+
+# make sure that /usr/ucb is here, towards the beginning, to make sure
+# that the 'ps' command in Solaris is compatible with the gnu one.
+export PATH=/usr/ucb:/usr/local/bin:${PATH}
+
+loopUntilSuccess () {
+ cmd=$@
+ # start loop to download code
+ count=0;
+
+ while ! $cmd; do
+ count=`expr $count + 1`
+ if [ $count -gt 50 ]; then
+ # not successful, and we attempted it too many times. Clean up and leave.
+ return $count
+ fi
+ done
+}
+
+# Check that we have all executables
+if ! WGET=`command -v wget 2>&1`; then exit 1; fi
+if ! SVN=`command -v svn 2>&1`; then exit 1; fi
+if ! PERL=`command -v perl 2>&1`; then exit 1; fi
+if ! MAKE=`command -v gmake 2>&1`; then
+ if ! MAKE=`command -v make 2>&1`; then exit 1; fi
+fi
+if ! TAR=`command -v gtar 2>&1`; then
+ if ! TAR=`command -v tar 2>&1`; then exit 1; fi
+fi
+if ! MAIL=`command -v mhmail 2>&1`; then
+ if ! MAIL=`command -v mailx 2>&1`; then
+ if ! MAIL=`command -v sendmail 2>&1`; then
+ if ! MAIL=`command -v mutt 2>&1`; then exit 1; fi
+ fi
+ fi
+fi
+
+# Create temp directory
+temp_dir=/tmp/temp$$
+mkdir $temp_dir
+pushd $temp_dir > /dev/null
+
+LOG=$temp_dir/log.txt
+echo > $LOG
+MAILLIST=cmusphinx-results@lists.sourceforge.net
+
+# Get the data
+${WGET} -q http://www.speech.cs.cmu.edu/databases/an4/an4_sphere.tar.gz
+${TAR} -xzf an4_sphere.tar.gz
+/bin/rm an4_sphere.tar.gz
+
+# Get sphinxbase
+if (loopUntilSuccess ${SVN} co https://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/trunk/sphinxbase > /dev/null &&
+cd sphinxbase &&
+./autogen.sh &&
+./autogen.sh CFLAGS="-O2 -Wall" --prefix=`(cd ..; pwd)`/build &&
+${MAKE} all install) >> $LOG 2>&1 ; then
+
+# Get the trainer
+if (loopUntilSuccess ${SVN} co https://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/trunk/SphinxTrain > /dev/null &&
+cd SphinxTrain &&
+./configure CFLAGS="-O2 -Wall" --with-sphinxbase=$temp_dir/sphinxbase &&
+${MAKE} &&
+${PERL} scripts_pl/setup_tutorial.pl an4) >> $LOG 2>&1 ; then
+
+# Get the decoder
+if (loopUntilSuccess ${SVN} co https://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/trunk/sphinx3 > /dev/null &&
+cd sphinx3 &&
+./autogen.sh &&
+./autogen.sh CFLAGS="-O2 -Wall" --prefix=`(cd ..; pwd)`/build --with-sphinxbase=$temp_dir/sphinxbase &&
+${MAKE} all install &&
+${PERL} scripts/setup_tutorial.pl an4) >> $LOG 2>&1 ; then
+
+# Run it
+cd an4 &&
+perl scripts_pl/make_feats.pl -ctl etc/an4_train.fileids >> $LOG 2>&1 &&
+perl scripts_pl/make_feats.pl -ctl etc/an4_test.fileids >> $LOG 2>&1 &&
+perl scripts_pl/RunAll.pl >> $LOG 2>&1 &&
+perl scripts_pl/decode/slave.pl >> $LOG 2>&1
+
+# end of if (sphinx3)
+fi
+# end of if (SphinxTrain)
+fi
+# end of sphinxbase
+fi
+
+# Check whether the Word Error Rate is reasonable, hardwired for now
+if SER=`grep 'SENTENCE ERROR' $LOG 2>&1`; then
+SUCCESS=`echo $SER | awk '{d = $(3) - 57};{if (d < 0) d = -d};{if (d < 2) print "1"}'`;
+fi;
+
+# Send mail if we failed
+if test x${SUCCESS} == x ; then
+cat `find $temp_dir/an4/logdir/ -type f -print | tail -1` >> ${LOG}
+$MAIL -s "Tutorial failed" ${MAILLIST} < ${LOG}
+else
+echo $SER | $MAIL -s "Tutorial succeded" ${MAILLIST}
+fi
+
+# Remove what we created
+popd > /dev/null
+/bin/rm -rf $temp_dir
--- /dev/null
+if USE_LAPACK
+maybe_lapack = test_matrix
+endif
+
+if USE_THREADS
+maybe_threads = test_thread
+endif
+
+SUBDIRS=test_ad \
+ test_alloc \
+ test_bitvec \
+ test_case \
+ test_string \
+ test_cmdln \
+ test_hash \
+ $(maybe_lapack) \
+ test_fe \
+ test_feat \
+ test_logmath \
+ test_ngram \
+ test_fsg \
+ test_util \
+ $(maybe_threads)
+
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = test/unit
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/testfuncs.sh.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES = testfuncs.sh
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = test_ad test_alloc test_bitvec test_case test_string \
+ test_cmdln test_hash test_matrix test_fe test_feat \
+ test_logmath test_ngram test_fsg test_util test_thread
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@USE_LAPACK_TRUE@maybe_lapack = test_matrix
+@USE_THREADS_TRUE@maybe_threads = test_thread
+SUBDIRS = test_ad \
+ test_alloc \
+ test_bitvec \
+ test_case \
+ test_string \
+ test_cmdln \
+ test_hash \
+ $(maybe_lapack) \
+ test_fe \
+ test_feat \
+ test_logmath \
+ test_ngram \
+ test_fsg \
+ test_util \
+ $(maybe_threads)
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+testfuncs.sh: $(top_builddir)/config.status $(srcdir)/testfuncs.sh.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+# 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:
--- /dev/null
+check_PROGRAMS = test_ad_read test_ad_copy
+
+TESTS = test_ad_read test_ad_copy
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la \
+ ${top_builddir}/src/libsphinxad/libsphinxad.la
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_ad_read$(EXEEXT) test_ad_copy$(EXEEXT)
+TESTS = test_ad_read$(EXEEXT) test_ad_copy$(EXEEXT)
+subdir = test/unit/test_ad
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_ad_copy_SOURCES = test_ad_copy.c
+test_ad_copy_OBJECTS = test_ad_copy.$(OBJEXT)
+test_ad_copy_LDADD = $(LDADD)
+test_ad_copy_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la \
+ ${top_builddir}/src/libsphinxad/libsphinxad.la
+test_ad_read_SOURCES = test_ad_read.c
+test_ad_read_OBJECTS = test_ad_read.$(OBJEXT)
+test_ad_read_LDADD = $(LDADD)
+test_ad_read_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la \
+ ${top_builddir}/src/libsphinxad/libsphinxad.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_ad_copy.c test_ad_read.c
+DIST_SOURCES = test_ad_copy.c test_ad_read.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la \
+ ${top_builddir}/src/libsphinxad/libsphinxad.la
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_ad/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_ad/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_ad_copy$(EXEEXT): $(test_ad_copy_OBJECTS) $(test_ad_copy_DEPENDENCIES)
+ @rm -f test_ad_copy$(EXEEXT)
+ $(LINK) $(test_ad_copy_OBJECTS) $(test_ad_copy_LDADD) $(LIBS)
+test_ad_read$(EXEEXT): $(test_ad_read_OBJECTS) $(test_ad_read_DEPENDENCIES)
+ @rm -f test_ad_read$(EXEEXT)
+ $(LINK) $(test_ad_read_OBJECTS) $(test_ad_read_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ad_copy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ad_read.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+/* -*- c-basic-offset: 4 -*- */
+
+#include "config.h"
+#include "ad.h"
+#include "cont_ad.h"
+#include "ckd_alloc.h"
+#include "byteorder.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+
+#ifndef WORDS_BIGENDIAN
+#define WORDS_BIGENDIAN 0
+#endif
+
+int
+main(int argc, char *argv[])
+{
+ cont_ad_t *cont;
+ FILE *infp;
+ int16 buf[512];
+ int listening;
+ int k, n_calib_samp;
+ int16 *calib, *cptr;
+
+ TEST_ASSERT(infp = fopen(TESTDATADIR "/chan3.raw", "rb"));
+ TEST_ASSERT(cont = cont_ad_init(NULL, NULL));
+
+ n_calib_samp = cont_ad_calib_size(cont);
+ calib = ckd_malloc(n_calib_samp * 2);
+ printf("Reading %d calibration samples\n", n_calib_samp);
+ TEST_ASSERT(fread(calib, 2, n_calib_samp, infp) == n_calib_samp);
+ printf("Calibrating...\n");
+ TEST_EQUAL(0, cont_ad_calib_loop(cont, calib, n_calib_samp));
+ printf("Calibrated!\n");
+
+ listening = FALSE;
+ cptr = calib;
+ while (1) {
+ /* Use up the calibration samples first. */
+ if (n_calib_samp) {
+ k = n_calib_samp;
+ if (k > 512)
+ k = 512;
+ memcpy(buf, cptr, 512 * 2);
+ cptr += k;
+ n_calib_samp -= k;
+ if (k < 512)
+ k = fread(buf + k, 2, 512-k, infp);
+ }
+ else {
+ k = fread(buf, 2, 512, infp);
+ }
+
+ /* End of file. */
+ if (k < 256) { /* FIXME: It should do something useful with fewer samples. */
+ if (listening) {
+ printf("End of file at %.3f seconds\n",
+ (double)(cont->read_ts - k) / 16000);
+ }
+ break;
+ }
+
+ k = cont_ad_read(cont, buf, k);
+
+ if (cont->state == CONT_AD_STATE_SIL) {
+ /* Has there been enough silence to cut the utterance? */
+ if (listening && cont->seglen > 8000) {
+ printf("End of utterance at %.3f seconds\n",
+ (double)(cont->read_ts - k - cont->seglen) / 16000);
+ listening = FALSE;
+ }
+ }
+ else {
+ if (!listening) {
+ printf("Start of utterance at %.3f seconds\n",
+ (double)(cont->read_ts - k) / 16000);
+ listening = TRUE;
+ }
+ }
+ }
+
+ ckd_free(calib);
+ cont_ad_close(cont);
+ fclose(infp);
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4 -*- */
+#include "config.h"
+#include "ad.h"
+#include "cont_ad.h"
+#include "byteorder.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+
+#ifndef WORDS_BIGENDIAN
+#define WORDS_BIGENDIAN 0
+#endif
+
+FILE *infp;
+
+static int32
+file_ad_read(ad_rec_t * r, int16 * buf, int32 max)
+{
+ int32 i, k;
+
+ k = fread(buf, sizeof(int16), max, infp);
+ if (WORDS_BIGENDIAN) {
+ for (i = 0; i < k; i++) {
+ SWAP_INT16(&buf[i]);
+ }
+ }
+
+ return ((k > 0) ? k : -1);
+}
+
+int
+main(int argc, char *argv[])
+{
+ cont_ad_t *cont;
+ ad_rec_t ad;
+ int16 buf[512];
+ int listening;
+
+ ad.sps = 16000;
+ ad.bps = 2;
+
+ TEST_ASSERT(infp = fopen(TESTDATADIR "/chan3.raw", "rb"));
+ TEST_ASSERT(cont = cont_ad_init(&ad, file_ad_read));
+
+ printf("Calibrating ...");
+ fflush(stdout);
+ if (cont_ad_calib(cont) < 0)
+ printf(" failed; file too short?\n");
+ else
+ printf(" done after %ld samples\n", ftell(infp) / 2);
+ rewind(infp);
+
+ listening = FALSE;
+ while (1) {
+ int k = cont_ad_read(cont, buf, 512);
+ /* End of file. */
+ if (k < 0) {
+ if (listening) {
+ printf("End of file at %.3f seconds\n",
+ (double)(cont->read_ts - k) / 16000);
+ }
+ break;
+ }
+
+ if (cont->state == CONT_AD_STATE_SIL) {
+ /* Has there been enough silence to cut the utterance? */
+ if (listening && cont->seglen > 8000) {
+ printf("End of utterance at %.3f seconds\n",
+ (double)(cont->read_ts - k - cont->seglen) / 16000);
+ listening = FALSE;
+ }
+ }
+ else {
+ if (!listening) {
+ printf("Start of utterance at %.3f seconds\n",
+ (double)(cont->read_ts - k) / 16000);
+ listening = TRUE;
+ }
+ }
+ }
+
+ cont_ad_close(cont);
+ fclose(infp);
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define EPSILON 0.01
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+check_PROGRAMS = test_ckd_alloc test_ckd_alloc_catch test_ckd_alloc_fail test_ckd_alloc_abort \
+ test_listelem_alloc
+
+TESTS = test_ckd_alloc test_ckd_alloc_catch test_ckd_alloc_fail.sh test_ckd_alloc_abort.sh \
+ test_listelem_alloc
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+EXTRA_DIST = test_ckd_alloc_fail.sh test_ckd_alloc_abort.sh
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_ckd_alloc$(EXEEXT) test_ckd_alloc_catch$(EXEEXT) \
+ test_ckd_alloc_fail$(EXEEXT) test_ckd_alloc_abort$(EXEEXT) \
+ test_listelem_alloc$(EXEEXT)
+TESTS = test_ckd_alloc$(EXEEXT) test_ckd_alloc_catch$(EXEEXT) \
+ test_ckd_alloc_fail.sh test_ckd_alloc_abort.sh \
+ test_listelem_alloc$(EXEEXT)
+subdir = test/unit/test_alloc
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_ckd_alloc_SOURCES = test_ckd_alloc.c
+test_ckd_alloc_OBJECTS = test_ckd_alloc.$(OBJEXT)
+test_ckd_alloc_LDADD = $(LDADD)
+test_ckd_alloc_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_ckd_alloc_abort_SOURCES = test_ckd_alloc_abort.c
+test_ckd_alloc_abort_OBJECTS = test_ckd_alloc_abort.$(OBJEXT)
+test_ckd_alloc_abort_LDADD = $(LDADD)
+test_ckd_alloc_abort_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_ckd_alloc_catch_SOURCES = test_ckd_alloc_catch.c
+test_ckd_alloc_catch_OBJECTS = test_ckd_alloc_catch.$(OBJEXT)
+test_ckd_alloc_catch_LDADD = $(LDADD)
+test_ckd_alloc_catch_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_ckd_alloc_fail_SOURCES = test_ckd_alloc_fail.c
+test_ckd_alloc_fail_OBJECTS = test_ckd_alloc_fail.$(OBJEXT)
+test_ckd_alloc_fail_LDADD = $(LDADD)
+test_ckd_alloc_fail_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_listelem_alloc_SOURCES = test_listelem_alloc.c
+test_listelem_alloc_OBJECTS = test_listelem_alloc.$(OBJEXT)
+test_listelem_alloc_LDADD = $(LDADD)
+test_listelem_alloc_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_ckd_alloc.c test_ckd_alloc_abort.c \
+ test_ckd_alloc_catch.c test_ckd_alloc_fail.c \
+ test_listelem_alloc.c
+DIST_SOURCES = test_ckd_alloc.c test_ckd_alloc_abort.c \
+ test_ckd_alloc_catch.c test_ckd_alloc_fail.c \
+ test_listelem_alloc.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+EXTRA_DIST = test_ckd_alloc_fail.sh test_ckd_alloc_abort.sh
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_alloc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_alloc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_ckd_alloc$(EXEEXT): $(test_ckd_alloc_OBJECTS) $(test_ckd_alloc_DEPENDENCIES)
+ @rm -f test_ckd_alloc$(EXEEXT)
+ $(LINK) $(test_ckd_alloc_OBJECTS) $(test_ckd_alloc_LDADD) $(LIBS)
+test_ckd_alloc_abort$(EXEEXT): $(test_ckd_alloc_abort_OBJECTS) $(test_ckd_alloc_abort_DEPENDENCIES)
+ @rm -f test_ckd_alloc_abort$(EXEEXT)
+ $(LINK) $(test_ckd_alloc_abort_OBJECTS) $(test_ckd_alloc_abort_LDADD) $(LIBS)
+test_ckd_alloc_catch$(EXEEXT): $(test_ckd_alloc_catch_OBJECTS) $(test_ckd_alloc_catch_DEPENDENCIES)
+ @rm -f test_ckd_alloc_catch$(EXEEXT)
+ $(LINK) $(test_ckd_alloc_catch_OBJECTS) $(test_ckd_alloc_catch_LDADD) $(LIBS)
+test_ckd_alloc_fail$(EXEEXT): $(test_ckd_alloc_fail_OBJECTS) $(test_ckd_alloc_fail_DEPENDENCIES)
+ @rm -f test_ckd_alloc_fail$(EXEEXT)
+ $(LINK) $(test_ckd_alloc_fail_OBJECTS) $(test_ckd_alloc_fail_LDADD) $(LIBS)
+test_listelem_alloc$(EXEEXT): $(test_listelem_alloc_OBJECTS) $(test_listelem_alloc_DEPENDENCIES)
+ @rm -f test_listelem_alloc$(EXEEXT)
+ $(LINK) $(test_listelem_alloc_OBJECTS) $(test_listelem_alloc_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ckd_alloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ckd_alloc_abort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ckd_alloc_catch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ckd_alloc_fail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_listelem_alloc.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#include <stdio.h>
+
+#include <ckd_alloc.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ int *alloc1;
+ int **alloc2;
+ int ***alloc3;
+ int i;
+
+ TEST_ASSERT(alloc1 = ckd_calloc(3*3*3, sizeof(*alloc1)));
+ TEST_ASSERT(alloc2 = ckd_calloc_2d(3, 3, sizeof(**alloc2)));
+ TEST_ASSERT(alloc3 = ckd_calloc_3d(3, 3, 3, sizeof(***alloc3)));
+
+ for (i = 0; i < 27; ++i) {
+ TEST_EQUAL(alloc1[i], 0);
+ alloc1[i] = i + 1;
+ }
+ for (i = 0; i < 27; ++i)
+ TEST_EQUAL(alloc1[i], i+1);
+
+ for (i = 0; i < 3; ++i) {
+ int j;
+ for (j = 0; j < 3; ++j) {
+ TEST_EQUAL(alloc2[i][j], 0);
+ alloc2[i][j] = i * 3 + j + 1;
+ }
+ }
+ /* Verify that row-major ordering is in use. */
+ for (i = 0; i < 9; ++i) {
+ TEST_EQUAL(alloc2[0][i], i+1);
+ TEST_EQUAL(alloc2[0][i], alloc1[i]);
+ }
+ for (i = 0; i < 3; ++i) {
+ int j;
+ for (j = 0; j < 3; ++j) {
+ TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
+ }
+ }
+ /* Now test alloc_ptr. */
+ ckd_free_2d(alloc2);
+ alloc2 = ckd_alloc_2d_ptr(3, 3, alloc1, sizeof(*alloc1));
+ for (i = 0; i < 9; ++i) {
+ TEST_EQUAL(alloc2[0][i], i+1);
+ TEST_EQUAL(alloc2[0][i], alloc1[i]);
+ }
+ for (i = 0; i < 3; ++i) {
+ int j;
+ for (j = 0; j < 3; ++j) {
+ TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
+ }
+ }
+ ckd_free_2d_ptr(alloc2);
+
+ for (i = 0; i < 3; ++i) {
+ int j;
+ for (j = 0; j < 3; ++j) {
+ int k;
+ for (k = 0; k < 3; ++k) {
+ TEST_EQUAL(alloc3[i][j][k], 0);
+ alloc3[i][j][k] = i * 3 * 3 + j * 3 + k + 1;
+ }
+ }
+ }
+ /* Verify that row-major ordering is in use. */
+ for (i = 0; i < 27; ++i) {
+ TEST_EQUAL(alloc3[0][0][i], i+1);
+ TEST_EQUAL(alloc3[0][0][i], alloc1[i]);
+ }
+ for (i = 0; i < 3; ++i) {
+ int j;
+ for (j = 0; j < 3; ++j) {
+ int k;
+ for (k = 0; k < 3; ++k) {
+ TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
+ }
+ }
+ }
+ /* Now test alloc_ptr. */
+ ckd_free_3d(alloc3);
+ alloc3 = ckd_alloc_3d_ptr(3, 3, 3, alloc1, sizeof(*alloc1));
+ for (i = 0; i < 27; ++i) {
+ TEST_EQUAL(alloc3[0][0][i], i+1);
+ TEST_EQUAL(alloc3[0][0][i], alloc1[i]);
+ }
+ for (i = 0; i < 3; ++i) {
+ int j;
+ for (j = 0; j < 3; ++j) {
+ int k;
+ for (k = 0; k < 3; ++k) {
+ TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
+ }
+ }
+ }
+ ckd_free_3d_ptr(alloc3);
+ ckd_free(alloc1);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+
+#include <ckd_alloc.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ int *alloc1;
+ int bad_alloc_did_not_fail = FALSE;
+
+ ckd_set_jump(NULL, TRUE);
+ /* Guaranteed to fail, we hope!. */
+ alloc1 = ckd_calloc(-1,-1);
+ TEST_ASSERT(bad_alloc_did_not_fail);
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+. ../testfuncs.sh
+
+ulimit -c 0
+if ./test_ckd_alloc_abort; then
+ fail expected_failure
+else
+ pass expected_failure
+fi
+
--- /dev/null
+#include <stdio.h>
+
+#include <ckd_alloc.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ int *alloc1;
+ jmp_buf env;
+
+ ckd_set_jump(&env, FALSE);
+ if (setjmp(env)) {
+ printf("Successfully caught bad allocation!\n");
+ }
+ else {
+ int failed_to_catch_bad_alloc = FALSE;
+
+ /* Guaranteed to fail, we hope!. */
+ alloc1 = ckd_calloc(-1,-1);
+ TEST_ASSERT(failed_to_catch_bad_alloc);
+ }
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+
+#include <ckd_alloc.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ int *alloc1;
+ int bad_alloc_did_not_fail = FALSE;
+
+ ckd_set_jump(NULL, FALSE);
+ /* Guaranteed to fail, we hope!. */
+ alloc1 = ckd_calloc(-1,-1);
+ TEST_ASSERT(bad_alloc_did_not_fail);
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+. ../testfuncs.sh
+
+./test_ckd_alloc_fail
+if [ $? = 255 ]; then
+ pass expected_failure
+else
+ fail expected_failure
+fi
+
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+
+#include <listelem_alloc.h>
+
+#include "test_macros.h"
+
+struct bogus {
+ char const *str;
+ long foobie;
+};
+
+int
+main(int argc, char *argv[])
+{
+ listelem_alloc_t *le;
+ struct bogus *bogus1, *bogus2;
+ int i;
+
+ TEST_ASSERT(le = listelem_alloc_init(sizeof(struct bogus)));
+ bogus1 = listelem_malloc(le);
+ bogus1->str = "hello";
+ bogus1->foobie = 42;
+ bogus2 = listelem_malloc(le);
+ bogus2->str = "goodbye";
+ bogus2->foobie = 69;
+ TEST_EQUAL(bogus1->foobie, 42);
+ TEST_EQUAL(0, strcmp(bogus1->str, "hello"));
+ listelem_free(le, bogus1);
+ listelem_free(le, bogus2);
+ listelem_alloc_free(le);
+
+ TEST_ASSERT(le = listelem_alloc_init(sizeof(struct bogus)));
+ listelem_stats(le);
+ for (i = 0; i < 60; ++i)
+ bogus1 = listelem_malloc(le);
+ listelem_stats(le);
+ listelem_alloc_free(le);
+
+ {
+ struct bogus *bogus[600];
+ int32 bogus_id[600];
+
+ le = listelem_alloc_init(sizeof(struct bogus));
+ for (i = 0; i < 600; ++i)
+ bogus[i] = listelem_malloc_id(le, bogus_id + i);
+ listelem_stats(le);
+ for (i = 0; i < 600; ++i) {
+ TEST_EQUAL(bogus[i], listelem_get_item(le, bogus_id[i]));
+ }
+ for (i = 0; i < 600; ++i)
+ listelem_free(le, bogus[i]);
+ listelem_stats(le);
+ for (i = 0; i < 600; ++i)
+ bogus[i] = listelem_malloc_id(le, bogus_id + i);
+ listelem_stats(le);
+ for (i = 0; i < 600; ++i)
+ TEST_EQUAL(bogus[i], listelem_get_item(le, bogus_id[i]));
+ listelem_alloc_free(le);
+ }
+
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define EPSILON 0.01
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+check_PROGRAMS = test_bitvec
+
+TESTS = test_bitvec
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_bitvec$(EXEEXT)
+TESTS = test_bitvec$(EXEEXT)
+subdir = test/unit/test_bitvec
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_bitvec_SOURCES = test_bitvec.c
+test_bitvec_OBJECTS = test_bitvec.$(OBJEXT)
+test_bitvec_LDADD = $(LDADD)
+test_bitvec_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_bitvec.c
+DIST_SOURCES = test_bitvec.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_bitvec/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_bitvec/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_bitvec$(EXEEXT): $(test_bitvec_OBJECTS) $(test_bitvec_DEPENDENCIES)
+ @rm -f test_bitvec$(EXEEXT)
+ $(LINK) $(test_bitvec_OBJECTS) $(test_bitvec_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bitvec.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#include <stdio.h>
+#include <time.h>
+
+#include "bitvec.h"
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ bitvec_t *bv;
+ int i, j;
+ clock_t c;
+
+ TEST_ASSERT(bv = bitvec_alloc(199));
+ bitvec_set(bv,198);
+ bitvec_set(bv,0);
+ bitvec_set(bv,42);
+ bitvec_set(bv,43);
+ bitvec_set(bv,44);
+ TEST_ASSERT(bitvec_is_set(bv,198));
+ TEST_ASSERT(bitvec_is_set(bv,0));
+ TEST_ASSERT(bitvec_is_set(bv,42));
+ TEST_ASSERT(bitvec_is_set(bv,43));
+ TEST_ASSERT(bitvec_is_set(bv,44));
+ TEST_EQUAL(5, bitvec_count_set(bv, 199));
+ bitvec_clear(bv, 43);
+ TEST_EQUAL(0, bitvec_is_set(bv,43));
+
+ c = clock();
+ for (j = 0; j < 1000000; ++j)
+ bitvec_count_set(bv, 199);
+ c = clock() - c;
+ printf("1000000 * 199 bitvec_count_set in %.2f sec\n",
+ (double)c / CLOCKS_PER_SEC);
+ bitvec_free(bv);
+
+ bv = bitvec_alloc(1314);
+ c = clock();
+ for (j = 0; j < 50000; ++j)
+ for (i = 0; i < 1314; ++i)
+ bitvec_set(bv, i);
+ c = clock() - c;
+ printf("50000 * 1314 bitvec_set in %.2f sec\n",
+ (double)c / CLOCKS_PER_SEC);
+ bitvec_free(bv);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define EPSILON 0.01
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+check_PROGRAMS = chgCase
+
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+
+TESTS = _lcase1.test \
+ _lcase2.test \
+ _lcase3.test \
+ _strcmp1.test \
+ _strcmp2.test \
+ _strcmp3.test \
+ _ucase1.test \
+ _ucase2.test \
+ _ucase3.test
+
+EXTRA_DIST = $(TESTS)
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = chgCase$(EXEEXT)
+subdir = test/unit/test_case
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+chgCase_SOURCES = chgCase.c
+chgCase_OBJECTS = chgCase.$(OBJEXT)
+chgCase_LDADD = $(LDADD)
+chgCase_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = chgCase.c
+DIST_SOURCES = chgCase.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+TESTS = _lcase1.test \
+ _lcase2.test \
+ _lcase3.test \
+ _strcmp1.test \
+ _strcmp2.test \
+ _strcmp3.test \
+ _ucase1.test \
+ _ucase2.test \
+ _ucase3.test
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_case/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_case/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+chgCase$(EXEEXT): $(chgCase_OBJECTS) $(chgCase_DEPENDENCIES)
+ @rm -f chgCase$(EXEEXT)
+ $(LINK) $(chgCase_OBJECTS) $(chgCase_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chgCase.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#!/bin/sh
+./chgCase lcase 5 3
--- /dev/null
+#!/bin/sh
+./chgCase lcase 1 1
--- /dev/null
+#!/bin/sh
+./chgCase lcase
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+./chgCase strcmp_nocase 2 3
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+./chgCase strcmp_nocase 1 1
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+./chgCase strcmp_nocase
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+./chgCase ucase 2 4
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+./chgCase ucase 1 1
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+./chgCase ucase
\ No newline at end of file
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <case.h>
+#include <err.h>
+
+#define MAX_STR_LEN 64
+#define NUM_STRS 6
+
+#define STR0 "this string should NEVER show up"
+#define STR1 ""
+#define STR2 "az3o%\tW@^#\\\n\r[]{}|\() '\""
+#define STR3 "az3o%\tw@^#\\\n\r[]{}|\() '\""
+#define STR4 "AZ3O%\tW@^#\\\n\r[]{}|\() '\""
+#define STR5 "AZ3O%\tw@^#\\\n\r[]{}|\() '\""
+
+
+int
+main(int argc, char **argv)
+{
+ int cmp;
+ char *n1 = NULL;
+ char *n2 = NULL;
+
+ char s1[MAX_STR_LEN];
+ char s2[MAX_STR_LEN];
+
+ char strs[NUM_STRS][MAX_STR_LEN] = { STR0,
+ STR1,
+ STR2,
+ STR3,
+ STR4,
+ STR5
+ };
+
+ if (argc < 2 ||
+ 3 == argc ||
+ argc > 4 ||
+ (strcmp(argv[1], "lcase") &&
+ strcmp(argv[1], "ucase") && strcmp(argv[1], "strcmp_nocase")
+ )) {
+ /*printf("INVALID PARAMETERS to chgCase\n"); */
+ exit(1);
+ }
+
+
+ if (2 == argc) {
+ if (0 == strcmp(argv[1], "ucase")) {
+ ucase(n1);
+ }
+ else if (0 == strcmp(argv[1], "lcase")) {
+ lcase(n1);
+ }
+ else {
+ strcmp_nocase(n1, n2);
+ }
+ /*
+ if we're still alive we obviously didn't segfault
+ */
+ exit(0);
+ }
+
+ if (4 == argc) {
+
+ if (0 >= atoi(argv[2]) ||
+ atoi(argv[2]) >= NUM_STRS ||
+ 0 >= atoi(argv[3]) || atoi(argv[3]) >= NUM_STRS) {
+ E_INFO("INVALID PARAMS TO chkCase\n");
+ exit(1);
+ }
+
+ strcpy(s1, strs[atoi(argv[2])]);
+ strcpy(s2, strs[atoi(argv[3])]);
+
+ if (0 == strcmp(argv[1], "ucase")) {
+ ucase(s1);
+ cmp = strcmp(s1, s2);
+ }
+ else if (0 == strcmp(argv[1], "lcase")) {
+ lcase(s1);
+ cmp = strcmp(s1, s2);
+ }
+ else {
+ cmp = strcmp_nocase(s1, s2);
+ }
+
+ /* E_INFO("Value of cmp %d\n", cmp); */
+ if (0 != cmp) {
+ E_FATAL("test failed\nstr1:|%s|\nstr2:|%s|\n", s1, s2);
+ }
+
+ return (cmp != 0);
+ }
+
+ /*somehow we got here and we shouldn't have */
+
+ exit(1);
+}
--- /dev/null
+check_PROGRAMS = cmdln_parse cmdln_parse_multiple cmdln_parse_r
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+
+
+TESTS = _test_parse_badargs.test \
+ _test_parse_defaults_r.test \
+ _test_parse_defaults.test \
+ _test_parse_goodargs.test \
+ _test_parse_multiple.test
+
+
+EXTRA_DIST = $(TESTS) \
+ _test_parse_badargs.res \
+ _test_parse_defaults.res \
+ _test_parse_defaults_r.res \
+ _test_parse_goodargs.res \
+ _test_parse_multiple.res
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = cmdln_parse$(EXEEXT) cmdln_parse_multiple$(EXEEXT) \
+ cmdln_parse_r$(EXEEXT)
+subdir = test/unit/test_cmdln
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+cmdln_parse_SOURCES = cmdln_parse.c
+cmdln_parse_OBJECTS = cmdln_parse.$(OBJEXT)
+cmdln_parse_LDADD = $(LDADD)
+cmdln_parse_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+cmdln_parse_multiple_SOURCES = cmdln_parse_multiple.c
+cmdln_parse_multiple_OBJECTS = cmdln_parse_multiple.$(OBJEXT)
+cmdln_parse_multiple_LDADD = $(LDADD)
+cmdln_parse_multiple_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+cmdln_parse_r_SOURCES = cmdln_parse_r.c
+cmdln_parse_r_OBJECTS = cmdln_parse_r.$(OBJEXT)
+cmdln_parse_r_LDADD = $(LDADD)
+cmdln_parse_r_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = cmdln_parse.c cmdln_parse_multiple.c cmdln_parse_r.c
+DIST_SOURCES = cmdln_parse.c cmdln_parse_multiple.c cmdln_parse_r.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+TESTS = _test_parse_badargs.test \
+ _test_parse_defaults_r.test \
+ _test_parse_defaults.test \
+ _test_parse_goodargs.test \
+ _test_parse_multiple.test
+
+EXTRA_DIST = $(TESTS) \
+ _test_parse_badargs.res \
+ _test_parse_defaults.res \
+ _test_parse_defaults_r.res \
+ _test_parse_goodargs.res \
+ _test_parse_multiple.res
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_cmdln/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_cmdln/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+cmdln_parse$(EXEEXT): $(cmdln_parse_OBJECTS) $(cmdln_parse_DEPENDENCIES)
+ @rm -f cmdln_parse$(EXEEXT)
+ $(LINK) $(cmdln_parse_OBJECTS) $(cmdln_parse_LDADD) $(LIBS)
+cmdln_parse_multiple$(EXEEXT): $(cmdln_parse_multiple_OBJECTS) $(cmdln_parse_multiple_DEPENDENCIES)
+ @rm -f cmdln_parse_multiple$(EXEEXT)
+ $(LINK) $(cmdln_parse_multiple_OBJECTS) $(cmdln_parse_multiple_LDADD) $(LIBS)
+cmdln_parse_r$(EXEEXT): $(cmdln_parse_r_OBJECTS) $(cmdln_parse_r_DEPENDENCIES)
+ @rm -f cmdln_parse_r$(EXEEXT)
+ $(LINK) $(cmdln_parse_r_OBJECTS) $(cmdln_parse_r_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmdln_parse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmdln_parse_multiple.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmdln_parse_r.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+ERROR: Bad argument value for -a: foobar
+ERROR: Failed to parse arguments list
+ERROR: Failed to parse arguments list, forced exit
+ERROR: Unknown argument name '-noarg'
+ERROR: Failed to parse arguments list
+ERROR: Failed to parse arguments list, forced exit
+ERROR: Argument value for '-c' missing
+ERROR: Failed to parse arguments list
+ERROR: Failed to parse arguments list, forced exit
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+testname=`basename $0 .test`
+
+./cmdln_parse -a foobar > $testname.out 2>&1 && exit 1
+./cmdln_parse -a 42 -noarg >> $testname.out 2>&1 && exit 1
+./cmdln_parse -a 42 -c >> $testname.out 2>&1 && exit 1
+
+sed -ne 's,^ERROR:.*line [0-9]*:,ERROR:,p' < $testname.out > $testname.tmp.out \
+ && mv $testname.tmp.out $testname.out
+compare_table defaults $testname.out $tests/unit/test_cmdln/$testname.res 100
+rm -f $testname.out
--- /dev/null
+-a 42 This is the first argument.
+-b This is the second argument.
+-c no This is the third argument.
+-d 1e-50 This is the fourth argument.
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+testname=`basename $0 .test`
+./cmdln_parse > $testname.out 2>&1 || true
+sed -ne 's,^-,-,p' < $testname.out > $testname.tmp.out \
+ && mv $testname.tmp.out $testname.out
+compare_table defaults $testname.out $tests/unit/test_cmdln/$testname.res 100
+rm -f $testname.out
--- /dev/null
+-a 42 42
+-b
+-c no no
+-d 1e-50 1.000000e-50
+-a 42 42
+-b foobie
+-c no no
+-d 1e-50 1.000000e-50
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+testname=`basename $0 .test`
+./cmdln_parse_r -a 42 > $testname.out 2>&1
+sed -ne 's,^-,-,p' < $testname.out > $testname.tmp.out \
+ && mv $testname.tmp.out $testname.out
+compare_table defaults $testname.out $tests/unit/test_cmdln/$testname.res 100
+rm -f $testname.out
--- /dev/null
+36 hello 1 4.500000
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+testname=`basename $0 .test`
+./cmdln_parse -a 36 -b hello -c yes -d 4.5 > $testname.out 2>/dev/null
+compare_table defaults $testname.out $tests/unit/test_cmdln/$testname.res
+rm -f $testname.out
--- /dev/null
+42 (null) 0 4.500000
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+testname=`basename $0 .test`
+./cmdln_parse_multiple -a 42 -d 4.5 > $testname.out 2>/dev/null
+compare_table defaults $testname.out $tests/unit/test_cmdln/$testname.res
+rm -f $testname.out
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "cmd_ln.h"
+#include "ckd_alloc.h"
+
+const arg_t defs[] = {
+ { "-a", ARG_INT32, "42", "This is the first argument." },
+ { "-b", ARG_STRING, NULL, "This is the second argument." },
+ { "-c", ARG_BOOLEAN, "no", "This is the third argument." },
+ { "-d", ARG_FLOAT64, "1e-50", "This is the fourth argument." },
+ { NULL, 0, NULL, NULL }
+};
+
+int
+main(int argc, char *argv[])
+{
+ cmd_ln_parse(defs, argc, argv, TRUE);
+ printf("%d %s %d %f\n",
+ cmd_ln_int32("-a"),
+ cmd_ln_str("-b") ? cmd_ln_str("-b") : "(null)",
+ cmd_ln_boolean("-c"),
+ cmd_ln_float64("-d"));
+
+ cmd_ln_free();
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "cmd_ln.h"
+#include "ckd_alloc.h"
+
+const arg_t defs[] = {
+ { "-a", ARG_INT32, "42", "This is the first argument." },
+ { "-b", ARG_STRING, NULL, "This is the second argument." },
+ { "-c", ARG_BOOLEAN, "no", "This is the third argument." },
+ { "-d", ARG_FLOAT64, "1e-50", "This is the fourth argument." },
+ { NULL, 0, NULL, NULL }
+};
+
+static char *orig_argv[] = {
+ "foobie",
+ "-a", "69"
+};
+static int orig_argc = sizeof(orig_argv) / sizeof(orig_argv[0]);
+
+int
+main(int argc, char *argv[])
+{
+ cmd_ln_parse(defs, orig_argc, orig_argv, TRUE);
+ cmd_ln_parse(defs, argc, argv, FALSE);
+ printf("%d %s %d %f\n",
+ cmd_ln_int32("-a"),
+ cmd_ln_str("-b") ? cmd_ln_str("-b") : "(null)",
+ cmd_ln_boolean("-c"),
+ cmd_ln_float64("-d"));
+ cmd_ln_free();
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "cmd_ln.h"
+#include "ckd_alloc.h"
+
+const arg_t defs[] = {
+ { "-a", ARG_INT32, "42", "This is the first argument." },
+ { "-b", ARG_STRING, NULL, "This is the second argument." },
+ { "-c", ARG_BOOLEAN, "no", "This is the third argument." },
+ { "-d", ARG_FLOAT64, "1e-50", "This is the fourth argument." },
+ { NULL, 0, NULL, NULL }
+};
+
+int
+main(int argc, char *argv[])
+{
+ cmd_ln_t *config;
+
+ config = cmd_ln_parse_r(NULL, defs, argc, argv, TRUE);
+ if (config == NULL)
+ return 1;
+ printf("%d %s %d %f\n",
+ cmd_ln_int32_r(config, "-a"),
+ cmd_ln_str_r(config, "-b") ? cmd_ln_str_r(config, "-b") : "(null)",
+ cmd_ln_boolean_r(config, "-c"),
+ cmd_ln_float64_r(config, "-d"));
+ cmd_ln_free_r(config);
+
+ config = cmd_ln_init(NULL, NULL, FALSE,
+ "-b", "foobie", NULL);
+ if (config == NULL)
+ return 1;
+ cmd_ln_free_r(config);
+
+ config = cmd_ln_init(NULL, defs, TRUE,
+ "-b", "foobie", NULL);
+ if (config == NULL)
+ return 1;
+ printf("%d %s %d %f\n",
+ cmd_ln_int32_r(config, "-a"),
+ cmd_ln_str_r(config, "-b") ? cmd_ln_str_r(config, "-b") : "(null)",
+ cmd_ln_boolean_r(config, "-c"),
+ cmd_ln_float64_r(config, "-d"));
+ cmd_ln_free_r(config);
+
+ config = cmd_ln_init(NULL, NULL, FALSE,
+ "-b", "foobie", NULL);
+ if (config == NULL)
+ return 1;
+ printf("%s\n",
+ cmd_ln_str_r(config, "-b") ? cmd_ln_str_r(config, "-b") : "(null)");
+ cmd_ln_set_str_r(config, "-b", "blatz");
+ printf("%s\n",
+ cmd_ln_str_r(config, "-b") ? cmd_ln_str_r(config, "-b") : "(null)");
+ cmd_ln_free_r(config);
+
+ return 0;
+}
--- /dev/null
+check_PROGRAMS = test_fe test_pitch
+
+TESTS = test_fe test_pitch
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_fe$(EXEEXT) test_pitch$(EXEEXT)
+TESTS = test_fe$(EXEEXT) test_pitch$(EXEEXT)
+subdir = test/unit/test_fe
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_fe_SOURCES = test_fe.c
+test_fe_OBJECTS = test_fe.$(OBJEXT)
+test_fe_LDADD = $(LDADD)
+test_fe_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_pitch_SOURCES = test_pitch.c
+test_pitch_OBJECTS = test_pitch.$(OBJEXT)
+test_pitch_LDADD = $(LDADD)
+test_pitch_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_fe.c test_pitch.c
+DIST_SOURCES = test_fe.c test_pitch.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+noinst_HEADERS = test_macros.h
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_fe/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_fe/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_fe$(EXEEXT): $(test_fe_OBJECTS) $(test_fe_DEPENDENCIES)
+ @rm -f test_fe$(EXEEXT)
+ $(LINK) $(test_fe_OBJECTS) $(test_fe_LDADD) $(LIBS)
+test_pitch$(EXEEXT): $(test_pitch_OBJECTS) $(test_pitch_DEPENDENCIES)
+ @rm -f test_pitch$(EXEEXT)
+ $(LINK) $(test_pitch_OBJECTS) $(test_pitch_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pitch.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+
+#include "fe.h"
+#include "cmd_ln.h"
+#include "ckd_alloc.h"
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ static const arg_t fe_args[] = {
+ waveform_to_cepstral_command_line_macro(),
+ { NULL, 0, NULL, NULL }
+ };
+ FILE *raw;
+ cmd_ln_t *config;
+ fe_t *fe;
+ int16 buf[1024];
+ int16 const *inptr;
+ int32 frame_shift, frame_size;
+ mfcc_t **cepbuf1, **cepbuf2, **cptr;
+ int32 nfr, i;
+ size_t nsamp;
+
+ TEST_ASSERT(config = cmd_ln_parse_r(NULL, fe_args, argc, argv, FALSE));
+ TEST_ASSERT(fe = fe_init_auto_r(config));
+
+ TEST_EQUAL(fe_get_output_size(fe), DEFAULT_NUM_CEPSTRA);
+
+ fe_get_input_size(fe, &frame_shift, &frame_size);
+ TEST_EQUAL(frame_shift, DEFAULT_FRAME_SHIFT);
+ TEST_EQUAL(frame_size, (int)(DEFAULT_WINDOW_LENGTH*DEFAULT_SAMPLING_RATE));
+
+ TEST_ASSERT(raw = fopen(TESTDATADIR "/chan3.raw", "rb"));
+
+ TEST_EQUAL(0, fe_start_utt(fe));
+ TEST_EQUAL(1024, fread(buf, sizeof(int16), 1024, raw));
+
+ nsamp = 1024;
+ TEST_ASSERT(fe_process_frames(fe, NULL, &nsamp, NULL, &nfr) >= 0);
+ TEST_EQUAL(1024, nsamp);
+ TEST_EQUAL(4, nfr);
+
+ cepbuf1 = ckd_calloc_2d(5, DEFAULT_NUM_CEPSTRA, sizeof(**cepbuf1));
+ inptr = &buf[0];
+ nfr = 1;
+
+ printf("frame_size %d frame_shift %d\n", frame_size, frame_shift);
+ /* Process the first frame. */
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, &cepbuf1[0], &nfr) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, nfr);
+ TEST_EQUAL(nfr, 1);
+
+ /* Note that this next one won't actually consume any frames
+ * of input, because it already got sufficient overflow
+ * samples last time around. This is implementation-dependent
+ * so we shouldn't actually test for it. */
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, &cepbuf1[1], &nfr) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, nfr);
+ TEST_EQUAL(nfr, 1);
+
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, &cepbuf1[2], &nfr) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, nfr);
+ TEST_EQUAL(nfr, 1);
+
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, &cepbuf1[3], &nfr) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, nfr);
+ TEST_EQUAL(nfr, 1);
+
+ TEST_ASSERT(fe_end_utt(fe, cepbuf1[4], &nfr) >= 0);
+ printf("nfr %d\n", nfr);
+ TEST_EQUAL(nfr, 1);
+
+ /* What we *should* test is that the output we get by
+ * processing one frame at a time is exactly the same as what
+ * we get from doing them all at once. So let's do that */
+ cepbuf2 = ckd_calloc_2d(5, DEFAULT_NUM_CEPSTRA, sizeof(**cepbuf2));
+ inptr = &buf[0];
+ nfr = 5;
+ nsamp = 1024;
+ TEST_EQUAL(0, fe_start_utt(fe));
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, cepbuf2, &nfr) >= 0);
+ printf("nfr %d\n", nfr);
+ TEST_EQUAL(nfr, 4);
+ nfr = 1;
+ TEST_ASSERT(fe_end_utt(fe, cepbuf2[4], &nfr) >= 0);
+ printf("nfr %d\n", nfr);
+ TEST_EQUAL(nfr, 1);
+
+ for (i = 0; i < 5; ++i) {
+ int j;
+ printf("%d: ", i);
+ for (j = 0; j < DEFAULT_NUM_CEPSTRA; ++j) {
+ printf("%.2f,%.2f ",
+ MFCC2FLOAT(cepbuf1[i][j]),
+ MFCC2FLOAT(cepbuf2[i][j]));
+ TEST_EQUAL_FLOAT(cepbuf1[i][j], cepbuf2[i][j]);
+ }
+ printf("\n");
+ }
+
+ /* Now, also test to make sure that even if we feed data in
+ * little tiny bits we can still make things work. */
+ memset(cepbuf2[0], 0, 5 * DEFAULT_NUM_CEPSTRA * sizeof(**cepbuf2));
+ inptr = &buf[0];
+ cptr = &cepbuf2[0];
+ nfr = 5;
+ i = 5;
+ nsamp = 256;
+ TEST_EQUAL(0, fe_start_utt(fe));
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, cptr, &i) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, i);
+ cptr += i;
+ nfr -= i;
+ i = nfr;
+ nsamp = 256;
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, cptr, &i) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, i);
+ cptr += i;
+ nfr -= i;
+ i = nfr;
+ nsamp = 256;
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, cptr, &i) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, i);
+ cptr += i;
+ nfr -= i;
+ i = nfr;
+ nsamp = 256;
+ TEST_ASSERT(fe_process_frames(fe, &inptr, &nsamp, cptr, &i) >= 0);
+ printf("inptr %d nsamp %d nfr %d\n", inptr - buf, nsamp, i);
+ cptr += i;
+ nfr -= i;
+ TEST_ASSERT(fe_end_utt(fe, *cptr, &nfr) >= 0);
+ printf("nfr %d\n", nfr);
+ TEST_EQUAL(nfr, 1);
+
+ for (i = 0; i < 5; ++i) {
+ int j;
+ printf("%d: ", i);
+ for (j = 0; j < DEFAULT_NUM_CEPSTRA; ++j) {
+ printf("%.2f,%.2f ",
+ MFCC2FLOAT(cepbuf1[i][j]),
+ MFCC2FLOAT(cepbuf2[i][j]));
+ TEST_EQUAL_FLOAT(cepbuf1[i][j], cepbuf2[i][j]);
+ }
+ printf("\n");
+ }
+
+ /* And now, finally, test fe_process_utt() */
+ inptr = &buf[0];
+ i = 0;
+ TEST_EQUAL(0, fe_start_utt(fe));
+ TEST_ASSERT(fe_process_utt(fe, inptr, 256, &cptr, &nfr) >= 0);
+ printf("i %d nfr %d\n", i, nfr);
+ if (nfr)
+ memcpy(cepbuf2[i], cptr[0], nfr * DEFAULT_NUM_CEPSTRA * sizeof(**cptr));
+ ckd_free_2d(cptr);
+ i += nfr;
+ inptr += 256;
+ TEST_ASSERT(fe_process_utt(fe, inptr, 256, &cptr, &nfr) >= 0);
+ printf("i %d nfr %d\n", i, nfr);
+ if (nfr)
+ memcpy(cepbuf2[i], cptr[0], nfr * DEFAULT_NUM_CEPSTRA * sizeof(**cptr));
+ ckd_free_2d(cptr);
+ i += nfr;
+ inptr += 256;
+ TEST_ASSERT(fe_process_utt(fe, inptr, 256, &cptr, &nfr) >= 0);
+ printf("i %d nfr %d\n", i, nfr);
+ if (nfr)
+ memcpy(cepbuf2[i], cptr[0], nfr * DEFAULT_NUM_CEPSTRA * sizeof(**cptr));
+ ckd_free_2d(cptr);
+ i += nfr;
+ inptr += 256;
+ TEST_ASSERT(fe_process_utt(fe, inptr, 256, &cptr, &nfr) >= 0);
+ printf("i %d nfr %d\n", i, nfr);
+ if (nfr)
+ memcpy(cepbuf2[i], cptr[0], nfr * DEFAULT_NUM_CEPSTRA * sizeof(**cptr));
+ ckd_free_2d(cptr);
+ i += nfr;
+ inptr += 256;
+ TEST_ASSERT(fe_end_utt(fe, cepbuf2[i], &nfr) >= 0);
+ printf("i %d nfr %d\n", i, nfr);
+ TEST_EQUAL(nfr, 1);
+
+ for (i = 0; i < 5; ++i) {
+ int j;
+ printf("%d: ", i);
+ for (j = 0; j < DEFAULT_NUM_CEPSTRA; ++j) {
+ printf("%.2f,%.2f ",
+ MFCC2FLOAT(cepbuf1[i][j]),
+ MFCC2FLOAT(cepbuf2[i][j]));
+ TEST_EQUAL_FLOAT(cepbuf1[i][j], cepbuf2[i][j]);
+ }
+ printf("\n");
+ }
+
+ ckd_free_2d(cepbuf1);
+ ckd_free_2d(cepbuf2);
+ fclose(raw);
+ fe_free(fe);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define EPSILON 0.01
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+#include <stdio.h>
+
+#include "yin.h"
+#include "ckd_alloc.h"
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ /* This is 11025Hz data (yikes) */
+ static const int frame_shift = 110, frame_size = 265;
+ FILE *raw;
+ yin_t *pe;
+ int16 *buf;
+ size_t nsamp, start;
+ uint16 period, bestdiff;
+ int nfr;
+
+ /* To make life easier, read the whole thing. */
+ TEST_ASSERT(raw = fopen(TESTDATADIR "/chan3.raw", "rb"));
+ fseek(raw, 0, SEEK_END);
+ nsamp = ftell(raw) / 2;
+ buf = ckd_calloc(nsamp, 2);
+ fseek(raw, 0, SEEK_SET);
+ TEST_EQUAL(nsamp, fread(buf, 2, nsamp, raw));
+ fclose(raw);
+
+ TEST_ASSERT(pe = yin_init(frame_size, 0.1, 0.2, 2));
+ yin_start(pe);
+ nfr = 0;
+ for (start = 0; start + frame_size < nsamp; start += frame_shift) {
+ yin_write(pe, buf + start);
+ if (yin_read(pe, &period, &bestdiff)) {
+ if (bestdiff < 0.2 * 32768)
+ printf("%d ", period ? 11025/period : 0);
+ else
+ printf("0 ");
+ ++nfr;
+ }
+ }
+ yin_end(pe);
+ while (yin_read(pe, &period, &bestdiff)) {
+ if (bestdiff < 0.2 * 32768)
+ printf("%d ", period ? 11025/period : 0);
+ else
+ printf("0 ");
+ ++nfr;
+ }
+ printf("\n");
+ yin_free(pe);
+ ckd_free(buf);
+
+ return 0;
+}
--- /dev/null
+check_PROGRAMS = test_feat test_feat_live test_feat_fe test_subvq
+noinst_HEADERS = test_macros.h
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+TESTS = _test_feat.test test_feat_live test_feat_fe test_subvq
+EXTRA_DIST = _test_feat.res _test_feat.test
+CLEANFILES = *.out
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_feat$(EXEEXT) test_feat_live$(EXEEXT) \
+ test_feat_fe$(EXEEXT) test_subvq$(EXEEXT)
+TESTS = _test_feat.test test_feat_live$(EXEEXT) test_feat_fe$(EXEEXT) \
+ test_subvq$(EXEEXT)
+subdir = test/unit/test_feat
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_feat_SOURCES = test_feat.c
+test_feat_OBJECTS = test_feat.$(OBJEXT)
+test_feat_LDADD = $(LDADD)
+test_feat_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_feat_fe_SOURCES = test_feat_fe.c
+test_feat_fe_OBJECTS = test_feat_fe.$(OBJEXT)
+test_feat_fe_LDADD = $(LDADD)
+test_feat_fe_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_feat_live_SOURCES = test_feat_live.c
+test_feat_live_OBJECTS = test_feat_live.$(OBJEXT)
+test_feat_live_LDADD = $(LDADD)
+test_feat_live_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_subvq_SOURCES = test_subvq.c
+test_subvq_OBJECTS = test_subvq.$(OBJEXT)
+test_subvq_LDADD = $(LDADD)
+test_subvq_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_feat.c test_feat_fe.c test_feat_live.c test_subvq.c
+DIST_SOURCES = test_feat.c test_feat_fe.c test_feat_live.c \
+ test_subvq.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_HEADERS = test_macros.h
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+EXTRA_DIST = _test_feat.res _test_feat.test
+CLEANFILES = *.out
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_feat/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_feat/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_feat$(EXEEXT): $(test_feat_OBJECTS) $(test_feat_DEPENDENCIES)
+ @rm -f test_feat$(EXEEXT)
+ $(LINK) $(test_feat_OBJECTS) $(test_feat_LDADD) $(LIBS)
+test_feat_fe$(EXEEXT): $(test_feat_fe_OBJECTS) $(test_feat_fe_DEPENDENCIES)
+ @rm -f test_feat_fe$(EXEEXT)
+ $(LINK) $(test_feat_fe_OBJECTS) $(test_feat_fe_LDADD) $(LIBS)
+test_feat_live$(EXEEXT): $(test_feat_live_OBJECTS) $(test_feat_live_DEPENDENCIES)
+ @rm -f test_feat_live$(EXEEXT)
+ $(LINK) $(test_feat_live_OBJECTS) $(test_feat_live_LDADD) $(LIBS)
+test_subvq$(EXEEXT): $(test_subvq_OBJECTS) $(test_subvq_DEPENDENCIES)
+ @rm -f test_subvq$(EXEEXT)
+ $(LINK) $(test_subvq_OBJECTS) $(test_subvq_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_feat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_feat_fe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_feat_live.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_subvq.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+15.114 -1.424 -0.953 0.186 -0.656 -0.226 -0.105 -0.412 -0.024 -0.091 -0.124 -0.158 -0.197
+14.729 -1.313 -0.892 0.140 -0.676 -0.089 -0.313 -0.422 -0.058 -0.101 -0.100 -0.128 -0.123
+14.502 -1.351 -1.028 -0.189 -0.718 -0.139 -0.121 -0.365 -0.139 -0.154 0.041 0.009 -0.073
+14.557 -1.676 -0.864 0.118 -0.445 -0.168 -0.069 -0.503 -0.013 0.007 -0.056 -0.075 -0.237
+14.665 -1.498 -0.582 0.209 -0.487 -0.247 -0.142 -0.439 0.059 -0.058 -0.265 -0.109 -0.196
+15.025 -1.199 -0.607 0.235 -0.499 -0.080 -0.062 -0.554 -0.209 -0.124 -0.445 -0.352 -0.400
+15.114 -1.424 -0.953 0.186 -0.656 -0.226 -0.105 -0.412 -0.024 -0.091 -0.124 -0.158 -0.197 15.114 -1.424 -0.953 0.186 -0.656 -0.226 -0.105 -0.412 -0.024 -0.091 -0.124 -0.158 -0.197 14.729 -1.313 -0.892 0.140 -0.676 -0.089 -0.313 -0.422 -0.058 -0.101 -0.100 -0.128 -0.123
+15.114 -1.424 -0.953 0.186 -0.656 -0.226 -0.105 -0.412 -0.024 -0.091 -0.124 -0.158 -0.197 14.729 -1.313 -0.892 0.140 -0.676 -0.089 -0.313 -0.422 -0.058 -0.101 -0.100 -0.128 -0.123 14.502 -1.351 -1.028 -0.189 -0.718 -0.139 -0.121 -0.365 -0.139 -0.154 0.041 0.009 -0.073
+14.729 -1.313 -0.892 0.140 -0.676 -0.089 -0.313 -0.422 -0.058 -0.101 -0.100 -0.128 -0.123 14.502 -1.351 -1.028 -0.189 -0.718 -0.139 -0.121 -0.365 -0.139 -0.154 0.041 0.009 -0.073 14.557 -1.676 -0.864 0.118 -0.445 -0.168 -0.069 -0.503 -0.013 0.007 -0.056 -0.075 -0.237
+14.502 -1.351 -1.028 -0.189 -0.718 -0.139 -0.121 -0.365 -0.139 -0.154 0.041 0.009 -0.073 14.557 -1.676 -0.864 0.118 -0.445 -0.168 -0.069 -0.503 -0.013 0.007 -0.056 -0.075 -0.237 14.665 -1.498 -0.582 0.209 -0.487 -0.247 -0.142 -0.439 0.059 -0.058 -0.265 -0.109 -0.196
+14.557 -1.676 -0.864 0.118 -0.445 -0.168 -0.069 -0.503 -0.013 0.007 -0.056 -0.075 -0.237 14.665 -1.498 -0.582 0.209 -0.487 -0.247 -0.142 -0.439 0.059 -0.058 -0.265 -0.109 -0.196 15.025 -1.199 -0.607 0.235 -0.499 -0.080 -0.062 -0.554 -0.209 -0.124 -0.445 -0.352 -0.400
+14.665 -1.498 -0.582 0.209 -0.487 -0.247 -0.142 -0.439 0.059 -0.058 -0.265 -0.109 -0.196 15.025 -1.199 -0.607 0.235 -0.499 -0.080 -0.062 -0.554 -0.209 -0.124 -0.445 -0.352 -0.400 15.025 -1.199 -0.607 0.235 -0.499 -0.080 -0.062 -0.554 -0.209 -0.124 -0.445 -0.352 -0.400
+15.114 -1.424 -0.953 0.186 -0.656 -0.226 -0.105 -0.412 -0.024 -0.091 -0.124 -0.158 -0.197 -0.612 0.073 -0.075 -0.375 -0.062 0.087 -0.016 0.047 -0.115 -0.063 0.165 0.167 0.124 -0.172 -0.363 0.028 -0.022 0.231 -0.079 0.244 -0.081 0.045 0.108 0.044 0.053 -0.114
+14.729 -1.313 -0.892 0.140 -0.676 -0.089 -0.313 -0.422 -0.058 -0.101 -0.100 -0.128 -0.123 -0.557 -0.252 0.089 -0.068 0.211 0.058 0.036 -0.091 0.011 0.098 0.068 0.083 -0.040 0.163 -0.147 0.446 0.398 0.231 -0.108 -0.021 -0.074 0.198 0.096 -0.306 -0.118 -0.123
+14.502 -1.351 -1.028 -0.189 -0.718 -0.139 -0.121 -0.365 -0.139 -0.154 0.041 0.009 -0.073 -0.449 -0.074 0.371 0.023 0.169 -0.021 -0.037 -0.027 0.083 0.033 -0.141 0.049 0.001 0.853 0.366 0.196 0.163 -0.034 -0.049 0.215 -0.041 -0.162 -0.121 -0.413 -0.307 -0.237
+14.557 -1.676 -0.864 0.118 -0.445 -0.168 -0.069 -0.503 -0.013 0.007 -0.056 -0.075 -0.237 0.296 0.114 0.285 0.095 0.177 0.009 0.251 -0.132 -0.151 -0.023 -0.345 -0.224 -0.277 0.972 0.226 0.050 0.401 0.050 0.080 0.096 -0.162 -0.153 -0.003 -0.345 -0.410 -0.328
+14.665 -1.498 -0.582 0.209 -0.487 -0.247 -0.142 -0.439 0.059 -0.058 -0.265 -0.109 -0.196 0.523 0.152 0.421 0.424 0.219 0.059 0.059 -0.189 -0.070 0.030 -0.486 -0.361 -0.327 0.172 0.363 -0.028 0.022 -0.231 0.079 -0.244 0.081 -0.045 -0.108 -0.044 -0.053 0.114
+15.025 -1.199 -0.607 0.235 -0.499 -0.080 -0.062 -0.554 -0.209 -0.124 -0.445 -0.352 -0.400 0.468 0.477 0.257 0.117 -0.054 0.088 0.007 -0.051 -0.196 -0.131 -0.389 -0.277 -0.163 -0.163 0.147 -0.446 -0.398 -0.231 0.108 0.021 0.074 -0.198 -0.096 0.306 0.118 0.123
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./test_feat > _test_feat.out
+compare_table feat _test_feat.out $tests/unit/test_feat/_test_feat.res
+rm -f _test_feat.out
--- /dev/null
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "feat.h"
+#include "ckd_alloc.h"
+
+const mfcc_t data[6][13] = {
+ { FLOAT2MFCC(15.114), FLOAT2MFCC(-1.424), FLOAT2MFCC(-0.953),
+ FLOAT2MFCC(0.186), FLOAT2MFCC(-0.656), FLOAT2MFCC(-0.226),
+ FLOAT2MFCC(-0.105), FLOAT2MFCC(-0.412), FLOAT2MFCC(-0.024),
+ FLOAT2MFCC(-0.091), FLOAT2MFCC(-0.124), FLOAT2MFCC(-0.158), FLOAT2MFCC(-0.197)},
+ { FLOAT2MFCC(14.729), FLOAT2MFCC(-1.313), FLOAT2MFCC(-0.892),
+ FLOAT2MFCC(0.140), FLOAT2MFCC(-0.676), FLOAT2MFCC(-0.089),
+ FLOAT2MFCC(-0.313), FLOAT2MFCC(-0.422), FLOAT2MFCC(-0.058),
+ FLOAT2MFCC(-0.101), FLOAT2MFCC(-0.100), FLOAT2MFCC(-0.128), FLOAT2MFCC(-0.123)},
+ { FLOAT2MFCC(14.502), FLOAT2MFCC(-1.351), FLOAT2MFCC(-1.028),
+ FLOAT2MFCC(-0.189), FLOAT2MFCC(-0.718), FLOAT2MFCC(-0.139),
+ FLOAT2MFCC(-0.121), FLOAT2MFCC(-0.365), FLOAT2MFCC(-0.139),
+ FLOAT2MFCC(-0.154), FLOAT2MFCC(0.041), FLOAT2MFCC(0.009), FLOAT2MFCC(-0.073)},
+ { FLOAT2MFCC(14.557), FLOAT2MFCC(-1.676), FLOAT2MFCC(-0.864),
+ FLOAT2MFCC(0.118), FLOAT2MFCC(-0.445), FLOAT2MFCC(-0.168),
+ FLOAT2MFCC(-0.069), FLOAT2MFCC(-0.503), FLOAT2MFCC(-0.013),
+ FLOAT2MFCC(0.007), FLOAT2MFCC(-0.056), FLOAT2MFCC(-0.075), FLOAT2MFCC(-0.237)},
+ { FLOAT2MFCC(14.665), FLOAT2MFCC(-1.498), FLOAT2MFCC(-0.582),
+ FLOAT2MFCC(0.209), FLOAT2MFCC(-0.487), FLOAT2MFCC(-0.247),
+ FLOAT2MFCC(-0.142), FLOAT2MFCC(-0.439), FLOAT2MFCC(0.059),
+ FLOAT2MFCC(-0.058), FLOAT2MFCC(-0.265), FLOAT2MFCC(-0.109), FLOAT2MFCC(-0.196)},
+ { FLOAT2MFCC(15.025), FLOAT2MFCC(-1.199), FLOAT2MFCC(-0.607),
+ FLOAT2MFCC(0.235), FLOAT2MFCC(-0.499), FLOAT2MFCC(-0.080),
+ FLOAT2MFCC(-0.062), FLOAT2MFCC(-0.554), FLOAT2MFCC(-0.209),
+ FLOAT2MFCC(-0.124), FLOAT2MFCC(-0.445), FLOAT2MFCC(-0.352), FLOAT2MFCC(-0.400)},
+};
+
+int
+main(int argc, char *argv[])
+{
+ feat_t *fcb;
+ mfcc_t **in_feats, ***out_feats;
+ int32 i, j, ncep;
+
+ /* Test "raw" features without concatenation */
+ fcb = feat_init("13", CMN_NONE, 0, AGC_NONE, 1, 13);
+
+ in_feats = (mfcc_t **)ckd_alloc_2d_ptr(6, 13, data, sizeof(mfcc_t));
+ out_feats = (mfcc_t ***)ckd_calloc_3d(6, 1, 13, sizeof(mfcc_t));
+ ncep = 6;
+ feat_s2mfc2feat_live(fcb, in_feats, &ncep, 1, 1, out_feats);
+
+ for (i = 0; i < 6; ++i) {
+ for (j = 0; j < 13; ++j) {
+ printf("%.3f ", MFCC2FLOAT(out_feats[i][0][j]));
+ }
+ printf("\n");
+ }
+ feat_free(fcb);
+ ckd_free(in_feats);
+ ckd_free_3d(out_feats);
+
+ /* Test "raw" features with concatenation */
+ fcb = feat_init("13:1", CMN_NONE, 0, AGC_NONE, 1, 13);
+
+ in_feats = (mfcc_t **)ckd_alloc_2d_ptr(6, 13, data, sizeof(mfcc_t));
+ out_feats = (mfcc_t ***)ckd_calloc_3d(8, 1, 39, sizeof(mfcc_t));
+ ncep = 6;
+ feat_s2mfc2feat_live(fcb, in_feats, &ncep, 1, 1, out_feats);
+
+ for (i = 0; i < 6; ++i) {
+ for (j = 0; j < 39; ++j) {
+ printf("%.3f ", MFCC2FLOAT(out_feats[i][0][j]));
+ }
+ printf("\n");
+ }
+ feat_free(fcb);
+
+ /* Test 1s_c_d_dd features */
+ fcb = feat_init("1s_c_d_dd", CMN_NONE, 0, AGC_NONE, 1, 13);
+ ncep = 6;
+ feat_s2mfc2feat_live(fcb, in_feats, &ncep, 1, 1, out_feats);
+
+ for (i = 0; i < 6; ++i) {
+ for (j = 0; j < 39; ++j) {
+ printf("%.3f ", MFCC2FLOAT(out_feats[i][0][j]));
+ }
+ printf("\n");
+ }
+
+ /* Verify that the deltas are correct. */
+ for (i = 2; i < 4; ++i) {
+ for (j = 0; j < 13; ++j) {
+ if (fabs(MFCC2FLOAT(out_feats[i][0][13+j] -
+ (out_feats[i+2][0][j]
+ - out_feats[i-2][0][j]))) > 0.01) {
+ printf("Delta mismatch in [%d][%d]\n", i, j);
+ return 1;
+ }
+ }
+ }
+ feat_free(fcb);
+ ckd_free(in_feats);
+ ckd_free_3d(out_feats);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <errno.h>
+
+#include "fe.h"
+#include "feat.h"
+#include "cmd_ln.h"
+#include "ckd_alloc.h"
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ static const arg_t fe_args[] = {
+ waveform_to_cepstral_command_line_macro(),
+ { NULL, 0, NULL, NULL }
+ };
+ FILE *raw;
+ cmd_ln_t *config;
+ fe_t *fe;
+ feat_t *fcb;
+ int16 buf[2048];
+ mfcc_t **cepbuf, **cptr;
+ mfcc_t ***featbuf1, ***featbuf2, ***fptr;
+ size_t nsamp;
+ int32 total_frames, ncep, nfr, i;
+
+ if ((raw = fopen(TESTDATADIR "/chan3.raw", "rb")) == NULL) {
+ perror(TESTDATADIR "/chan3.raw");
+ return 1;
+ }
+
+ config = cmd_ln_parse_r(NULL, fe_args, argc, argv, FALSE);
+ fe = fe_init_auto_r(config);
+ fcb = feat_init("1s_c_d_dd", CMN_NONE, FALSE, AGC_NONE,
+ TRUE, fe_get_output_size(fe));
+
+ /* Determine how much data and how many MFCC frames we need. */
+ fseek(raw, 0, SEEK_END);
+ nsamp = ftell(raw) / sizeof(int16);
+ fe_process_frames(fe, NULL, &nsamp, NULL, &total_frames);
+ printf("%d samples, %d + 1 frames\n", nsamp, total_frames);
+ total_frames++; /* For the possible fe_end_utt() frame */
+ cepbuf = ckd_calloc_2d(total_frames + 1, fe_get_output_size(fe), sizeof(**cepbuf));
+ fseek(raw, 0, SEEK_SET);
+
+ /* Pay close attention, kids. This is how you use fe_process_frames(). */
+ fe_start_utt(fe);
+ cptr = cepbuf;
+ nfr = total_frames;
+ while ((nsamp = fread(buf, sizeof(int16), 2048, raw)) > 0) {
+ int16 const *bptr = buf;
+ while (nsamp) {
+ int32 ncep = nfr;
+ fe_process_frames(fe, &bptr, &nsamp, cptr, &ncep);
+ cptr += ncep;
+ nfr -= ncep;
+ }
+ }
+ fe_end_utt(fe, *cptr, &nfr);
+
+ /* Now test some feature extraction problems. */
+ featbuf1 = feat_array_alloc(fcb, total_frames);
+ featbuf2 = feat_array_alloc(fcb, total_frames);
+
+ /* Whole utterance: canonical, assumed to be correct. */
+ ncep = total_frames;
+ TEST_EQUAL(total_frames,
+ feat_s2mfc2feat_live(fcb, cepbuf,
+ &ncep, TRUE, TRUE,
+ featbuf1));
+ TEST_EQUAL(ncep, total_frames);
+
+ /* Process one frame at a time. */
+ cptr = cepbuf;
+ fptr = featbuf2;
+ ncep = 1;
+ nfr = feat_s2mfc2feat_live(fcb, cptr, &ncep, TRUE, FALSE, fptr);
+ TEST_EQUAL(nfr, 0); /* Not possible to make any frames yet. */
+ TEST_EQUAL(ncep, 1); /* But we shold have consumed one. */
+ cptr += ncep;
+ for (i = 1; i < total_frames - 1; ++i) {
+ ncep = 1;
+ nfr = feat_s2mfc2feat_live(fcb, cptr, &ncep, FALSE, FALSE, fptr);
+ cptr += ncep;
+ fptr += nfr;
+ }
+ nfr = feat_s2mfc2feat_live(fcb, cptr, &ncep, FALSE, TRUE, fptr);
+ TEST_EQUAL(nfr, 4); /* This should have dumped the trailing window. */
+ TEST_EQUAL(ncep, 1); /* And only consumed one frame of MFCCs. */
+ cptr += ncep;
+ fptr += nfr;
+ /* Verify that we actually got the correct number of frames. */
+ TEST_EQUAL(cptr - cepbuf, total_frames);
+ TEST_EQUAL(fptr - featbuf2, total_frames);
+
+ /* Now verify that the results are equal. */
+ for (i = 0; i < total_frames; ++i) {
+ int32 j;
+ printf("%-4d ", i);
+ for (j = 0; j < feat_dimension(fcb); ++j) {
+ TEST_EQUAL_FLOAT(featbuf1[i][0][j], featbuf2[i][0][j]);
+ }
+ if (i % 10 == 9)
+ printf("\n");
+ }
+ printf("\n");
+
+ /* Process large chunks of frames at once, so as to exceed the
+ * internal ringbuffer size in feat_s2mfc2feat_live(). */
+ cptr = cepbuf;
+ fptr = featbuf2;
+ ncep = total_frames;
+ nfr = feat_s2mfc2feat_live(fcb, cptr, &ncep, TRUE, FALSE, fptr);
+ TEST_ASSERT(ncep != nfr);
+ cptr += ncep;
+ fptr += nfr;
+ ncep = total_frames - ncep;
+ while (ncep) {
+ int32 tmp_ncep;
+ tmp_ncep = ncep;
+ nfr = feat_s2mfc2feat_live(fcb, cptr, &tmp_ncep, FALSE, FALSE, fptr);
+ cptr += tmp_ncep;
+ fptr += nfr;
+ ncep -= tmp_ncep;
+ }
+ nfr = feat_s2mfc2feat_live(fcb, cptr, &ncep, FALSE, TRUE, fptr);
+ cptr += ncep;
+ fptr += nfr;
+ TEST_EQUAL(cptr - cepbuf, total_frames);
+ TEST_EQUAL(fptr - featbuf2, total_frames);
+
+ /* Now verify that the results are equal. */
+ for (i = 0; i < total_frames; ++i) {
+ int32 j;
+ printf("%-4d ", i);
+ for (j = 0; j < feat_dimension(fcb); ++j)
+ TEST_EQUAL_FLOAT(featbuf1[i][0][j], featbuf2[i][0][j]);
+ if (i % 10 == 9)
+ printf("\n");
+ }
+ printf("\n");
+
+ fclose(raw);
+ fe_free(fe);
+ feat_array_free(featbuf1);
+ feat_array_free(featbuf2);
+ feat_free(fcb);
+ ckd_free_2d(cepbuf);
+
+ return 0;
+}
--- /dev/null
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "feat.h"
+#include "ckd_alloc.h"
+#include "test_macros.h"
+
+const mfcc_t data[6][13] = {
+ { FLOAT2MFCC(15.114), FLOAT2MFCC(-1.424), FLOAT2MFCC(-0.953),
+ FLOAT2MFCC(0.186), FLOAT2MFCC(-0.656), FLOAT2MFCC(-0.226),
+ FLOAT2MFCC(-0.105), FLOAT2MFCC(-0.412), FLOAT2MFCC(-0.024),
+ FLOAT2MFCC(-0.091), FLOAT2MFCC(-0.124), FLOAT2MFCC(-0.158), FLOAT2MFCC(-0.197)},
+ { FLOAT2MFCC(14.729), FLOAT2MFCC(-1.313), FLOAT2MFCC(-0.892),
+ FLOAT2MFCC(0.140), FLOAT2MFCC(-0.676), FLOAT2MFCC(-0.089),
+ FLOAT2MFCC(-0.313), FLOAT2MFCC(-0.422), FLOAT2MFCC(-0.058),
+ FLOAT2MFCC(-0.101), FLOAT2MFCC(-0.100), FLOAT2MFCC(-0.128), FLOAT2MFCC(-0.123)},
+ { FLOAT2MFCC(14.502), FLOAT2MFCC(-1.351), FLOAT2MFCC(-1.028),
+ FLOAT2MFCC(-0.189), FLOAT2MFCC(-0.718), FLOAT2MFCC(-0.139),
+ FLOAT2MFCC(-0.121), FLOAT2MFCC(-0.365), FLOAT2MFCC(-0.139),
+ FLOAT2MFCC(-0.154), FLOAT2MFCC(0.041), FLOAT2MFCC(0.009), FLOAT2MFCC(-0.073)},
+ { FLOAT2MFCC(14.557), FLOAT2MFCC(-1.676), FLOAT2MFCC(-0.864),
+ FLOAT2MFCC(0.118), FLOAT2MFCC(-0.445), FLOAT2MFCC(-0.168),
+ FLOAT2MFCC(-0.069), FLOAT2MFCC(-0.503), FLOAT2MFCC(-0.013),
+ FLOAT2MFCC(0.007), FLOAT2MFCC(-0.056), FLOAT2MFCC(-0.075), FLOAT2MFCC(-0.237)},
+ { FLOAT2MFCC(14.665), FLOAT2MFCC(-1.498), FLOAT2MFCC(-0.582),
+ FLOAT2MFCC(0.209), FLOAT2MFCC(-0.487), FLOAT2MFCC(-0.247),
+ FLOAT2MFCC(-0.142), FLOAT2MFCC(-0.439), FLOAT2MFCC(0.059),
+ FLOAT2MFCC(-0.058), FLOAT2MFCC(-0.265), FLOAT2MFCC(-0.109), FLOAT2MFCC(-0.196)},
+ { FLOAT2MFCC(15.025), FLOAT2MFCC(-1.199), FLOAT2MFCC(-0.607),
+ FLOAT2MFCC(0.235), FLOAT2MFCC(-0.499), FLOAT2MFCC(-0.080),
+ FLOAT2MFCC(-0.062), FLOAT2MFCC(-0.554), FLOAT2MFCC(-0.209),
+ FLOAT2MFCC(-0.124), FLOAT2MFCC(-0.445), FLOAT2MFCC(-0.352), FLOAT2MFCC(-0.400)},
+};
+
+int
+main(int argc, char *argv[])
+{
+ feat_t *fcb;
+ mfcc_t **in_feats, ***out_feats, ***out_feats2, ***optr;
+ int32 i, j, ncep, nfr, nfr1, nfr2;
+
+ in_feats = (mfcc_t **)ckd_alloc_2d_ptr(6, 13, data, sizeof(mfcc_t));
+ out_feats = (mfcc_t ***)ckd_calloc_3d(8, 1, 39, sizeof(mfcc_t));
+ /* Test 1s_c_d_dd features */
+ fcb = feat_init("1s_c_d_dd", CMN_NONE, 0, AGC_NONE, 1, 13);
+ ncep = 6;
+ nfr1 = feat_s2mfc2feat_live(fcb, in_feats, &ncep, 1, 1, out_feats);
+ printf("Processed %d input %d output frames\n", ncep, nfr1);
+ for (i = 0; i < nfr1; ++i) {
+ printf("%d: ", i);
+ for (j = 0; j < 39; ++j) {
+ printf("%.3f ", MFCC2FLOAT(out_feats[i][0][j]));
+ }
+ printf("\n");
+ }
+ feat_free(fcb);
+
+ /* Test in "live" mode. */
+ fcb = feat_init("1s_c_d_dd", CMN_NONE, 0, AGC_NONE, 1, 13);
+ optr = out_feats2 = (mfcc_t ***)ckd_calloc_3d(8, 1, 39, sizeof(mfcc_t));
+ nfr2 = 0;
+ ncep = 2;
+ nfr = feat_s2mfc2feat_live(fcb, in_feats, &ncep, TRUE, FALSE, optr);
+ printf("Processed %d input %d output frames\n", ncep, nfr);
+ nfr2 += nfr;
+ for (i = 0; i < nfr; ++i) {
+ printf("%d: ", i);
+ for (j = 0; j < 39; ++j) {
+ printf("%.3f ", MFCC2FLOAT(optr[i][0][j]));
+ }
+ printf("\n");
+ }
+ optr += nfr;
+
+ ncep = 2;
+ nfr = feat_s2mfc2feat_live(fcb, in_feats + 2, &ncep, FALSE, FALSE, optr);
+ nfr2 += nfr;
+ printf("Processed %d input %d output frames\n", ncep, nfr);
+ for (i = 0; i < nfr; ++i) {
+ printf("%d: ", i);
+ for (j = 0; j < 39; ++j) {
+ printf("%.3f ", MFCC2FLOAT(optr[i][0][j]));
+ }
+ printf("\n");
+ }
+ optr += nfr;
+
+ ncep = 2;
+ nfr = feat_s2mfc2feat_live(fcb, in_feats + 4, &ncep, FALSE, TRUE, optr);
+ nfr2 += nfr;
+ printf("Processed %d input %d output frames\n", ncep, nfr);
+ for (i = 0; i < nfr; ++i) {
+ printf("%d: ", i);
+ for (j = 0; j < 39; ++j) {
+ printf("%.3f ", MFCC2FLOAT(optr[i][0][j]));
+ }
+ printf("\n");
+ }
+ optr += nfr;
+ feat_free(fcb);
+
+ TEST_EQUAL(nfr1, nfr2);
+ for (i = 0; i < nfr1; ++i) {
+ for (j = 0; j < 39; ++j) {
+ TEST_EQUAL(out_feats[i][0][j], out_feats2[i][0][j]);
+ }
+ }
+ ckd_free_3d(out_feats2);
+ ckd_free_3d(out_feats);
+ ckd_free(in_feats);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define EPSILON 0.01
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "feat.h"
+#include "test_macros.h"
+#include "ckd_alloc.h"
+
+const mfcc_t data[6][13] = {
+ { FLOAT2MFCC(15.114), FLOAT2MFCC(-1.424), FLOAT2MFCC(-0.953),
+ FLOAT2MFCC(0.186), FLOAT2MFCC(-0.656), FLOAT2MFCC(-0.226),
+ FLOAT2MFCC(-0.105), FLOAT2MFCC(-0.412), FLOAT2MFCC(-0.024),
+ FLOAT2MFCC(-0.091), FLOAT2MFCC(-0.124), FLOAT2MFCC(-0.158), FLOAT2MFCC(-0.197)},
+ { FLOAT2MFCC(14.729), FLOAT2MFCC(-1.313), FLOAT2MFCC(-0.892),
+ FLOAT2MFCC(0.140), FLOAT2MFCC(-0.676), FLOAT2MFCC(-0.089),
+ FLOAT2MFCC(-0.313), FLOAT2MFCC(-0.422), FLOAT2MFCC(-0.058),
+ FLOAT2MFCC(-0.101), FLOAT2MFCC(-0.100), FLOAT2MFCC(-0.128), FLOAT2MFCC(-0.123)},
+ { FLOAT2MFCC(14.502), FLOAT2MFCC(-1.351), FLOAT2MFCC(-1.028),
+ FLOAT2MFCC(-0.189), FLOAT2MFCC(-0.718), FLOAT2MFCC(-0.139),
+ FLOAT2MFCC(-0.121), FLOAT2MFCC(-0.365), FLOAT2MFCC(-0.139),
+ FLOAT2MFCC(-0.154), FLOAT2MFCC(0.041), FLOAT2MFCC(0.009), FLOAT2MFCC(-0.073)},
+ { FLOAT2MFCC(14.557), FLOAT2MFCC(-1.676), FLOAT2MFCC(-0.864),
+ FLOAT2MFCC(0.118), FLOAT2MFCC(-0.445), FLOAT2MFCC(-0.168),
+ FLOAT2MFCC(-0.069), FLOAT2MFCC(-0.503), FLOAT2MFCC(-0.013),
+ FLOAT2MFCC(0.007), FLOAT2MFCC(-0.056), FLOAT2MFCC(-0.075), FLOAT2MFCC(-0.237)},
+ { FLOAT2MFCC(14.665), FLOAT2MFCC(-1.498), FLOAT2MFCC(-0.582),
+ FLOAT2MFCC(0.209), FLOAT2MFCC(-0.487), FLOAT2MFCC(-0.247),
+ FLOAT2MFCC(-0.142), FLOAT2MFCC(-0.439), FLOAT2MFCC(0.059),
+ FLOAT2MFCC(-0.058), FLOAT2MFCC(-0.265), FLOAT2MFCC(-0.109), FLOAT2MFCC(-0.196)},
+ { FLOAT2MFCC(15.025), FLOAT2MFCC(-1.199), FLOAT2MFCC(-0.607),
+ FLOAT2MFCC(0.235), FLOAT2MFCC(-0.499), FLOAT2MFCC(-0.080),
+ FLOAT2MFCC(-0.062), FLOAT2MFCC(-0.554), FLOAT2MFCC(-0.209),
+ FLOAT2MFCC(-0.124), FLOAT2MFCC(-0.445), FLOAT2MFCC(-0.352), FLOAT2MFCC(-0.400)},
+};
+
+int
+main(int argc, char *argv[])
+{
+ static char const svspec[] = "1-12/14-25/0,13,26/27-38";
+ int32 **subvecs, i, j, k, ncep;
+ mfcc_t **in_feats, ***out_feats;
+ feat_t *fcb;
+
+ /* Test parsing of a subvector spec. */
+ subvecs = parse_subvecs(svspec);
+ TEST_ASSERT(subvecs);
+ for (i = 0; i < 12; ++i) {
+ TEST_EQUAL(subvecs[0][i], i+1);
+ }
+ for (i = 0; i < 12; ++i) {
+ TEST_EQUAL(subvecs[1][i], i+14);
+ }
+ TEST_EQUAL(subvecs[2][0], 0);
+ TEST_EQUAL(subvecs[2][1], 13);
+ TEST_EQUAL(subvecs[2][2], 26);
+ for (i = 0; i < 12; ++i) {
+ TEST_EQUAL(subvecs[3][i], i+27);
+ }
+
+ /* Create a 1s_c_d_dd feature stream and split it into subvectors. */
+ fcb = feat_init("1s_c_d_dd", CMN_NONE, 0, AGC_NONE, 1, 13);
+ TEST_ASSERT(fcb);
+ feat_set_subvecs(fcb, subvecs);
+
+ in_feats = (mfcc_t **)ckd_alloc_2d_ptr(6, 13, data, sizeof(mfcc_t));
+ out_feats = feat_array_alloc(fcb, 6);
+ TEST_ASSERT(out_feats);
+
+ ncep = 6;
+ feat_s2mfc2feat_live(fcb, in_feats, &ncep, 1, 1, out_feats);
+
+ for (i = 0; i < 6; ++i) {
+ for (j = 0; j < feat_dimension1(fcb); ++j) {
+ for (k = 0; k < feat_dimension2(fcb, j); ++k) {
+ printf("%.3f ", MFCC2FLOAT(out_feats[i][j][k]));
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ feat_array_free(out_feats);
+ ckd_free(in_feats);
+ feat_free(fcb);
+
+ return 0;
+}
--- /dev/null
+check_PROGRAMS = \
+ test_fsg_read \
+ test_fsg_jsgf \
+ test_fsg_write_fsm
+
+TESTS = $(check_PROGRAMS)
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DLMDIR=\"${srcdir}\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+noinst_HEADERS = test_macros.h
+
+EXTRA_DIST = goforward.fsg polite.gram
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_fsg_read$(EXEEXT) test_fsg_jsgf$(EXEEXT) \
+ test_fsg_write_fsm$(EXEEXT)
+subdir = test/unit/test_fsg
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_fsg_jsgf_SOURCES = test_fsg_jsgf.c
+test_fsg_jsgf_OBJECTS = test_fsg_jsgf.$(OBJEXT)
+test_fsg_jsgf_LDADD = $(LDADD)
+test_fsg_jsgf_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_fsg_read_SOURCES = test_fsg_read.c
+test_fsg_read_OBJECTS = test_fsg_read.$(OBJEXT)
+test_fsg_read_LDADD = $(LDADD)
+test_fsg_read_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_fsg_write_fsm_SOURCES = test_fsg_write_fsm.c
+test_fsg_write_fsm_OBJECTS = test_fsg_write_fsm.$(OBJEXT)
+test_fsg_write_fsm_LDADD = $(LDADD)
+test_fsg_write_fsm_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_fsg_jsgf.c test_fsg_read.c test_fsg_write_fsm.c
+DIST_SOURCES = test_fsg_jsgf.c test_fsg_read.c test_fsg_write_fsm.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = $(check_PROGRAMS)
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DLMDIR=\"${srcdir}\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+noinst_HEADERS = test_macros.h
+EXTRA_DIST = goforward.fsg polite.gram
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_fsg/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_fsg/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_fsg_jsgf$(EXEEXT): $(test_fsg_jsgf_OBJECTS) $(test_fsg_jsgf_DEPENDENCIES)
+ @rm -f test_fsg_jsgf$(EXEEXT)
+ $(LINK) $(test_fsg_jsgf_OBJECTS) $(test_fsg_jsgf_LDADD) $(LIBS)
+test_fsg_read$(EXEEXT): $(test_fsg_read_OBJECTS) $(test_fsg_read_DEPENDENCIES)
+ @rm -f test_fsg_read$(EXEEXT)
+ $(LINK) $(test_fsg_read_OBJECTS) $(test_fsg_read_LDADD) $(LIBS)
+test_fsg_write_fsm$(EXEEXT): $(test_fsg_write_fsm_OBJECTS) $(test_fsg_write_fsm_DEPENDENCIES)
+ @rm -f test_fsg_write_fsm$(EXEEXT)
+ $(LINK) $(test_fsg_write_fsm_OBJECTS) $(test_fsg_write_fsm_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fsg_jsgf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fsg_read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fsg_write_fsm.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+FSG_BEGIN turtle
+NUM_STATES 7
+START_STATE 0
+FINAL_STATE 6
+
+# Transitions
+TRANSITION 0 1 1.0 GO
+TRANSITION 1 2 0.5 FORWARD
+TRANSITION 1 3 0.5 BACKWARD
+TRANSITION 2 4 1.0
+TRANSITION 3 4 1.0
+TRANSITION 4 5 0.1 ONE
+TRANSITION 4 5 0.1 TWO
+TRANSITION 4 5 0.1 THREE
+TRANSITION 4 5 0.1 FOUR
+TRANSITION 4 5 0.1 FIVE
+TRANSITION 4 5 0.1 SIX
+TRANSITION 4 5 0.1 SEVEN
+TRANSITION 4 5 0.1 EIGHT
+TRANSITION 4 5 0.1 NINE
+TRANSITION 4 5 0.1 TEN
+TRANSITION 5 6 0.1 METER
+TRANSITION 5 6 0.9 METERS
+FSG_END
--- /dev/null
+#JSGF V1.0;
+
+/**
+ * JSGF Grammar for Hello World example
+ */
+
+grammar polite;
+
+public <startPolite> = [please | kindly | could you | oh mighty computer];
+public <endPolite> = [please | thanks | thank you];
--- /dev/null
+#include <jsgf.h>
+#include <fsg_model.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ fsg_model_t *fsg;
+ jsgf_t *jsgf;
+ jsgf_rule_t *rule;
+
+ /* Initialize a logmath object to pass to fsg_model_read */
+ lmath = logmath_init(1.0001, 0, 0);
+ jsgf = jsgf_parse_file(LMDIR "/polite.gram", NULL);
+ TEST_ASSERT(jsgf);
+ rule = jsgf_get_rule(jsgf, "<polite.startPolite>");
+ TEST_ASSERT(rule);
+ fsg = jsgf_build_fsg(jsgf, rule, lmath, 7.5);
+ TEST_ASSERT(fsg);
+
+ TEST_ASSERT(fsg_model_add_silence(fsg, "<sil>", -1, 0.3));
+ TEST_ASSERT(fsg_model_add_silence(fsg, "++NOISE++", -1, 0.3));
+ TEST_ASSERT(fsg_model_add_alt(fsg, "please", "please(2)"));
+
+ jsgf_grammar_free(jsgf);
+ fsg_model_write(fsg, stdout);
+ fsg_model_free(fsg);
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <fsg_model.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ fsg_model_t *fsg;
+ fsg_arciter_t *itor;
+
+ /* Initialize a logmath object to pass to fsg_model_read */
+ lmath = logmath_init(1.0001, 0, 0);
+ /* Read a FSG. */
+ fsg = fsg_model_readfile(LMDIR "/goforward.fsg", lmath, 7.5);
+ TEST_ASSERT(fsg);
+
+ TEST_ASSERT(fsg_model_add_silence(fsg, "<sil>", -1, 0.3));
+ TEST_ASSERT(fsg_model_add_silence(fsg, "++NOISE++", -1, 0.3));
+ TEST_ASSERT(fsg_model_add_alt(fsg, "FORWARD", "FORWARD(2)"));
+
+ fsg_model_write(fsg, stdout);
+
+ /* Test reference counting. */
+ TEST_ASSERT(fsg = fsg_model_retain(fsg));
+ TEST_EQUAL(1, fsg_model_free(fsg));
+ fsg_model_write(fsg, stdout);
+
+ /* Test iteration. */
+ for (itor = fsg_model_arcs(fsg, 3);
+ itor; itor = fsg_arciter_next(itor)) {
+ fsg_link_t *link = fsg_arciter_get(itor);
+
+ TEST_EQUAL(fsg_link_from_state(link), 3);
+ if (fsg_link_wid(link) == -1) {
+ TEST_EQUAL(fsg_link_to_state(link), 4);
+ TEST_EQUAL(fsg_link_logs2prob(link), 0);
+ }
+ else if (fsg_link_wid(link) == fsg_model_word_id(fsg, "++NOISE++")
+ || fsg_link_wid(link) == fsg_model_word_id(fsg, "<sil>")) {
+ TEST_EQUAL(fsg_link_to_state(link), 3);
+ TEST_EQUAL_LOG(fsg_link_logs2prob(link), -90300);
+ }
+ printf("%d => %d %s %d\n",
+ fsg_link_from_state(link),
+ fsg_link_to_state(link),
+ fsg_link_wid(link) == -1
+ ? "ε" : fsg_model_word_str(fsg, fsg_link_wid(link)),
+ fsg_link_logs2prob(link));
+ }
+
+ TEST_EQUAL(0, fsg_model_free(fsg));
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <jsgf.h>
+#include <fsg_model.h>
+
+#include "test_macros.h"
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ fsg_model_t *fsg;
+ jsgf_t *jsgf;
+ jsgf_rule_t *rule;
+
+ /* Initialize a logmath object to pass to fsg_model_read */
+ lmath = logmath_init(1.0001, 0, 0);
+ jsgf = jsgf_parse_file(LMDIR "/polite.gram", NULL);
+ TEST_ASSERT(jsgf);
+ rule = jsgf_get_rule(jsgf, "<polite.startPolite>");
+ TEST_ASSERT(rule);
+ fsg = jsgf_build_fsg(jsgf, rule, lmath, 7.5);
+ TEST_ASSERT(fsg);
+
+ TEST_ASSERT(fsg_model_add_silence(fsg, "<sil>", -1, 0.3));
+ TEST_ASSERT(fsg_model_add_silence(fsg, "++NOISE++", -1, 0.3));
+ TEST_ASSERT(fsg_model_add_alt(fsg, "please", "please(2)"));
+
+ jsgf_grammar_free(jsgf);
+ fsg_model_write_fsm(fsg, stdout);
+ fsg_model_write_symtab(fsg, stdout);
+ fsg_model_free(fsg);
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+check_PROGRAMS = displayhash deletehash test_hash_iter
+
+noinst_HEADERS = test_macros.h
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+TESTS = test_hash_iter \
+ _hash_delete1.test \
+ _hash_delete2.test \
+ _hash_delete3.test \
+ _hash_delete4.test \
+ _hash_delete5.test
+
+EXTRA_DIST = display.res \
+ _hash_delete1.res \
+ _hash_delete1.test \
+ _hash_delete2.res \
+ _hash_delete2.test \
+ _hash_delete3.res \
+ _hash_delete3.test \
+ _hash_delete4.res \
+ _hash_delete4.test \
+ _hash_delete5.res \
+ _hash_delete5.test
+
+CLEANFILES = *.out
\ No newline at end of file
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = displayhash$(EXEEXT) deletehash$(EXEEXT) \
+ test_hash_iter$(EXEEXT)
+TESTS = test_hash_iter$(EXEEXT) _hash_delete1.test _hash_delete2.test \
+ _hash_delete3.test _hash_delete4.test _hash_delete5.test
+subdir = test/unit/test_hash
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+deletehash_SOURCES = deletehash.c
+deletehash_OBJECTS = deletehash.$(OBJEXT)
+deletehash_LDADD = $(LDADD)
+deletehash_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+displayhash_SOURCES = displayhash.c
+displayhash_OBJECTS = displayhash.$(OBJEXT)
+displayhash_LDADD = $(LDADD)
+displayhash_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_hash_iter_SOURCES = test_hash_iter.c
+test_hash_iter_OBJECTS = test_hash_iter.$(OBJEXT)
+test_hash_iter_LDADD = $(LDADD)
+test_hash_iter_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = deletehash.c displayhash.c test_hash_iter.c
+DIST_SOURCES = deletehash.c displayhash.c test_hash_iter.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_HEADERS = test_macros.h
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+EXTRA_DIST = display.res \
+ _hash_delete1.res \
+ _hash_delete1.test \
+ _hash_delete2.res \
+ _hash_delete2.test \
+ _hash_delete3.res \
+ _hash_delete3.test \
+ _hash_delete4.res \
+ _hash_delete4.test \
+ _hash_delete5.res \
+ _hash_delete5.test
+
+CLEANFILES = *.out
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_hash/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_hash/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+deletehash$(EXEEXT): $(deletehash_OBJECTS) $(deletehash_DEPENDENCIES)
+ @rm -f deletehash$(EXEEXT)
+ $(LINK) $(deletehash_OBJECTS) $(deletehash_LDADD) $(LIBS)
+displayhash$(EXEEXT): $(displayhash_OBJECTS) $(displayhash_DEPENDENCIES)
+ @rm -f displayhash$(EXEEXT)
+ $(LINK) $(displayhash_OBJECTS) $(displayhash_LDADD) $(LIBS)
+test_hash_iter$(EXEEXT): $(test_hash_iter_OBJECTS) $(test_hash_iter_DEPENDENCIES)
+ @rm -f test_hash_iter$(EXEEXT)
+ $(LINK) $(test_hash_iter_OBJECTS) $(test_hash_iter_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deletehash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/displayhash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hash_iter.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+Hash with chaining representation of the hash table
+|key:-bla|len:4|val=8|->NULL
+|key:-hmmdump|len:8|val=1|->|key:-subvq|len:6|val=7|->|key:-outlatdir|len:10|val=3|->NULL
+|key:-svq4svq|len:8|val=2|->|key:-lminmemory|len:11|val=6|->NULL
+|key:-beam|len:5|val=5|->NULL
+The total number of keys =7
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./deletehash -lm > _hash_delete1.out 2>&1
+compare_table delete1 _hash_delete1.out $tests/unit/test_hash/_hash_delete1.res
+rm -f _hash_delete1.out
--- /dev/null
+Hash with chaining representation of the hash table
+|key:-bla|len:4|val=8|->NULL
+|key:-hmmdump|len:8|val=1|->|key:-outlatdir|len:10|val=3|->NULL
+|key:-svq4svq|len:8|val=2|->|key:-lminmemory|len:11|val=6|->NULL
+|key:-lm|len:3|val=4|->NULL
+|key:-beam|len:5|val=5|->NULL
+The total number of keys =7
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./deletehash -subvq > _hash_delete2.out 2>&1
+compare_table delete2 _hash_delete2.out $tests/unit/test_hash/_hash_delete2.res
+rm -f _hash_delete2.out
\ No newline at end of file
--- /dev/null
+Hash with chaining representation of the hash table
+|key:-bla|len:4|val=8|->NULL
+|key:-hmmdump|len:8|val=1|->|key:-subvq|len:6|val=7|->|key:-outlatdir|len:10|val=3|->NULL
+|key:-lminmemory|len:11|val=6|->NULL
+|key:-lm|len:3|val=4|->NULL
+|key:-beam|len:5|val=5|->NULL
+The total number of keys =7
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./deletehash -svq4svq > _hash_delete3.out 2>&1
+compare_table delete3 _hash_delete3.out $tests/unit/test_hash/_hash_delete3.res
+rm -f _hash_delete3.out
\ No newline at end of file
--- /dev/null
+Hash with chaining representation of the hash table
+|key:-bla|len:4|val=8|->NULL
+|key:-subvq|len:6|val=7|->|key:-outlatdir|len:10|val=3|->NULL
+|key:-svq4svq|len:8|val=2|->|key:-lminmemory|len:11|val=6|->NULL
+|key:-lm|len:3|val=4|->NULL
+|key:-beam|len:5|val=5|->NULL
+The total number of keys =7
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./deletehash -hmmdump > _hash_delete4.out 2>&1
+compare_table delete4 _hash_delete4.out $tests/unit/test_hash/_hash_delete4.res
+rm -f _hash_delete4.out
\ No newline at end of file
--- /dev/null
+Failed as expected
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./deletehash -foo > _hash_delete5.out 2>&1
+compare_table delete5 _hash_delete5.out $tests/unit/test_hash/_hash_delete5.res
+rm -f _hash_delete5.out
\ No newline at end of file
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <hash_table.h>
+#include <err.h>
+
+/* Explore a more complicated case for deletion */
+int
+main(int argc, char **argv)
+{
+ hash_table_t *ht;
+ void *val;
+
+ if (argc != 2) {
+ printf("deletehash <key>\n");
+ exit(-1);
+ }
+
+ ht = hash_table_new(75, 0);
+
+ if (hash_table_enter(ht, "-hmmdump", (void *)1) != (void *)1) {
+ E_FATAL("Insertion of -hmmdump failed\n");
+ }
+
+ if (hash_table_enter(ht, "-svq4svq", (void *)2) != (void *)2) {
+ E_FATAL("Insertion of -svq4svq failed\n");
+ }
+
+ if (hash_table_enter(ht, "-outlatdir", (void *)3) != (void *)3) {
+ E_FATAL("Insertion of -svq4svq failed\n");
+ }
+
+ if (hash_table_enter(ht, "-lm", (void *)4) != (void *)4) {
+ E_FATAL("Insertion of -lm failed\n");
+ }
+
+ if (hash_table_enter(ht, "-beam", (void *)5) != (void *)5) {
+ E_FATAL("Insertion of -beam failed\n");
+ }
+
+ if (hash_table_enter(ht, "-lminmemory", (void *)6) != (void *)6) {
+ E_FATAL("Insertion of -lminmemory failed\n");
+ }
+
+ if (hash_table_enter(ht, "-subvq", (void *)7) != (void *)7) {
+ E_FATAL("Insertion of -outlatdir failed\n");
+ }
+
+ if (hash_table_enter(ht, "-bla", (void *)8) != (void *)8) {
+ E_FATAL("Insertion of -bla failed\n");
+ }
+
+ /* hash_table_display(ht,1); */
+ if (hash_table_delete(ht, argv[1]) == NULL) {
+ E_INFOCONT("Failed as expected\n");
+ return 0;
+ }
+ else {
+ hash_table_display(ht, 1);
+ }
+
+ /* Test emptying */
+ hash_table_empty(ht);
+ if (hash_table_lookup(ht, "-beam", &val) == 0) {
+ E_FATAL("Emptying hash table failed\n");
+ }
+
+ hash_table_free(ht);
+ ht = NULL;
+ return 0;
+}
+
+
+#if 0
+E_INFO("Hash table in the command line\n");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -lm\n");
+hash_table_delete(ht, "-lm");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -lm\n");
+
+hash_table_delete(ht, "-lm");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -svq4svq\n");
+hash_table_delete(ht, "-svq4svq");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -beam\n");
+hash_table_delete(ht, "-beam");
+hash_table_display(ht, 1);
+#endif
--- /dev/null
+Hash with chaining representation of the hash table
+|key:-hmmdump|len:8|val=1|->NULL
+|key:-svq4svq|len:8|val=1|->|key:-lminmemory|len:11|val=1|->NULL
+|key:-lm|len:3|val=1|->NULL
+|key:-beam|len:5|val=1|->NULL
+The total number of keys =5
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <hash_table.h>
+#include <err.h>
+
+/* Insert -hmmdump, -lm, -svq4svq, -beam, -lminmemory into a hash and display it. */
+int
+main(int argc, char **argv)
+{
+ hash_table_t *ht;
+ ht = hash_table_new(75, 0);
+
+ if (hash_table_enter(ht, "-hmmdump", (void *)1) != (void *)1) {
+ E_FATAL("Insertion of -hmmdump failed\n");
+ }
+
+ if (hash_table_enter(ht, "-svq4svq", (void *)1) != (void *)1) {
+ E_FATAL("Insertion of -svq4svq failed\n");
+ }
+
+ if (hash_table_enter(ht, "-lm", (void *)1) != (void *)1) {
+ E_FATAL("Insertion of -lm failed\n");
+ }
+
+ if (hash_table_enter(ht, "-beam", (void *)1) != (void *)1) {
+ E_FATAL("Insertion of -beam failed\n");
+ }
+
+ if (hash_table_enter(ht, "-lminmemory", (void *)1) != (void *)1) {
+ E_FATAL("Insertion of -lminmemory failed\n");
+ }
+
+ hash_table_display(ht, 1);
+
+ hash_table_free(ht);
+ ht = NULL;
+ return 0;
+}
+
+
+#if 0
+E_INFO("Hash table in the command line\n");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -lm\n");
+hash_table_delete(ht, "-lm");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -lm\n");
+
+hash_table_delete(ht, "-lm");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -svq4svq\n");
+hash_table_delete(ht, "-svq4svq");
+hash_table_display(ht, 1);
+
+E_INFO("After deletion of -beam\n");
+hash_table_delete(ht, "-beam");
+hash_table_display(ht, 1);
+#endif
--- /dev/null
+/**
+ * @file test_hash_iter.c Test hash table iterators
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "hash_table.h"
+#include "ckd_alloc.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ hash_table_t *h;
+ hash_iter_t *itor;
+ char *foo2 = ckd_salloc("foo");
+ char *foo3 = ckd_salloc("foo");
+
+ /* Test insertion and replacement. */
+ TEST_ASSERT(h = hash_table_new(42, FALSE));
+ TEST_EQUAL((void*)0xdeadbeef, hash_table_enter(h, "foo", (void*)0xdeadbeef));
+ TEST_EQUAL((void*)0xdeadbeef, hash_table_replace(h, foo2, (void*)0xd0d0feed));
+ TEST_EQUAL((void*)0xd0d0feed, hash_table_replace(h, foo3, (void*)0xdeadbeaf));
+ TEST_EQUAL((void*)0xcafec0de, hash_table_enter(h, "bar", (void*)0xcafec0de));
+ TEST_EQUAL((void*)0xeeefeeef, hash_table_enter(h, "baz", (void*)0xeeefeeef));
+ TEST_EQUAL((void*)0xbabababa, hash_table_enter(h, "quux", (void*)0xbabababa));
+
+ hash_table_display(h, TRUE);
+ /* Now test iterators. */
+ for (itor = hash_table_iter(h); itor; itor = hash_table_iter_next(itor)) {
+ printf("%s %p\n", itor->ent->key, itor->ent->val);
+ if (0 == strcmp(itor->ent->key, "foo")) {
+ TEST_EQUAL(itor->ent->val, (void*)0xdeadbeaf);
+ }
+ else if (0 == strcmp(itor->ent->key, "bar")) {
+ TEST_EQUAL(itor->ent->val, (void*)0xcafec0de);
+ }
+ else if (0 == strcmp(itor->ent->key, "baz")) {
+ TEST_EQUAL(itor->ent->val, (void*)0xeeefeeef);
+ }
+ else if (0 == strcmp(itor->ent->key, "quux")) {
+ TEST_EQUAL(itor->ent->val, (void*)0xbabababa);
+ }
+ }
+ ckd_free(foo2);
+ ckd_free(foo3);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define EPSILON 0.001
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
--- /dev/null
+check_PROGRAMS = test_log_int16 test_log_int8 test_log_shifted
+TESTS = test_log_int16 test_log_int8 test_log_shifted
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+
+noinst_HEADERS = test_macros.h
+
+CLEANFILES = *.out tmp.*
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_log_int16$(EXEEXT) test_log_int8$(EXEEXT) \
+ test_log_shifted$(EXEEXT)
+TESTS = test_log_int16$(EXEEXT) test_log_int8$(EXEEXT) \
+ test_log_shifted$(EXEEXT)
+subdir = test/unit/test_logmath
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_log_int16_SOURCES = test_log_int16.c
+test_log_int16_OBJECTS = test_log_int16.$(OBJEXT)
+test_log_int16_LDADD = $(LDADD)
+test_log_int16_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_log_int8_SOURCES = test_log_int8.c
+test_log_int8_OBJECTS = test_log_int8.$(OBJEXT)
+test_log_int8_LDADD = $(LDADD)
+test_log_int8_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_log_shifted_SOURCES = test_log_shifted.c
+test_log_shifted_OBJECTS = test_log_shifted.$(OBJEXT)
+test_log_shifted_LDADD = $(LDADD)
+test_log_shifted_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_log_int16.c test_log_int8.c test_log_shifted.c
+DIST_SOURCES = test_log_int16.c test_log_int8.c test_log_shifted.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+noinst_HEADERS = test_macros.h
+CLEANFILES = *.out tmp.*
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_logmath/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_logmath/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_log_int16$(EXEEXT): $(test_log_int16_OBJECTS) $(test_log_int16_DEPENDENCIES)
+ @rm -f test_log_int16$(EXEEXT)
+ $(LINK) $(test_log_int16_OBJECTS) $(test_log_int16_LDADD) $(LIBS)
+test_log_int8$(EXEEXT): $(test_log_int8_OBJECTS) $(test_log_int8_DEPENDENCIES)
+ @rm -f test_log_int8$(EXEEXT)
+ $(LINK) $(test_log_int8_OBJECTS) $(test_log_int8_LDADD) $(LIBS)
+test_log_shifted$(EXEEXT): $(test_log_shifted_OBJECTS) $(test_log_shifted_DEPENDENCIES)
+ @rm -f test_log_shifted$(EXEEXT)
+ $(LINK) $(test_log_shifted_OBJECTS) $(test_log_shifted_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_log_int16.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_log_int8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_log_shifted.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#include <logmath.h>
+
+#include "test_macros.h"
+
+#define LOG_EPSILON 1500
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ int32 rv;
+
+ lmath = logmath_init(1.0001, 0, 1);
+ TEST_ASSERT(lmath);
+ printf("log(1e-150) = %d\n", logmath_log(lmath, 1e-150));
+ TEST_EQUAL_LOG(logmath_log(lmath, 1e-150), -3454050);
+ printf("exp(log(1e-150)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-150)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-150)), 1e-150);
+ printf("log(1e-48) = %d\n", logmath_log(lmath, 1e-48));
+ printf("exp(log(1e-48)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-48)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-48)), 1e-48);
+ printf("log(42) = %d\n", logmath_log(lmath, 42));
+ TEST_EQUAL_LOG(logmath_log(lmath, 42), 37378);
+ printf("exp(log(42)) = %f\n",logmath_exp(lmath, logmath_log(lmath, 42)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 42)), 42);
+ printf("log(1e-3 + 5e-3) = %d l+ %d = %d\n",
+ logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3),
+ logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3)));
+ printf("log(1e-3 + 5e-3) = %e + %e = %e\n",
+ logmath_exp(lmath, logmath_log(lmath, 1e-3)),
+ logmath_exp(lmath, logmath_log(lmath, 5e-3)),
+ logmath_exp(lmath, logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3))));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 5e-48)),
+ logmath_log(lmath, 6e-48));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 42)),
+ logmath_log(lmath, 42));
+
+ rv = logmath_write(lmath, "tmp.logadd");
+ TEST_EQUAL(rv, 0);
+ logmath_free(lmath);
+ lmath = logmath_read("tmp.logadd");
+ TEST_ASSERT(lmath);
+ printf("log(1e-150) = %d\n", logmath_log(lmath, 1e-150));
+ TEST_EQUAL_LOG(logmath_log(lmath, 1e-150), -3454050);
+ printf("exp(log(1e-150)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-150)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-150)), 1e-150);
+ printf("log(1e-48) = %d\n", logmath_log(lmath, 1e-48));
+ printf("exp(log(1e-48)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-48)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-48)), 1e-48);
+ printf("log(42) = %d\n", logmath_log(lmath, 42));
+ TEST_EQUAL_LOG(logmath_log(lmath, 42), 37378);
+ printf("exp(log(42)) = %f\n",logmath_exp(lmath, logmath_log(lmath, 42)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 42)), 41.99);
+ printf("log(1e-3 + 5e-3) = %d l+ %d = %d\n",
+ logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3),
+ logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3)));
+ printf("log(1e-3 + 5e-3) = %e + %e = %e\n",
+ logmath_exp(lmath, logmath_log(lmath, 1e-3)),
+ logmath_exp(lmath, logmath_log(lmath, 5e-3)),
+ logmath_exp(lmath, logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3))));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 5e-48)),
+ logmath_log(lmath, 6e-48));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 42)),
+ logmath_log(lmath, 42));
+
+ return 0;
+}
--- /dev/null
+#include <logmath.h>
+
+#include "test_macros.h"
+
+#define LOG_EPSILON 1500
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ int32 rv;
+
+ lmath = logmath_init(1.003, 0, 1);
+ TEST_ASSERT(lmath);
+ printf("log(1e-48) = %d\n", logmath_log(lmath, 1e-48));
+ TEST_EQUAL_LOG(logmath_log(lmath, 1e-48), -36896);
+ printf("exp(log(1e-48)) = %e\n",logmath_exp(lmath, -36896));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, -36896), 1e-48);
+ printf("log(42) = %d\n", logmath_log(lmath, 42));
+ TEST_EQUAL_LOG(logmath_log(lmath, 42), 1247);
+ printf("exp(log(42)) = %f\n",logmath_exp(lmath, 1247));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, 1247), 41.9);
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 5e-48)),
+ logmath_log(lmath, 6e-48));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 42)), 1247);
+
+ rv = logmath_write(lmath, "tmp.logadd");
+ TEST_EQUAL(rv, 0);
+ logmath_free(lmath);
+ lmath = logmath_read("tmp.logadd");
+ TEST_ASSERT(lmath);
+ TEST_EQUAL_LOG(logmath_log(lmath, 1e-48), -36896);
+ TEST_EQUAL_LOG(logmath_log(lmath, 42), 1247);
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 5e-48)),
+ logmath_log(lmath, 6e-48));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 42)), 1247);
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <logmath.h>
+
+#include "test_macros.h"
+
+#define LOG_EPSILON 1500
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ int32 rv;
+
+ lmath = logmath_init(1.0001, 8, 1);
+ TEST_ASSERT(lmath);
+ printf("log(1e-150) = %d\n", logmath_log(lmath, 1e-150));
+ TEST_EQUAL_LOG(logmath_log(lmath, 1e-150), -13493);
+ printf("exp(log(1e-150)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-150)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-150)), 1e-150);
+ printf("log(1e-48) = %d\n", logmath_log(lmath, 1e-48));
+ printf("exp(log(1e-48)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-48)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-48)), 1e-48);
+ printf("log(42) = %d\n", logmath_log(lmath, 42));
+ TEST_EQUAL_LOG(logmath_log(lmath, 42), 146);
+ printf("exp(log(42)) = %f\n",logmath_exp(lmath, logmath_log(lmath, 42)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 42)), 41.99);
+ printf("log(1e-3 + 5e-3) = %d l+ %d = %d\n",
+ logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3),
+ logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3)));
+ printf("log(1e-3 + 5e-3) = %e + %e = %e\n",
+ logmath_exp(lmath, logmath_log(lmath, 1e-3)),
+ logmath_exp(lmath, logmath_log(lmath, 5e-3)),
+ logmath_exp(lmath, logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3))));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 5e-48)),
+ logmath_log(lmath, 6e-48));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 42)),
+ logmath_log(lmath, 42));
+
+ rv = logmath_write(lmath, "tmp.logadd");
+ TEST_EQUAL(rv, 0);
+ logmath_free(lmath);
+ lmath = logmath_read("tmp.logadd");
+ TEST_ASSERT(lmath);
+ printf("log(1e-150) = %d\n", logmath_log(lmath, 1e-150));
+ TEST_EQUAL_LOG(logmath_log(lmath, 1e-150), -13493);
+ printf("exp(log(1e-150)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-150)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-150)), 1e-150);
+ printf("log(1e-48) = %d\n", logmath_log(lmath, 1e-48));
+ printf("exp(log(1e-48)) = %e\n",logmath_exp(lmath, logmath_log(lmath, 1e-48)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 1e-48)), 1e-48);
+ printf("log(42) = %d\n", logmath_log(lmath, 42));
+ TEST_EQUAL_LOG(logmath_log(lmath, 42), 146);
+ printf("exp(log(42)) = %f\n",logmath_exp(lmath, logmath_log(lmath, 42)));
+ TEST_EQUAL_FLOAT(logmath_exp(lmath, logmath_log(lmath, 42)), 41.99);
+ printf("log(1e-3 + 5e-3) = %d l+ %d = %d\n",
+ logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3),
+ logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3)));
+ printf("log(1e-3 + 5e-3) = %e + %e = %e\n",
+ logmath_exp(lmath, logmath_log(lmath, 1e-3)),
+ logmath_exp(lmath, logmath_log(lmath, 5e-3)),
+ logmath_exp(lmath, logmath_add(lmath, logmath_log(lmath, 1e-3),
+ logmath_log(lmath, 5e-3))));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 5e-48)),
+ logmath_log(lmath, 6e-48));
+ TEST_EQUAL_LOG(logmath_add(lmath, logmath_log(lmath, 1e-48),
+ logmath_log(lmath, 42)),
+ logmath_log(lmath, 42));
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define EPSILON 0.01
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+
+check_PROGRAMS = test_solve test_invert test_determinant
+
+test_solve_SRCS = test_solve.c
+test_invert_SRCS = test_invert.c
+test_determinant_SRCS = test_determinant.c
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+
+
+TESTS = _test_determinant.test \
+ _test_invert.test \
+ _test_solve.test
+
+EXTRA_DIST = _test_determinant.res \
+ _test_determinant.test \
+ _test_invert.res \
+ _test_invert.test \
+ _test_solve.res \
+ _test_solve.test
+
+CLEANFILES = *.out
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_solve$(EXEEXT) test_invert$(EXEEXT) \
+ test_determinant$(EXEEXT)
+subdir = test/unit/test_matrix
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_determinant_SOURCES = test_determinant.c
+test_determinant_OBJECTS = test_determinant.$(OBJEXT)
+test_determinant_LDADD = $(LDADD)
+test_determinant_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_invert_SOURCES = test_invert.c
+test_invert_OBJECTS = test_invert.$(OBJEXT)
+test_invert_LDADD = $(LDADD)
+test_invert_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_solve_SOURCES = test_solve.c
+test_solve_OBJECTS = test_solve.$(OBJEXT)
+test_solve_LDADD = $(LDADD)
+test_solve_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_determinant.c test_invert.c test_solve.c
+DIST_SOURCES = test_determinant.c test_invert.c test_solve.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+test_solve_SRCS = test_solve.c
+test_invert_SRCS = test_invert.c
+test_determinant_SRCS = test_determinant.c
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la -lm
+TESTS = _test_determinant.test \
+ _test_invert.test \
+ _test_solve.test
+
+EXTRA_DIST = _test_determinant.res \
+ _test_determinant.test \
+ _test_invert.res \
+ _test_invert.test \
+ _test_solve.res \
+ _test_solve.test
+
+CLEANFILES = *.out
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_matrix/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_matrix/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_determinant$(EXEEXT): $(test_determinant_OBJECTS) $(test_determinant_DEPENDENCIES)
+ @rm -f test_determinant$(EXEEXT)
+ $(LINK) $(test_determinant_OBJECTS) $(test_determinant_LDADD) $(LIBS)
+test_invert$(EXEEXT): $(test_invert_OBJECTS) $(test_invert_DEPENDENCIES)
+ @rm -f test_invert$(EXEEXT)
+ $(LINK) $(test_invert_OBJECTS) $(test_invert_LDADD) $(LIBS)
+test_solve$(EXEEXT): $(test_solve_OBJECTS) $(test_solve_DEPENDENCIES)
+ @rm -f test_solve$(EXEEXT)
+ $(LINK) $(test_solve_OBJECTS) $(test_solve_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_determinant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_invert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_solve.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+5.22
+-1.00
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./test_determinant | sed -e 's,-0\.0,0.0,g' > _test_determinant.out
+compare_table determinant _test_determinant.out $tests/unit/test_matrix/_test_determinant.res
+rm -f _test_determinant.out
--- /dev/null
+0
+0.75 -0.25 -0.25
+-0.25 0.75 -0.25
+-0.25 -0.25 0.75
+1.00 0.00 0.00
+0.00 1.00 0.00
+0.00 0.00 1.00
+0
+0.67 0.00 -0.33
+0.00 0.67 -0.33
+-0.33 -0.33 0.83
+1.00 0.00 0.00
+0.00 1.00 0.00
+0.00 0.00 1.00
+0
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./test_invert | sed -e 's,-0\.0,0.0,g' > _test_invert.out
+compare_table invert _test_invert.out $tests/unit/test_matrix/_test_invert.res
+rm -f _test_invert.out
--- /dev/null
+-0.25 1.75 -0.25
--- /dev/null
+#!/bin/sh
+. ../testfuncs.sh
+
+set -e
+./test_solve > _test_solve.out
+compare_table solve _test_solve.out $tests/unit/test_matrix/_test_solve.res
+rm -f _test_solve.out
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+
+#include "matrix.h"
+#include "ckd_alloc.h"
+
+const float32 foo[3][3] = {
+ {2, 0.42, 1},
+ {0.42, 2, -0.3},
+ {1, -0.3, 2}
+};
+const float32 bar[3][3] = {
+ {1, 0, 1},
+ {0, 1, 0},
+ {0, 0, 1}
+};
+
+int
+main(int argc, char *argv[])
+{
+ float32 **a;
+
+ a = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32));
+
+ memcpy(a[0], foo, sizeof(float32) * 3 * 3);
+ /* Should see 5.22 */
+ printf("%.2f\n", determinant(a, 3));
+
+ /* Should see -1.0 */
+ memcpy(a[0], bar, sizeof(float32) * 3 * 3);
+ printf("%.2f\n", determinant(a, 3));
+
+ ckd_free_2d((void **)a);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+
+#include "matrix.h"
+#include "ckd_alloc.h"
+
+const float32 foo[3][3] = {
+ {2, 1, 1},
+ {1, 2, 1},
+ {1, 1, 2}
+};
+const float32 bar[3][3] = {
+ {2, 0.5, 1},
+ {0.5, 2, 1},
+ {1, 1, 2}
+};
+
+int
+main(int argc, char *argv[])
+{
+ float32 **a, **ainv, **ii;
+ int i, j;
+
+ a = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32));
+ ainv = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32));
+ ii = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32));
+
+ memcpy(a[0], foo, sizeof(float32) * 3 * 3);
+ printf("%d\n", invert(ainv, a, 3));
+ /* Should see:
+ 0.75 -0.25 -0.25
+ -0.25 0.75 -0.25
+ -0.25 -0.25 0.75
+ */
+ for (i = 0; i < 3; ++i) {
+ for (j = 0; j < 3; ++j) {
+ printf("%.2f ", ainv[i][j]);
+ }
+ printf("\n");
+ }
+ /* Should see:
+ 1.00 0.00 0.00
+ 0.00 1.00 0.00
+ 0.00 0.00 1.00
+ */
+ matrixmultiply(ii, ainv, a, 3);
+ for (i = 0; i < 3; ++i) {
+ for (j = 0; j < 3; ++j) {
+ printf("%.2f ", ii[i][j]);
+ }
+ printf("\n");
+ }
+
+ memcpy(a[0], bar, sizeof(float32) * 3 * 3);
+ printf("%d\n", invert(ainv, a, 3));
+ /* Should see:
+ */
+ for (i = 0; i < 3; ++i) {
+ for (j = 0; j < 3; ++j) {
+ printf("%.2f ", ainv[i][j]);
+ }
+ printf("\n");
+ }
+ /* Should see:
+ 1.00 0.00 0.00
+ 0.00 1.00 0.00
+ 0.00 0.00 1.00
+ */
+ memset(ii[0], 0, sizeof(float32) * 3 * 3);
+ matrixmultiply(ii, ainv, a, 3);
+ for (i = 0; i < 3; ++i) {
+ for (j = 0; j < 3; ++j) {
+ printf("%.2f ", ii[i][j]);
+ }
+ printf("\n");
+ }
+
+ /* Should see:
+ -1
+ */
+ a[0][0] = 1.0;
+ printf("%d\n", invert(ainv, a, 3));
+
+ ckd_free_2d((void **)a);
+ ckd_free_2d((void **)ainv);
+ ckd_free_2d((void **)ii);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+
+#include "matrix.h"
+#include "ckd_alloc.h"
+
+const float32 foo[3][3] = {
+ {2, 1, 1},
+ {1, 2, 1},
+ {1, 1, 2}
+};
+float32 bar[3] = {1, 3, 1};
+
+int
+main(int argc, char *argv[])
+{
+ float32 **a, *x;
+ int i;
+
+ a = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32));
+ memcpy(a[0], foo, sizeof(float32) * 3 * 3);
+ x = ckd_calloc(3, sizeof(float32));
+
+ /* Should see:
+ -0.25 1.75 -0.25
+ */
+ solve(a, bar, x, 3);
+ for (i = 0; i < 3; ++i)
+ printf("%.2f ", x[i]);
+ printf("\n");
+
+ ckd_free_2d((void **)a);
+ ckd_free(x);
+
+ return 0;
+}
--- /dev/null
+{ 100.probdef }
+100.arpa.DMP 100 { scylla zero }
+100_2.arpa.gz 100_2
+turtle.lm turtle
--- /dev/null
+LMCLASS scylla
+scylla:scylla 0.4
+karybdis:scylla 0.4
+scooby:scylla 0.1
+redwood:scylla 0.1
+END scylla
+
+LMCLASS zero
+zero:zero 0.3
+oh:zero 0.7
+END zero
--- /dev/null
+check_PROGRAMS = \
+ test_lm_read \
+ test_lm_mmap \
+ test_lm_score \
+ test_lm_add \
+ test_lm_recode \
+ test_lm_casefold \
+ test_lm_class \
+ test_lm_set \
+ test_lm_iter \
+ test_lm_write
+
+TESTS = $(check_PROGRAMS)
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DLMDIR=\"${srcdir}\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+noinst_HEADERS = test_macros.h
+
+EXTRA_DIST = 100.arpa.gz \
+ 100.arpa.bz2 \
+ 100.arpa.DMP \
+ 100.probdef \
+ 100.lmctl \
+ 100_2.arpa.gz \
+ 100_2.arpa.DMP \
+ turtle.lm \
+ turtle.lm.DMP \
+ turtle.ug.lm \
+ turtle.ug.lm.DMP
+
+CLEANFILES = 100.tmp.arpa 100.tmp.DMP
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_lm_read$(EXEEXT) test_lm_mmap$(EXEEXT) \
+ test_lm_score$(EXEEXT) test_lm_add$(EXEEXT) \
+ test_lm_recode$(EXEEXT) test_lm_casefold$(EXEEXT) \
+ test_lm_class$(EXEEXT) test_lm_set$(EXEEXT) \
+ test_lm_iter$(EXEEXT) test_lm_write$(EXEEXT)
+subdir = test/unit/test_ngram
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_lm_add_SOURCES = test_lm_add.c
+test_lm_add_OBJECTS = test_lm_add.$(OBJEXT)
+test_lm_add_LDADD = $(LDADD)
+test_lm_add_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_casefold_SOURCES = test_lm_casefold.c
+test_lm_casefold_OBJECTS = test_lm_casefold.$(OBJEXT)
+test_lm_casefold_LDADD = $(LDADD)
+test_lm_casefold_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_class_SOURCES = test_lm_class.c
+test_lm_class_OBJECTS = test_lm_class.$(OBJEXT)
+test_lm_class_LDADD = $(LDADD)
+test_lm_class_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_iter_SOURCES = test_lm_iter.c
+test_lm_iter_OBJECTS = test_lm_iter.$(OBJEXT)
+test_lm_iter_LDADD = $(LDADD)
+test_lm_iter_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_mmap_SOURCES = test_lm_mmap.c
+test_lm_mmap_OBJECTS = test_lm_mmap.$(OBJEXT)
+test_lm_mmap_LDADD = $(LDADD)
+test_lm_mmap_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_read_SOURCES = test_lm_read.c
+test_lm_read_OBJECTS = test_lm_read.$(OBJEXT)
+test_lm_read_LDADD = $(LDADD)
+test_lm_read_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_recode_SOURCES = test_lm_recode.c
+test_lm_recode_OBJECTS = test_lm_recode.$(OBJEXT)
+test_lm_recode_LDADD = $(LDADD)
+test_lm_recode_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_score_SOURCES = test_lm_score.c
+test_lm_score_OBJECTS = test_lm_score.$(OBJEXT)
+test_lm_score_LDADD = $(LDADD)
+test_lm_score_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_set_SOURCES = test_lm_set.c
+test_lm_set_OBJECTS = test_lm_set.$(OBJEXT)
+test_lm_set_LDADD = $(LDADD)
+test_lm_set_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_lm_write_SOURCES = test_lm_write.c
+test_lm_write_OBJECTS = test_lm_write.$(OBJEXT)
+test_lm_write_LDADD = $(LDADD)
+test_lm_write_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_lm_add.c test_lm_casefold.c test_lm_class.c \
+ test_lm_iter.c test_lm_mmap.c test_lm_read.c test_lm_recode.c \
+ test_lm_score.c test_lm_set.c test_lm_write.c
+DIST_SOURCES = test_lm_add.c test_lm_casefold.c test_lm_class.c \
+ test_lm_iter.c test_lm_mmap.c test_lm_read.c test_lm_recode.c \
+ test_lm_score.c test_lm_set.c test_lm_write.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = $(check_PROGRAMS)
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DLMDIR=\"${srcdir}\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+noinst_HEADERS = test_macros.h
+EXTRA_DIST = 100.arpa.gz \
+ 100.arpa.bz2 \
+ 100.arpa.DMP \
+ 100.probdef \
+ 100.lmctl \
+ 100_2.arpa.gz \
+ 100_2.arpa.DMP \
+ turtle.lm \
+ turtle.lm.DMP \
+ turtle.ug.lm \
+ turtle.ug.lm.DMP
+
+CLEANFILES = 100.tmp.arpa 100.tmp.DMP
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_ngram/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_ngram/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_lm_add$(EXEEXT): $(test_lm_add_OBJECTS) $(test_lm_add_DEPENDENCIES)
+ @rm -f test_lm_add$(EXEEXT)
+ $(LINK) $(test_lm_add_OBJECTS) $(test_lm_add_LDADD) $(LIBS)
+test_lm_casefold$(EXEEXT): $(test_lm_casefold_OBJECTS) $(test_lm_casefold_DEPENDENCIES)
+ @rm -f test_lm_casefold$(EXEEXT)
+ $(LINK) $(test_lm_casefold_OBJECTS) $(test_lm_casefold_LDADD) $(LIBS)
+test_lm_class$(EXEEXT): $(test_lm_class_OBJECTS) $(test_lm_class_DEPENDENCIES)
+ @rm -f test_lm_class$(EXEEXT)
+ $(LINK) $(test_lm_class_OBJECTS) $(test_lm_class_LDADD) $(LIBS)
+test_lm_iter$(EXEEXT): $(test_lm_iter_OBJECTS) $(test_lm_iter_DEPENDENCIES)
+ @rm -f test_lm_iter$(EXEEXT)
+ $(LINK) $(test_lm_iter_OBJECTS) $(test_lm_iter_LDADD) $(LIBS)
+test_lm_mmap$(EXEEXT): $(test_lm_mmap_OBJECTS) $(test_lm_mmap_DEPENDENCIES)
+ @rm -f test_lm_mmap$(EXEEXT)
+ $(LINK) $(test_lm_mmap_OBJECTS) $(test_lm_mmap_LDADD) $(LIBS)
+test_lm_read$(EXEEXT): $(test_lm_read_OBJECTS) $(test_lm_read_DEPENDENCIES)
+ @rm -f test_lm_read$(EXEEXT)
+ $(LINK) $(test_lm_read_OBJECTS) $(test_lm_read_LDADD) $(LIBS)
+test_lm_recode$(EXEEXT): $(test_lm_recode_OBJECTS) $(test_lm_recode_DEPENDENCIES)
+ @rm -f test_lm_recode$(EXEEXT)
+ $(LINK) $(test_lm_recode_OBJECTS) $(test_lm_recode_LDADD) $(LIBS)
+test_lm_score$(EXEEXT): $(test_lm_score_OBJECTS) $(test_lm_score_DEPENDENCIES)
+ @rm -f test_lm_score$(EXEEXT)
+ $(LINK) $(test_lm_score_OBJECTS) $(test_lm_score_LDADD) $(LIBS)
+test_lm_set$(EXEEXT): $(test_lm_set_OBJECTS) $(test_lm_set_DEPENDENCIES)
+ @rm -f test_lm_set$(EXEEXT)
+ $(LINK) $(test_lm_set_OBJECTS) $(test_lm_set_LDADD) $(LIBS)
+test_lm_write$(EXEEXT): $(test_lm_write_OBJECTS) $(test_lm_write_DEPENDENCIES)
+ @rm -f test_lm_write$(EXEEXT)
+ $(LINK) $(test_lm_write_OBJECTS) $(test_lm_write_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_add.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_casefold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_class.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_iter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_mmap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_recode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_score.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_set.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lm_write.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+void
+run_tests(logmath_t *lmath, ngram_model_t *model)
+{
+ int32 wid, score;
+
+ wid = ngram_model_add_word(model, "foobie", 1.0);
+ score = ngram_score(model, "foobie", NULL);
+ TEST_EQUAL_LOG(score, logmath_log(lmath, 1.0/400.0)); /* #unigrams */
+
+ wid = ngram_model_add_word(model, "quux", 0.5);
+ score = ngram_score(model, "quux", NULL);
+ TEST_EQUAL_LOG(score, logmath_log(lmath, 0.5/400.0)); /* #unigrams */
+
+ ngram_model_apply_weights(model, 1.0, 1.0, 0.9);
+ score = ngram_score(model, "quux", NULL);
+ TEST_EQUAL_LOG(score, logmath_log(lmath, 0.5/400.0*0.9 + 1.0/400.0*0.1));
+
+ wid = ngram_model_add_word(model, "bazbar", 0.5);
+ score = ngram_score(model, "bazbar", NULL);
+ TEST_EQUAL_LOG(score, logmath_log(lmath, 0.5/400.0*0.9 + 1.0/400.0*0.1));
+}
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+
+ lmath = logmath_init(1.0001, 0, 0);
+
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ run_tests(lmath, model);
+ ngram_model_free(model);
+
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.gz", NGRAM_ARPA, lmath);
+ run_tests(lmath, model);
+ ngram_model_free(model);
+
+ logmath_free(lmath);
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>\r
+#include <logmath.h>\r
+#include <strfuncs.h>\r
+\r
+#include "test_macros.h"\r
+\r
+#include <stdio.h>\r
+#include <string.h>\r
+#include <math.h>\r
+\r
+int\r
+main(int argc, char *argv[])\r
+{\r
+ logmath_t *lmath;\r
+ ngram_model_t *model;\r
+\r
+ /* Initialize a logmath object to pass to ngram_read */\r
+ lmath = logmath_init(1.0001, 0, 0);\r
+\r
+ /* Read a language model */\r
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);\r
+ TEST_ASSERT(model);\r
+\r
+ ngram_model_casefold(model, NGRAM_UPPER);\r
+\r
+ TEST_EQUAL(0, strcmp("</s>", ngram_word(model, 5)));\r
+ TEST_EQUAL(0, strcmp("BE", ngram_word(model, 42)));\r
+ TEST_EQUAL(0, strcmp("FLOORED", ngram_word(model, 130)));\r
+ TEST_EQUAL(0, strcmp("ZERO", ngram_word(model, 398)));\r
+ TEST_EQUAL(0, strcmp("~", ngram_word(model, 399)));\r
+\r
+ ngram_model_casefold(model, NGRAM_LOWER);\r
+\r
+ TEST_EQUAL(0, strcmp("</s>", ngram_word(model, 5)));\r
+ TEST_EQUAL(0, strcmp("be", ngram_word(model, 42)));\r
+ TEST_EQUAL(0, strcmp("floored", ngram_word(model, 130)));\r
+ TEST_EQUAL(0, strcmp("zero", ngram_word(model, 398)));\r
+ TEST_EQUAL(0, strcmp("~", ngram_word(model, 399)));\r
+\r
+ ngram_model_free(model);\r
+ logmath_free(lmath);\r
+\r
+ return 0;\r
+}\r
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+void
+run_tests(logmath_t *lmath, ngram_model_t *model)
+{
+ int32 rv, i;
+
+ TEST_ASSERT(model);
+
+ TEST_EQUAL(ngram_wid(model, "scylla"), 285);
+ TEST_EQUAL(strcmp(ngram_word(model, 285), "scylla"), 0);
+
+ rv = ngram_model_read_classdef(model, LMDIR "/100.probdef");
+ TEST_EQUAL(rv, 0);
+
+ /* Verify that class word IDs remain the same. */
+ TEST_EQUAL(ngram_wid(model, "scylla"), 285);
+ TEST_EQUAL(strcmp(ngram_word(model, 285), "scylla"), 0);
+
+ /* Verify in-class word IDs. */
+ TEST_EQUAL(ngram_wid(model, "scylla:scylla"), 0x80000000 | 400);
+
+ /* Verify in-class and out-class unigram scores. */
+ TEST_EQUAL_LOG(ngram_score(model, "scylla:scylla", NULL),
+ logmath_log10_to_log(lmath, -2.7884) + logmath_log(lmath, 0.4));
+ TEST_EQUAL_LOG(ngram_score(model, "scooby:scylla", NULL),
+ logmath_log10_to_log(lmath, -2.7884) + logmath_log(lmath, 0.1));
+ TEST_EQUAL_LOG(ngram_score(model, "scylla", NULL),
+ logmath_log10_to_log(lmath, -2.7884));
+ TEST_EQUAL_LOG(ngram_score(model, "oh:zero", NULL),
+ logmath_log10_to_log(lmath, -1.9038) + logmath_log(lmath, 0.7));
+ TEST_EQUAL_LOG(ngram_score(model, "zero", NULL),
+ logmath_log10_to_log(lmath, -1.9038));
+
+ /* Verify class bigram scores. */
+ TEST_EQUAL_LOG(ngram_score(model, "scylla", "on", NULL),
+ logmath_log10_to_log(lmath, -1.2642));
+ TEST_EQUAL_LOG(ngram_score(model, "scylla:scylla", "on", NULL),
+ logmath_log10_to_log(lmath, -1.2642) + logmath_log(lmath, 0.4));
+ TEST_EQUAL_LOG(ngram_score(model, "apparently", "scylla", NULL),
+ logmath_log10_to_log(lmath, -0.5172));
+ TEST_EQUAL_LOG(ngram_score(model, "apparently", "karybdis:scylla", NULL),
+ logmath_log10_to_log(lmath, -0.5172));
+ TEST_EQUAL_LOG(ngram_score(model, "apparently", "scooby:scylla", NULL),
+ logmath_log10_to_log(lmath, -0.5172));
+
+ /* Verify class trigram scores. */
+ TEST_EQUAL_LOG(ngram_score(model, "zero", "be", "will", NULL),
+ logmath_log10_to_log(lmath, -0.5725));
+ TEST_EQUAL_LOG(ngram_score(model, "oh:zero", "be", "will", NULL),
+ logmath_log10_to_log(lmath, -0.5725) + logmath_log(lmath, 0.7));
+ TEST_EQUAL_LOG(ngram_score(model, "should", "variance", "zero", NULL),
+ logmath_log10_to_log(lmath, -0.9404));
+ TEST_EQUAL_LOG(ngram_score(model, "should", "variance", "zero:zero", NULL),
+ logmath_log10_to_log(lmath, -0.9404));
+
+ /* Add words to classes. */
+ rv = ngram_model_add_class_word(model, "scylla", "scrappy:scylla", 1.0);
+ TEST_ASSERT(rv >= 0);
+ TEST_EQUAL(ngram_wid(model, "scrappy:scylla"), 0x80000196);
+ TEST_EQUAL_LOG(ngram_score(model, "scrappy:scylla", NULL),
+ logmath_log10_to_log(lmath, -2.7884) + logmath_log(lmath, 0.2));
+ printf("scrappy:scylla %08x %d %f\n",
+ ngram_wid(model, "scrappy:scylla"),
+ ngram_score(model, "scrappy:scylla", NULL),
+ logmath_exp(lmath, ngram_score(model, "scrappy:scylla", NULL)));
+ /* Add a lot of words to a class. */
+ for (i = 0; i < 129; ++i) {
+ char word[32];
+ sprintf(word, "%d:scylla", i);
+ rv = ngram_model_add_class_word(model, "scylla", word, 1.0);
+ printf("%s %08x %d %f\n", word,
+ ngram_wid(model, word),
+ ngram_score(model, word, NULL),
+ logmath_exp(lmath, ngram_score(model, word, NULL)));
+ TEST_ASSERT(rv >= 0);
+ TEST_EQUAL(ngram_wid(model, word), 0x80000197 + i);
+ }
+
+ /* Add a new class. */
+ {
+ const char *words[] = { "blatz:foobie", "hurf:foobie" };
+ float32 weights[] = { 0.6, 0.4 };
+ int32 foobie_prob;
+ rv = ngram_model_add_class(model, "[foobie]", 1.0,
+ words, weights, 2);
+ TEST_ASSERT(rv >= 0);
+ foobie_prob = ngram_score(model, "[foobie]", NULL);
+ TEST_EQUAL_LOG(ngram_score(model, "blatz:foobie", NULL),
+ foobie_prob + logmath_log(lmath, 0.6));
+ TEST_EQUAL_LOG(ngram_score(model, "hurf:foobie", NULL),
+ foobie_prob + logmath_log(lmath, 0.4));
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+
+ lmath = logmath_init(1.0001, 0, 0);
+
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ run_tests(lmath, model);
+ ngram_model_free(model);
+
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.gz", NGRAM_ARPA, lmath);
+ run_tests(lmath, model);
+ ngram_model_free(model);
+
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+ ngram_iter_t *itor;
+ int i;
+
+ /* Initialize a logmath object to pass to ngram_read */
+ lmath = logmath_init(1.0001, 0, 0);
+ /* Read a language model */
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ TEST_ASSERT(model);
+
+ for (i = 0, itor = ngram_model_mgrams(model, 0);
+ itor; ++i, itor = ngram_iter_next(itor)) {
+ int32 score, bowt;
+ int32 const *wids = ngram_iter_get(itor, &score, &bowt);
+
+ /*
+ printf("%.4f %s %.4f\n",
+ logmath_log_to_log10(lmath, score),
+ ngram_word(model, wids[0]),
+ logmath_log_to_log10(lmath, bowt));
+ */
+
+ if (i == 0) TEST_EQUAL(wids[0], ngram_wid(model, "<UNK>"));
+ if (i == 1) TEST_EQUAL(wids[0], ngram_wid(model, "'s"));
+ }
+
+ for (i = 0, itor = ngram_model_mgrams(model, 1);
+ itor; ++i, itor = ngram_iter_next(itor)) {
+ int32 score, bowt;
+ int32 const *wids = ngram_iter_get(itor, &score, &bowt);
+
+ /*
+ printf("%.4f %s %s %.4f\n",
+ logmath_log_to_log10(lmath, score),
+ ngram_word(model, wids[0]),
+ ngram_word(model, wids[1]),
+ logmath_log_to_log10(lmath, bowt));
+ */
+
+ /* FIXME: These tests are not sufficient - actually we
+ * need to make sure all word IDs line up
+ * correctly. */
+ if (i == 0) TEST_EQUAL(wids[0], ngram_wid(model, "'s"));
+ if (i == 0) TEST_EQUAL(wids[1], ngram_wid(model, "an"));
+ if (i == 1) TEST_EQUAL(wids[0], ngram_wid(model, "'s"));
+ if (i == 1) TEST_EQUAL(wids[1], ngram_wid(model, "going"));
+ }
+
+ for (i = 0, itor = ngram_model_mgrams(model, 2);
+ itor; ++i, itor = ngram_iter_next(itor)) {
+ int32 score, bowt;
+ int32 const *wids = ngram_iter_get(itor, &score, &bowt);
+
+ /*
+ printf("%.4f %s %s %s\n",
+ logmath_log_to_log10(lmath, score),
+ ngram_word(model, wids[0]),
+ ngram_word(model, wids[1]),
+ ngram_word(model, wids[2]));
+ */
+
+ /* FIXME: These tests are not sufficient - actually we
+ * need to make sure all word IDs line up
+ * correctly. */
+ if (i == 0) TEST_EQUAL(wids[0], ngram_wid(model, "'s"));
+ if (i == 0) TEST_EQUAL(wids[1], ngram_wid(model, "an"));
+ if (i == 0) TEST_EQUAL(wids[2], ngram_wid(model, "r"));
+ if (i == 1) TEST_EQUAL(wids[0], ngram_wid(model, "'s"));
+ if (i == 1) TEST_EQUAL(wids[1], ngram_wid(model, "going"));
+ if (i == 1) TEST_EQUAL(wids[2], ngram_wid(model, "so"));
+ }
+
+ {
+ ngram_iter_t *itor2, *itor3;
+ int32 score, bowt;
+ int32 const *wids;
+
+ /* Test the boundary condition - successors of last 1-gram. */
+ itor = ngram_ng_iter(model, ngram_model_get_counts(model)[0] - 1,
+ NULL, 0);
+ wids = ngram_iter_get(itor, &score, &bowt);
+ printf("%.4f %s %.4f\n",
+ logmath_log_to_log10(lmath, score),
+ ngram_word(model, wids[0]),
+ logmath_log_to_log10(lmath, bowt));
+ TEST_EQUAL(wids[0], ngram_wid(model, "~"));
+
+ for (itor2 = ngram_iter_successors(itor);
+ itor2; itor2 = ngram_iter_next(itor2)) {
+ wids = ngram_iter_get(itor2, &score, &bowt);
+ printf("%.4f %s %s %.4f\n",
+ logmath_log_to_log10(lmath, score),
+ ngram_word(model, wids[0]),
+ ngram_word(model, wids[1]),
+ logmath_log_to_log10(lmath, bowt));
+ TEST_EQUAL(wids[0], ngram_wid(model, "~"));
+ TEST_EQUAL(wids[1], ngram_wid(model, "eleven"));
+ }
+ itor2 = ngram_iter_successors(itor);
+ for (itor3 = ngram_iter_successors(itor2);
+ itor3; itor3 = ngram_iter_next(itor3)) {
+ wids = ngram_iter_get(itor3, &score, &bowt);
+ printf("%.4f %s %s %s\n",
+ logmath_log_to_log10(lmath, score),
+ ngram_word(model, wids[0]),
+ ngram_word(model, wids[1]),
+ ngram_word(model, wids[2]));
+ TEST_EQUAL(wids[0], ngram_wid(model, "~"));
+ TEST_EQUAL(wids[1], ngram_wid(model, "eleven"));
+ TEST_EQUAL(wids[2], ngram_wid(model, "per"));
+ }
+ ngram_iter_free(itor2);
+ ngram_iter_free(itor);
+ }
+
+ TEST_EQUAL(0, ngram_model_free(model));
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+static const arg_t defn[] = {
+ { "-mmap", ARG_BOOLEAN, "yes", "use mmap" },
+ { "-lw", ARG_FLOAT32, "1.0", "language weight" },
+ { "-wip", ARG_FLOAT32, "1.0", "word insertion penalty" },
+ { "-uw", ARG_FLOAT32, "1.0", "unigram weight" },
+ { NULL, 0, NULL, NULL }
+};
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+ cmd_ln_t *config;
+ int32 n_used;
+
+ /* Initialize a logmath object to pass to ngram_read */
+ lmath = logmath_init(1.0001, 0, 0);
+ /* Initialize a cmd_ln_t with -mmap yes */
+ config = cmd_ln_parse_r(NULL, defn, 0, NULL, FALSE);
+
+ /* Read a language model (this won't mmap) */
+ model = ngram_model_read(config, LMDIR "/100.arpa.gz", NGRAM_ARPA, lmath);
+ TEST_ASSERT(model);
+ TEST_EQUAL(ngram_wid(model, "<UNK>"), 0);
+ TEST_EQUAL(ngram_wid(model, "absolute"), 13);
+ TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
+ /* Test unigrams. */
+ TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+ NGRAM_INVALID_WID, &n_used), -75346);
+ TEST_EQUAL(n_used, 1);
+ TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+ NGRAM_INVALID_WID, &n_used), -64208);
+ TEST_EQUAL(n_used, 1);
+ /* Test bigrams. */
+ TEST_EQUAL(ngram_score(model, "huggins", "david", NULL), -831);
+ /* Test trigrams. */
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL), -9450);
+
+ ngram_model_free(model);
+
+ /* Read a language model (this will mmap) */
+ model = ngram_model_read(config, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ TEST_ASSERT(model);
+ TEST_EQUAL(ngram_wid(model, "<UNK>"), 0);
+ TEST_EQUAL(strcmp(ngram_word(model, 0), "<UNK>"), 0);
+ TEST_EQUAL(ngram_wid(model, "absolute"), 13);
+ TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
+ /* Test unigrams. */
+ TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+ NGRAM_INVALID_WID, &n_used), -75346);
+ TEST_EQUAL(n_used, 1);
+ TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+ NGRAM_INVALID_WID, &n_used), -64208);
+ TEST_EQUAL(n_used, 1);
+ /* Test bigrams. */
+ TEST_EQUAL(ngram_score(model, "huggins", "david", NULL), -831);
+ /* Test trigrams. */
+ TEST_EQUAL(ngram_score(model, "daines", "huggins", "david", NULL), -9452);
+
+ ngram_model_free(model);
+
+ /* Test language weights on the command line. */
+ cmd_ln_set_float32_r(config, "-lw", 2.0);
+ cmd_ln_set_float32_r(config, "-wip", 0.5);
+ model = ngram_model_read(config, LMDIR "/100.arpa.gz", NGRAM_ARPA, lmath);
+ TEST_ASSERT(model);
+ TEST_EQUAL(ngram_wid(model, "<UNK>"), 0);
+ TEST_EQUAL(ngram_wid(model, "absolute"), 13);
+ TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
+ /* Test unigrams. */
+ TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346
+ * 2 + logmath_log(lmath, 0.5));
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+ NGRAM_INVALID_WID, &n_used), -75346
+ * 2 + logmath_log(lmath, 0.5));
+ TEST_EQUAL(n_used, 1);
+ TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208
+ * 2 + logmath_log(lmath, 0.5));
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+ NGRAM_INVALID_WID, &n_used), -64208
+ * 2 + logmath_log(lmath, 0.5));
+ TEST_EQUAL(n_used, 1);
+ /* Test bigrams. */
+ TEST_EQUAL(ngram_score(model, "huggins", "david", NULL),
+ -831 * 2 + logmath_log(lmath, 0.5));
+ /* Test trigrams. */
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL),
+ -9450 * 2 + logmath_log(lmath, 0.5));
+
+ ngram_model_free(model);
+
+ logmath_free(lmath);
+ cmd_ln_free_r(config);
+
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+static int
+test_lm_vals(ngram_model_t *model)
+{
+ int32 n_used;
+ TEST_ASSERT(model);
+ TEST_EQUAL(ngram_wid(model, "<UNK>"), 0);
+ TEST_EQUAL(strcmp(ngram_word(model, 0), "<UNK>"), 0);
+ TEST_EQUAL(ngram_wid(model, "absolute"), 13);
+ TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
+ /* Test unigrams. */
+ TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+ NGRAM_INVALID_WID, &n_used), -75346);
+ TEST_EQUAL(n_used, 1);
+ TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
+ TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+ NGRAM_INVALID_WID, &n_used), -64208);
+ TEST_EQUAL(n_used, 1);
+ /* Test bigrams. */
+ TEST_EQUAL(ngram_score(model, "huggins", "david", NULL), -831);
+ /* Test trigrams. */
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL), -9450);
+ return 0;
+}
+
+static int
+test_lm_ug_vals(ngram_model_t *model)
+{
+ TEST_ASSERT(model);
+ TEST_EQUAL(ngram_score(model, "BACKWARD", NULL), -53008);
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+
+ /* Initialize a logmath object to pass to ngram_read */
+ lmath = logmath_init(1.0001, 0, 0);
+ /* Read a language model */
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.bz2", NGRAM_ARPA, lmath);
+ test_lm_vals(model);
+ TEST_EQUAL(0, ngram_model_free(model));
+
+ /* Read a language model */
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ test_lm_vals(model);
+
+ /* Test refcounting. */
+ model = ngram_model_retain(model);
+ TEST_EQUAL(1, ngram_model_free(model));
+ TEST_EQUAL(ngram_score(model, "daines", "huggins", "david", NULL), -9452);
+ TEST_EQUAL(0, ngram_model_free(model));
+
+ /* Read a language model */
+ model = ngram_model_read(NULL, LMDIR "/turtle.ug.lm", NGRAM_ARPA, lmath);
+ test_lm_ug_vals(model);
+
+ /* Read a language model */
+ model = ngram_model_read(NULL, LMDIR "/turtle.ug.lm.DMP", NGRAM_DMP, lmath);
+ test_lm_ug_vals(model);
+
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+
+ /* Initialize a logmath object to pass to ngram_read */
+ lmath = logmath_init(1.0001, 0, 0);
+
+ /* Read a language model */
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ TEST_ASSERT(model);
+
+ ngram_model_recode(model, "iso8859-1", "utf-8");
+ TEST_EQUAL(strcmp(ngram_word(model, 0), "<UNK>"), 0);
+ ngram_model_free(model);
+ logmath_free(lmath);
+
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+void
+run_tests(ngram_model_t *model)
+{
+ int32 n_used;
+
+ ngram_tg_score(model,
+ ngram_wid(model, "daines"),
+ ngram_wid(model, "huggins"),
+ ngram_wid(model, "huggins"), &n_used);
+ TEST_EQUAL(n_used, 2);
+ ngram_tg_score(model,
+ ngram_wid(model, "david"),
+ ngram_wid(model, "david"),
+ ngram_wid(model, "david"), &n_used);
+ TEST_EQUAL(n_used, 1);
+
+ /* Apply weights. */
+ ngram_model_apply_weights(model, 7.5, 0.5, 1.0);
+ /* -9452 * 7.5 + log(0.5) = -77821 */
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL),
+ -77821);
+ /* Recover original score. */
+ TEST_EQUAL_LOG(ngram_prob(model, "daines", "huggins", "david", NULL),
+ -9452);
+ TEST_EQUAL_LOG(ngram_prob(model, "huggins", "david", NULL), -831);
+
+ /* Un-apply weights. */
+ ngram_model_apply_weights(model, 1.0, 1.0, 1.0);
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL),
+ -9452);
+ TEST_EQUAL_LOG(ngram_score(model, "huggins", "david", NULL), -831);
+ /* Recover original score. */
+ TEST_EQUAL_LOG(ngram_prob(model, "daines", "huggins", "david", NULL),
+ -9452);
+
+ /* Pre-weighting, this should give the "raw" score. */
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL),
+ -9452);
+ TEST_EQUAL_LOG(ngram_score(model, "huggins", "david", NULL), -831);
+ /* Verify that backoff mode calculations work. */
+ ngram_bg_score(model,
+ ngram_wid(model, "huggins"),
+ ngram_wid(model, "david"), &n_used);
+ TEST_EQUAL(n_used, 2);
+ ngram_bg_score(model,
+ ngram_wid(model, "blorglehurfle"),
+ ngram_wid(model, "david"), &n_used);
+ TEST_EQUAL(n_used, 1);
+ ngram_bg_score(model,
+ ngram_wid(model, "david"),
+ ngram_wid(model, "david"), &n_used);
+ TEST_EQUAL(n_used, 1);
+ ngram_tg_score(model,
+ ngram_wid(model, "daines"),
+ ngram_wid(model, "huggins"),
+ ngram_wid(model, "david"), &n_used);
+ TEST_EQUAL(n_used, 3);
+}
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+
+ lmath = logmath_init(1.0001, 0, 0);
+
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ run_tests(model);
+ ngram_model_free(model);
+
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.gz", NGRAM_ARPA, lmath);
+ run_tests(model);
+ ngram_model_free(model);
+
+ logmath_free(lmath);
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *lms[3];
+ ngram_model_t *lmset;
+ const char *names[] = { "100", "100_2" };
+ const char *words[] = {
+ "<UNK>",
+ "ROBOMAN",
+ "libio",
+ "sphinxtrain",
+ "bigbird",
+ "quuxfuzz"
+ };
+ const int32 n_words = sizeof(words) / sizeof(words[0]);
+ float32 weights[] = { 0.6, 0.4 };
+
+ lmath = logmath_init(1.0001, 0, 0);
+
+ lms[0] = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ lms[1] = ngram_model_read(NULL, LMDIR "/100_2.arpa.DMP", NGRAM_DMP, lmath);
+
+ lmset = ngram_model_set_init(NULL, lms, (char **)names, NULL, 2);
+ TEST_ASSERT(lmset);
+ TEST_EQUAL(ngram_model_set_select(lmset, "100_2"), lms[1]);
+ TEST_EQUAL(ngram_model_set_select(lmset, "100"), lms[0]);
+ TEST_EQUAL(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log10_to_log(lmath, -2.7884));
+ TEST_EQUAL(ngram_score(lmset, "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.0361));
+ TEST_EQUAL_LOG(ngram_score(lmset, "daines", "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.4105));
+
+ TEST_EQUAL(ngram_model_set_select(lmset, "100_2"), lms[1]);
+ TEST_EQUAL(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log10_to_log(lmath, -2.8192));
+ TEST_EQUAL(ngram_score(lmset, "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.1597));
+ TEST_EQUAL_LOG(ngram_score(lmset, "daines", "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.0512));
+
+ /* Test interpolation with default weights. */
+ TEST_ASSERT(ngram_model_set_interp(lmset, NULL, NULL));
+ TEST_EQUAL_LOG(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log(lmath,
+ 0.5 * pow(10, -2.7884)
+ + 0.5 * pow(10, -2.8192)));
+
+ /* Test interpolation with set weights. */
+ TEST_ASSERT(ngram_model_set_interp(lmset, names, weights));
+ TEST_EQUAL_LOG(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log(lmath,
+ 0.6 * pow(10, -2.7884)
+ + 0.4 * pow(10, -2.8192)));
+
+ /* Test switching back to selected mode. */
+ TEST_EQUAL(ngram_model_set_select(lmset, "100_2"), lms[1]);
+ TEST_EQUAL(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log10_to_log(lmath, -2.8192));
+ TEST_EQUAL(ngram_score(lmset, "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.1597));
+ TEST_EQUAL_LOG(ngram_score(lmset, "daines", "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.0512));
+
+ /* Test interpolation with previously set weights. */
+ TEST_ASSERT(ngram_model_set_interp(lmset, NULL, NULL));
+ TEST_EQUAL_LOG(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log(lmath,
+ 0.6 * pow(10, -2.7884)
+ + 0.4 * pow(10, -2.8192)));
+
+ /* Test interpolation with closed-vocabulary models and OOVs. */
+ lms[2] = ngram_model_read(NULL, LMDIR "/turtle.lm", NGRAM_ARPA, lmath);
+ TEST_ASSERT(ngram_model_set_add(lmset, lms[2], "turtle", 1.0, FALSE));
+ TEST_EQUAL_LOG(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log(lmath,
+ 0.6 * (2.0 / 3.0) * pow(10, -2.7884)
+ + 0.4 * (2.0 / 3.0) * pow(10, -2.8192)));
+ ngram_model_free(lmset);
+
+ /* Test adding and removing language models with preserved
+ * word ID mappings. */
+ lms[0] = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ lms[1] = ngram_model_read(NULL, LMDIR "/100_2.arpa.DMP", NGRAM_DMP, lmath);
+ lms[2] = ngram_model_read(NULL, LMDIR "/turtle.lm", NGRAM_ARPA, lmath);
+ lmset = ngram_model_set_init(NULL, lms, (char **)names, NULL, 1);
+ {
+ int32 wid;
+ wid = ngram_wid(lmset, "sphinxtrain");
+ TEST_ASSERT(ngram_model_set_add(lmset, lms[1], "100_2", 1.0, TRUE));
+ /* Verify that it is the same. */
+ TEST_EQUAL(wid, ngram_wid(lmset, "sphinxtrain"));
+ /* Now add another model and verify that its words
+ * don't actually get added. */
+ TEST_ASSERT(ngram_model_set_add(lmset, lms[2], "turtle", 1.0, TRUE));
+ TEST_EQUAL(wid, ngram_wid(lmset, "sphinxtrain"));
+ TEST_EQUAL(ngram_unknown_wid(lmset), ngram_wid(lmset, "FORWARD"));
+ /* Remove language model, make sure this doesn't break horribly. */
+ TEST_EQUAL(lms[1], ngram_model_set_remove(lmset, "100_2", TRUE));
+ ngram_model_free(lms[1]);
+ TEST_EQUAL(wid, ngram_wid(lmset, "sphinxtrain"));
+ /* Now enable remapping of word IDs and verify that it works. */
+ TEST_EQUAL(lms[2], ngram_model_set_remove(lmset, "turtle", TRUE));
+ TEST_ASSERT(ngram_model_set_add(lmset, lms[2], "turtle", 1.0, FALSE));
+ printf("FORWARD = %d\n", ngram_wid(lmset, "FORWARD"));
+ }
+
+ ngram_model_free(lmset);
+
+ /* Now test lmctl files. */
+ lmset = ngram_model_set_read(NULL, LMDIR "/100.lmctl", lmath);
+ TEST_ASSERT(lmset);
+ /* Test iterators. */
+ {
+ ngram_model_set_iter_t *itor;
+ ngram_model_t *lm;
+ char const *lmname;
+
+ itor = ngram_model_set_iter(lmset);
+ TEST_ASSERT(itor);
+ lm = ngram_model_set_iter_model(itor, &lmname);
+ printf("1: %s\n", lmname);
+ itor = ngram_model_set_iter_next(itor);
+ lm = ngram_model_set_iter_model(itor, &lmname);
+ printf("2: %s\n", lmname);
+ itor = ngram_model_set_iter_next(itor);
+ lm = ngram_model_set_iter_model(itor, &lmname);
+ printf("3: %s\n", lmname);
+ itor = ngram_model_set_iter_next(itor);
+ TEST_EQUAL(itor, NULL);
+ }
+
+ TEST_EQUAL(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log10_to_log(lmath, -2.7884));
+
+ TEST_ASSERT(ngram_model_set_interp(lmset, NULL, NULL));
+ TEST_EQUAL_LOG(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log(lmath,
+ (1.0 / 3.0) * pow(10, -2.7884)
+ + (1.0 / 3.0) * pow(10, -2.8192)));
+
+ ngram_model_set_select(lmset, "100_2");
+ TEST_EQUAL(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log10_to_log(lmath, -2.8192));
+ TEST_EQUAL(ngram_score(lmset, "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.1597));
+ TEST_EQUAL_LOG(ngram_score(lmset, "daines", "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.0512));
+
+ ngram_model_set_select(lmset, "100");
+ TEST_EQUAL(ngram_score(lmset, "sphinxtrain", NULL),
+ logmath_log10_to_log(lmath, -2.7884));
+ TEST_EQUAL(ngram_score(lmset, "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.0361));
+ TEST_EQUAL_LOG(ngram_score(lmset, "daines", "huggins", "david", NULL),
+ logmath_log10_to_log(lmath, -0.4105));
+
+ /* Test class probabilities. */
+ ngram_model_set_select(lmset, "100");
+ TEST_EQUAL_LOG(ngram_score(lmset, "scylla:scylla", NULL),
+ logmath_log10_to_log(lmath, -2.7884) + logmath_log(lmath, 0.4));
+ TEST_EQUAL_LOG(ngram_score(lmset, "scooby:scylla", NULL),
+ logmath_log10_to_log(lmath, -2.7884) + logmath_log(lmath, 0.1));
+ TEST_EQUAL_LOG(ngram_score(lmset, "apparently", "karybdis:scylla", NULL),
+ logmath_log10_to_log(lmath, -0.5172));
+
+ /* Test word ID mapping. */
+ ngram_model_set_select(lmset, "turtle");
+ TEST_EQUAL(ngram_wid(lmset, "ROBOMAN"),
+ ngram_wid(lmset, ngram_word(lmset, ngram_wid(lmset, "ROBOMAN"))));
+ TEST_EQUAL(ngram_wid(lmset, "bigbird"),
+ ngram_wid(lmset, ngram_word(lmset, ngram_wid(lmset, "bigbird"))));
+ TEST_EQUAL(ngram_wid(lmset, "quuxfuzz"), ngram_unknown_wid(lmset));
+ TEST_EQUAL(ngram_score(lmset, "quuxfuzz", NULL), ngram_zero(lmset));
+ ngram_model_set_map_words(lmset, words, n_words);
+ TEST_EQUAL(ngram_wid(lmset, "ROBOMAN"),
+ ngram_wid(lmset, ngram_word(lmset, ngram_wid(lmset, "ROBOMAN"))));
+ TEST_EQUAL(ngram_wid(lmset, "bigbird"),
+ ngram_wid(lmset, ngram_word(lmset, ngram_wid(lmset, "bigbird"))));
+ TEST_EQUAL(ngram_wid(lmset, "quuxfuzz"), 5);
+ TEST_EQUAL(ngram_score(lmset, "quuxfuzz", NULL), ngram_zero(lmset));
+
+ ngram_model_free(lmset);
+ logmath_free(lmath);
+ return 0;
+}
--- /dev/null
+#include <ngram_model.h>
+#include <logmath.h>
+#include <strfuncs.h>
+#include <err.h>
+
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static int
+test_lm_vals(ngram_model_t *model)
+{
+ int32 n_used;
+
+ TEST_ASSERT(model);
+ TEST_EQUAL(ngram_wid(model, "<UNK>"), 0);
+ TEST_EQUAL(strcmp(ngram_word(model, 0), "<UNK>"), 0);
+ TEST_EQUAL(ngram_wid(model, "absolute"), 13);
+ TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
+ /* Test unigrams. */
+ TEST_EQUAL_LOG(ngram_score(model, "<UNK>", NULL), -75346);
+ TEST_EQUAL_LOG(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+ NGRAM_INVALID_WID, &n_used), -75346);
+ TEST_EQUAL(n_used, 1);
+ TEST_EQUAL_LOG(ngram_score(model, "sphinxtrain", NULL), -64208);
+ TEST_EQUAL_LOG(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+ NGRAM_INVALID_WID, &n_used), -64208);
+ TEST_EQUAL(n_used, 1);
+ printf("FOO %d\n", ngram_score(model, "huggins", "david", NULL));
+ printf("FOO %d\n", ngram_score(model, "daines", "huggins", "david", NULL));
+ /* Test bigrams. */
+ TEST_EQUAL_LOG(ngram_score(model, "huggins", "david", NULL), -831);
+ /* Test trigrams. */
+ TEST_EQUAL_LOG(ngram_score(model, "daines", "huggins", "david", NULL), -9450);
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ logmath_t *lmath;
+ ngram_model_t *model;
+
+ /* Initialize a logmath object to pass to ngram_read */
+ lmath = logmath_init(1.0001, 0, 0);
+
+ /* Convert ARPA to DMP */
+ E_INFO("Converting ARPA to DMP\n");
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.bz2", NGRAM_ARPA, lmath);
+ test_lm_vals(model);
+ TEST_EQUAL(0, ngram_model_write(model, "100.tmp.DMP", NGRAM_DMP));
+ ngram_model_free(model);
+
+ /* Convert DMP to ARPA */
+ E_INFO("Converting DMP to ARPA\n");
+ model = ngram_model_read(NULL, LMDIR "/100.arpa.DMP", NGRAM_DMP, lmath);
+ test_lm_vals(model);
+ TEST_EQUAL(0, ngram_model_write(model, "100.tmp.arpa", NGRAM_ARPA));
+ ngram_model_free(model);
+
+ /* Test converted DMP */
+ E_INFO("Testing converted DMP\n");
+ model = ngram_model_read(NULL, "100.tmp.DMP", NGRAM_DMP, lmath);
+ test_lm_vals(model);
+ ngram_model_free(model);
+
+ /* Test converted ARPA */
+ E_INFO("Testing converted ARPA\n");
+ model = ngram_model_read(NULL, "100.tmp.arpa", NGRAM_ARPA, lmath);
+ test_lm_vals(model);
+ ngram_model_free(model);
+
+ /* Convert DMP back to ARPA*/
+ E_INFO("Converting ARPA back to DMP\n");
+ model = ngram_model_read(NULL, "100.tmp.arpa", NGRAM_ARPA, lmath);
+ test_lm_vals(model);
+ TEST_EQUAL(0, ngram_model_write(model, "100.tmp.DMP", NGRAM_DMP));
+ ngram_model_free(model);
+
+ /* Convert ARPA back to DMP */
+ E_INFO("Converting DMP back to ARPA\n");
+ model = ngram_model_read(NULL, "100.tmp.DMP", NGRAM_DMP, lmath);
+ test_lm_vals(model);
+ TEST_EQUAL(0, ngram_model_write(model, "100.tmp.arpa", NGRAM_ARPA));
+ ngram_model_free(model);
+
+ logmath_free(lmath);
+ return 0;
+}
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+Language model created by QuickLM on Wed Aug 4 14:21:56 EDT 1999
+Carnegie Mellon University (c) 1996
+
+This model based on a corpus of sentences and words
+The (fixed) discount mass is 0.5
+
+\data\
+ngram 1=91
+ngram 2=212
+ngram 3=177
+
+\1-grams:
+-0.9129 </s> -0.3010
+-0.9129 <s> -0.2144
+-2.6031 A -0.2999
+-2.6031 AND -0.2989
+-2.3021 ARE -0.2978
+-2.6031 AROUND -0.2444
+-2.3021 BACKWARD -0.2338
+-2.9042 BACKWARDS -0.2444
+-2.6031 BYE -0.2432
+-2.9042 CENTIMETER -0.2444
+-2.9042 CENTIMETERS -0.2444
+-2.9042 CHASE -0.2989
+-2.9042 COLOR -0.2999
+-1.9499 DEGREES -0.2444
+-2.6031 DISPLAY -0.2999
+-2.9042 DO -0.2983
+-2.9042 DOING -0.2444
+-2.9042 EIGHT -0.2444
+-2.9042 EIGHTEEN -0.2444
+-2.4271 EIGHTY -0.2388
+-2.9042 ELEVEN -0.2444
+-2.9042 EXIT -0.2444
+-2.9042 EXPLORE -0.2444
+-2.6031 FIFTEEN -0.2388
+-2.9042 FIFTY -0.2444
+-2.9042 FIND -0.2989
+-2.9042 FINISH -0.2444
+-2.1260 FIVE -0.2338
+-2.3021 FORTY -0.2407
+-2.0011 FORWARD -0.2281
+-2.9042 FOUR -0.2444
+-2.9042 FOURTEEN -0.2444
+-1.7001 GO -0.2923
+-2.9042 GREY -0.2999
+-2.9042 GUARD -0.2989
+-2.4271 HALF -0.2420
+-2.9042 HALL -0.2444
+-2.9042 HALLWAY -0.2444
+-2.9042 HALT -0.2444
+-2.9042 HELLO -0.2444
+-2.9042 HOME -0.2444
+-2.6031 HUNDRED -0.2432
+-2.9042 KEVIN -0.2444
+-2.6031 LAB -0.2444
+-2.2052 LEFT -0.2338
+-2.9042 LISTENING -0.2444
+-2.9042 LOST -0.2444
+-2.3021 METER -0.2444
+-2.0011 METERS -0.2444
+-2.6031 MINUS -0.2983
+-2.9042 NINE -0.2444
+-2.9042 NINETEEN -0.2444
+-2.4271 NINETY -0.2388
+-2.9042 OFFICE -0.2444
+-2.0011 ONE -0.2351
+-2.9042 PERSON -0.2444
+-2.4271 QUARTER -0.2444
+-2.9042 QUARTERS -0.2444
+-2.9042 QUIT -0.2444
+-2.9042 READY -0.2444
+-2.9042 REID -0.2444
+-2.1260 RIGHT -0.2325
+-2.9042 ROBOMAN -0.2444
+-2.9042 ROOM -0.2444
+-2.0591 ROTATE -0.2950
+-2.6031 SAY -0.2994
+-2.9042 SEBASTIAN -0.2444
+-2.6031 SEVEN -0.2395
+-2.9042 SEVENTEEN -0.2444
+-2.9042 SEVENTY -0.2444
+-2.9042 SIX -0.2444
+-2.9042 SIXTEEN -0.2444
+-2.9042 SIXTY -0.2444
+-2.9042 STOP -0.2444
+-2.4271 TEN -0.2338
+-2.3021 THE -0.2432
+-2.9042 THEN -0.2444
+-2.9042 THIRTEEN -0.2444
+-2.6031 THIRTY -0.2388
+-2.3021 THREE -0.2370
+-2.6031 TO -0.2420
+-2.9042 TOM -0.2444
+-2.2052 TURN -0.2939
+-2.9042 TWELVE -0.2444
+-2.9042 TWENTY -0.2444
+-2.4271 TWO -0.2395
+-2.9042 UNDERSTAND -0.2444
+-2.9042 WANDER -0.2999
+-2.9042 WHAT -0.2989
+-2.6031 WINDOW -0.2444
+-2.2052 YOU -0.2967
+
+\2-grams:
+-2.2923 <s> AND -0.1761
+-1.9912 <s> ARE -0.0969
+-2.2923 <s> CENTIMETER 0.0000
+-2.2923 <s> CENTIMETERS 0.0000
+-2.2923 <s> CHASE 0.0000
+-1.9912 <s> DISPLAY 0.0000
+-2.2923 <s> DO 0.0000
+-2.2923 <s> EIGHT 0.0000
+-2.2923 <s> EIGHTEEN 0.0000
+-2.2923 <s> EIGHTY -0.2218
+-2.2923 <s> ELEVEN 0.0000
+-2.2923 <s> EXIT 0.0000
+-2.2923 <s> EXPLORE 0.0000
+-2.2923 <s> FIFTEEN -0.1761
+-2.2923 <s> FIFTY 0.0000
+-2.2923 <s> FIND 0.0000
+-2.2923 <s> FINISH 0.0000
+-2.2923 <s> FIVE -0.2218
+-1.9912 <s> FORTY 0.0000
+-2.2923 <s> FOUR 0.0000
+-2.2923 <s> FOURTEEN 0.0000
+-1.0881 <s> GO 0.0000
+-2.2923 <s> GUARD 0.0000
+-2.2923 <s> HALF -0.1249
+-2.2923 <s> HALL 0.0000
+-2.2923 <s> HALLWAY 0.0000
+-2.2923 <s> HALT 0.0000
+-2.2923 <s> HUNDRED -0.1761
+-2.2923 <s> KEVIN 0.0000
+-2.2923 <s> LAB 0.0000
+-2.2923 <s> METER 0.0000
+-2.2923 <s> METERS 0.0000
+-2.2923 <s> NINE 0.0000
+-2.2923 <s> NINETEEN 0.0000
+-2.2923 <s> NINETY -0.2218
+-2.2923 <s> OFFICE 0.0000
+-1.8151 <s> ONE -0.1761
+-2.2923 <s> PERSON 0.0000
+-2.2923 <s> QUARTER 0.0000
+-2.2923 <s> QUIT 0.0000
+-2.2923 <s> REID 0.0000
+-2.2923 <s> ROBOMAN 0.0000
+-2.2923 <s> ROOM 0.0000
+-1.4472 <s> ROTATE 0.0000
+-1.9912 <s> SAY 0.0000
+-2.2923 <s> SEBASTIAN 0.0000
+-2.2923 <s> SEVEN -0.1761
+-2.2923 <s> SEVENTEEN 0.0000
+-2.2923 <s> SEVENTY 0.0000
+-2.2923 <s> SIX 0.0000
+-2.2923 <s> SIXTEEN 0.0000
+-2.2923 <s> SIXTY 0.0000
+-2.2923 <s> STOP 0.0000
+-2.2923 <s> TEN -0.2218
+-2.2923 <s> THIRTEEN 0.0000
+-2.2923 <s> THIRTY -0.1761
+-1.8151 <s> THREE -0.0969
+-2.2923 <s> TOM 0.0000
+-1.5933 <s> TURN 0.0000
+-2.2923 <s> TWELVE 0.0000
+-2.2923 <s> TWENTY 0.0000
+-2.2923 <s> TWO -0.2218
+-2.2923 <s> WANDER 0.0000
+-2.2923 <s> WHAT 0.0000
+-2.2923 <s> YOU -0.2553
+-0.6021 A COLOR 0.0000
+-0.6021 A GREY 0.0000
+-0.6021 AND EIGHTY -0.1249
+-0.6021 AND THEN 0.0000
+-0.9031 ARE LOST 0.0000
+-0.4260 ARE YOU -0.1461
+-0.3010 AROUND </s> -0.3010
+-0.9031 BACKWARD </s> -0.3010
+-0.9031 BACKWARD FIVE -0.2218
+-0.9031 BACKWARD ONE -0.2430
+-0.9031 BACKWARD TWO -0.1249
+-0.3010 BACKWARDS </s> -0.3010
+-0.6021 BYE </s> -0.3010
+-0.6021 BYE BYE -0.1761
+-0.3010 CENTIMETER </s> -0.3010
+-0.3010 CENTIMETERS </s> -0.3010
+-0.3010 CHASE THE -0.0969
+-0.3010 COLOR WINDOW 0.0000
+-0.3010 DEGREES </s> -0.3010
+-0.3010 DISPLAY A 0.0000
+-0.3010 DO YOU -0.2553
+-0.3010 DOING </s> -0.3010
+-0.3010 EIGHT </s> -0.3010
+-0.3010 EIGHTEEN </s> -0.3010
+-0.7782 EIGHTY </s> -0.3010
+-0.4771 EIGHTY DEGREES 0.0000
+-0.3010 ELEVEN </s> -0.3010
+-0.3010 EXIT </s> -0.3010
+-0.3010 EXPLORE </s> -0.3010
+-0.6021 FIFTEEN </s> -0.3010
+-0.6021 FIFTEEN DEGREES 0.0000
+-0.3010 FIFTY </s> -0.3010
+-0.3010 FIND THE -0.0969
+-0.3010 FINISH </s> -0.3010
+-0.7782 FIVE </s> -0.3010
+-0.7782 FIVE DEGREES 0.0000
+-0.7782 FIVE METERS 0.0000
+-0.9031 FORTY </s> -0.3010
+-0.4260 FORTY FIVE -0.1249
+-1.2041 FORWARD </s> -0.3010
+-1.2041 FORWARD FIVE -0.2218
+-0.9031 FORWARD ONE -0.1761
+-1.2041 FORWARD SEVEN -0.1761
+-1.2041 FORWARD TEN -0.2218
+-1.2041 FORWARD THREE -0.2430
+-1.2041 FORWARD TWO -0.1249
+-0.3010 FOUR </s> -0.3010
+-0.3010 FOURTEEN </s> -0.3010
+-0.9031 GO BACKWARD 0.0000
+-1.5051 GO BACKWARDS 0.0000
+-0.6021 GO FORWARD 0.0000
+-1.5051 GO HOME 0.0000
+-1.2041 GO TO 0.0000
+-0.3010 GREY WINDOW 0.0000
+-0.3010 GUARD THE -0.0969
+-0.4771 HALF </s> -0.3010
+-0.7782 HALF METER 0.0000
+-0.3010 HALL </s> -0.3010
+-0.3010 HALLWAY </s> -0.3010
+-0.3010 HALT </s> -0.3010
+-0.3010 HELLO </s> -0.3010
+-0.3010 HOME </s> -0.3010
+-0.6021 HUNDRED </s> -0.3010
+-0.6021 HUNDRED AND -0.1761
+-0.3010 KEVIN </s> -0.3010
+-0.3010 LAB </s> -0.3010
+-1.0000 LEFT </s> -0.3010
+-1.0000 LEFT FORTY -0.0969
+-1.0000 LEFT MINUS -0.1761
+-1.0000 LEFT NINETY -0.1249
+-1.0000 LEFT ONE -0.2730
+-0.3010 LISTENING </s> -0.3010
+-0.3010 LOST </s> -0.3010
+-0.3010 METER </s> -0.3010
+-0.3010 METERS </s> -0.3010
+-0.6021 MINUS NINETY -0.1249
+-0.6021 MINUS THIRTY -0.1761
+-0.3010 NINE </s> -0.3010
+-0.3010 NINETEEN </s> -0.3010
+-0.7782 NINETY </s> -0.3010
+-0.4771 NINETY DEGREES 0.0000
+-0.3010 OFFICE </s> -0.3010
+-1.2041 ONE </s> -0.3010
+-1.2041 ONE EIGHTY -0.1249
+-0.9031 ONE HALF 0.0000
+-1.2041 ONE HUNDRED -0.1761
+-0.9031 ONE METER 0.0000
+-1.2041 ONE QUARTER 0.0000
+-0.3010 PERSON </s> -0.3010
+-0.3010 QUARTER </s> -0.3010
+-0.3010 QUARTERS </s> -0.3010
+-0.3010 QUIT </s> -0.3010
+-0.3010 READY </s> -0.3010
+-0.3010 REID </s> -0.3010
+-1.0792 RIGHT </s> -0.3010
+-1.0792 RIGHT FIFTEEN -0.1761
+-1.0792 RIGHT FORTY -0.0969
+-1.0792 RIGHT MINUS -0.1761
+-1.0792 RIGHT ONE -0.2730
+-1.0792 RIGHT TEN -0.2218
+-0.3010 ROBOMAN </s> -0.3010
+-0.3010 ROOM </s> -0.3010
+-0.6690 ROTATE LEFT -0.1461
+-0.5441 ROTATE RIGHT -0.1249
+-0.6021 SAY BYE -0.1761
+-0.6021 SAY HELLO 0.0000
+-0.3010 SEBASTIAN </s> -0.3010
+-0.6021 SEVEN </s> -0.3010
+-0.6021 SEVEN METERS 0.0000
+-0.3010 SEVENTEEN </s> -0.3010
+-0.3010 SEVENTY </s> -0.3010
+-0.3010 SIX </s> -0.3010
+-0.3010 SIXTEEN </s> -0.3010
+-0.3010 SIXTY </s> -0.3010
+-0.3010 STOP </s> -0.3010
+-0.7782 TEN </s> -0.3010
+-0.7782 TEN DEGREES 0.0000
+-0.7782 TEN METERS 0.0000
+-0.4260 THE </s> -0.3010
+-0.9031 THE LAB 0.0000
+-0.3010 THEN </s> -0.3010
+-0.3010 THIRTEEN </s> -0.3010
+-0.6021 THIRTY </s> -0.3010
+-0.6021 THIRTY DEGREES 0.0000
+-0.9031 THREE </s> -0.3010
+-0.9031 THREE METERS 0.0000
+-0.9031 THREE QUARTER 0.0000
+-0.9031 THREE QUARTERS 0.0000
+-0.6021 TO </s> -0.3010
+-0.6021 TO THE -0.2430
+-0.3010 TOM </s> -0.3010
+-1.0000 TURN AROUND 0.0000
+-0.6990 TURN LEFT -0.2041
+-0.6990 TURN RIGHT -0.2218
+-0.3010 TWELVE </s> -0.3010
+-0.3010 TWENTY </s> -0.3010
+-0.7782 TWO </s> -0.3010
+-0.4771 TWO METERS 0.0000
+-0.3010 UNDERSTAND </s> -0.3010
+-0.3010 WANDER AROUND 0.0000
+-0.3010 WHAT ARE -0.0969
+-0.3010 WINDOW </s> -0.3010
+-1.0000 YOU ARE -0.2430
+-1.0000 YOU DOING 0.0000
+-1.0000 YOU LISTENING 0.0000
+-1.0000 YOU READY 0.0000
+-1.0000 YOU UNDERSTAND 0.0000
+
+\3-grams:
+-0.3010 <s> AND THEN
+-0.3010 <s> ARE YOU
+-0.3010 <s> CENTIMETER </s>
+-0.3010 <s> CENTIMETERS </s>
+-0.3010 <s> CHASE THE
+-0.3010 <s> DISPLAY A
+-0.3010 <s> DO YOU
+-0.3010 <s> EIGHT </s>
+-0.3010 <s> EIGHTEEN </s>
+-0.3010 <s> EIGHTY </s>
+-0.3010 <s> ELEVEN </s>
+-0.3010 <s> EXIT </s>
+-0.3010 <s> EXPLORE </s>
+-0.3010 <s> FIFTEEN </s>
+-0.3010 <s> FIFTY </s>
+-0.3010 <s> FIND THE
+-0.3010 <s> FINISH </s>
+-0.3010 <s> FIVE </s>
+-0.6021 <s> FORTY </s>
+-0.6021 <s> FORTY FIVE
+-0.3010 <s> FOUR </s>
+-0.3010 <s> FOURTEEN </s>
+-0.9031 <s> GO BACKWARD
+-1.5051 <s> GO BACKWARDS
+-0.6021 <s> GO FORWARD
+-1.5051 <s> GO HOME
+-1.2041 <s> GO TO
+-0.3010 <s> GUARD THE
+-0.3010 <s> HALF </s>
+-0.3010 <s> HALL </s>
+-0.3010 <s> HALLWAY </s>
+-0.3010 <s> HALT </s>
+-0.3010 <s> HUNDRED </s>
+-0.3010 <s> KEVIN </s>
+-0.3010 <s> LAB </s>
+-0.3010 <s> METER </s>
+-0.3010 <s> METERS </s>
+-0.3010 <s> NINE </s>
+-0.3010 <s> NINETEEN </s>
+-0.3010 <s> NINETY </s>
+-0.3010 <s> OFFICE </s>
+-0.7782 <s> ONE </s>
+-0.7782 <s> ONE HALF
+-0.7782 <s> ONE QUARTER
+-0.3010 <s> PERSON </s>
+-0.3010 <s> QUARTER </s>
+-0.3010 <s> QUIT </s>
+-0.3010 <s> REID </s>
+-0.3010 <s> ROBOMAN </s>
+-0.3010 <s> ROOM </s>
+-0.6690 <s> ROTATE LEFT
+-0.5441 <s> ROTATE RIGHT
+-0.6021 <s> SAY BYE
+-0.6021 <s> SAY HELLO
+-0.3010 <s> SEBASTIAN </s>
+-0.3010 <s> SEVEN </s>
+-0.3010 <s> SEVENTEEN </s>
+-0.3010 <s> SEVENTY </s>
+-0.3010 <s> SIX </s>
+-0.3010 <s> SIXTEEN </s>
+-0.3010 <s> SIXTY </s>
+-0.3010 <s> STOP </s>
+-0.3010 <s> TEN </s>
+-0.3010 <s> THIRTEEN </s>
+-0.3010 <s> THIRTY </s>
+-0.7782 <s> THREE </s>
+-0.7782 <s> THREE QUARTER
+-0.7782 <s> THREE QUARTERS
+-0.3010 <s> TOM </s>
+-1.0000 <s> TURN AROUND
+-0.6990 <s> TURN LEFT
+-0.6990 <s> TURN RIGHT
+-0.3010 <s> TWELVE </s>
+-0.3010 <s> TWENTY </s>
+-0.3010 <s> TWO </s>
+-0.3010 <s> WANDER AROUND
+-0.3010 <s> WHAT ARE
+-0.3010 <s> YOU ARE
+-0.3010 A COLOR WINDOW
+-0.3010 A GREY WINDOW
+-0.3010 AND EIGHTY DEGREES
+-0.3010 AND THEN </s>
+-0.3010 ARE LOST </s>
+-0.7782 ARE YOU DOING
+-0.7782 ARE YOU LISTENING
+-0.7782 ARE YOU READY
+-0.3010 BACKWARD FIVE METERS
+-0.3010 BACKWARD ONE METER
+-0.3010 BACKWARD TWO METERS
+-0.3010 BYE BYE </s>
+-0.3010 CHASE THE </s>
+-0.3010 COLOR WINDOW </s>
+-0.6021 DISPLAY A COLOR
+-0.6021 DISPLAY A GREY
+-0.3010 DO YOU UNDERSTAND
+-0.3010 EIGHTY DEGREES </s>
+-0.3010 FIFTEEN DEGREES </s>
+-0.3010 FIND THE </s>
+-0.3010 FIVE DEGREES </s>
+-0.3010 FIVE METERS </s>
+-0.7782 FORTY FIVE </s>
+-0.4771 FORTY FIVE DEGREES
+-0.3010 FORWARD FIVE METERS
+-0.6021 FORWARD ONE HALF
+-0.6021 FORWARD ONE METER
+-0.3010 FORWARD SEVEN METERS
+-0.3010 FORWARD TEN METERS
+-0.3010 FORWARD THREE METERS
+-0.3010 FORWARD TWO METERS
+-0.9031 GO BACKWARD </s>
+-0.9031 GO BACKWARD FIVE
+-0.9031 GO BACKWARD ONE
+-0.9031 GO BACKWARD TWO
+-0.3010 GO BACKWARDS </s>
+-1.2041 GO FORWARD </s>
+-1.2041 GO FORWARD FIVE
+-0.9031 GO FORWARD ONE
+-1.2041 GO FORWARD SEVEN
+-1.2041 GO FORWARD TEN
+-1.2041 GO FORWARD THREE
+-1.2041 GO FORWARD TWO
+-0.3010 GO HOME </s>
+-0.6021 GO TO </s>
+-0.6021 GO TO THE
+-0.3010 GREY WINDOW </s>
+-0.3010 GUARD THE </s>
+-0.3010 HALF METER </s>
+-0.3010 HUNDRED AND EIGHTY
+-0.3010 LEFT FORTY FIVE
+-0.3010 LEFT MINUS NINETY
+-0.3010 LEFT NINETY DEGREES
+-0.3010 LEFT ONE EIGHTY
+-0.3010 MINUS NINETY DEGREES
+-0.3010 MINUS THIRTY DEGREES
+-0.3010 NINETY DEGREES </s>
+-0.3010 ONE EIGHTY DEGREES
+-0.6021 ONE HALF </s>
+-0.6021 ONE HALF METER
+-0.3010 ONE HUNDRED AND
+-0.3010 ONE METER </s>
+-0.3010 ONE QUARTER </s>
+-0.3010 RIGHT FIFTEEN DEGREES
+-0.3010 RIGHT FORTY FIVE
+-0.3010 RIGHT MINUS THIRTY
+-0.3010 RIGHT ONE HUNDRED
+-0.3010 RIGHT TEN DEGREES
+-0.7782 ROTATE LEFT FORTY
+-0.7782 ROTATE LEFT MINUS
+-0.7782 ROTATE LEFT ONE
+-0.9031 ROTATE RIGHT FIFTEEN
+-0.9031 ROTATE RIGHT MINUS
+-0.9031 ROTATE RIGHT ONE
+-0.9031 ROTATE RIGHT TEN
+-0.3010 SAY BYE BYE
+-0.3010 SAY HELLO </s>
+-0.3010 SEVEN METERS </s>
+-0.3010 TEN DEGREES </s>
+-0.3010 TEN METERS </s>
+-0.3010 THE LAB </s>
+-0.3010 THIRTY DEGREES </s>
+-0.3010 THREE METERS </s>
+-0.3010 THREE QUARTER </s>
+-0.3010 THREE QUARTERS </s>
+-0.3010 TO THE LAB
+-0.3010 TURN AROUND </s>
+-0.6021 TURN LEFT </s>
+-0.6021 TURN LEFT NINETY
+-0.6021 TURN RIGHT </s>
+-0.6021 TURN RIGHT FORTY
+-0.3010 TWO METERS </s>
+-0.3010 WANDER AROUND </s>
+-0.3010 WHAT ARE YOU
+-0.3010 YOU ARE LOST
+-0.3010 YOU DOING </s>
+-0.3010 YOU LISTENING </s>
+-0.3010 YOU READY </s>
+-0.3010 YOU UNDERSTAND </s>
+
+\end\
--- /dev/null
+This is an ARPA-format language model file, generated by CMU Sphinx
+\data\
+ngram 1=91
+
+\1-grams:
+-0.9128 </s>
+-0.9128 <s>
+-2.6030 A
+-2.6030 AND
+-2.3020 ARE
+-2.6030 AROUND
+-2.3020 BACKWARD
+-2.9042 BACKWARDS
+-2.6030 BYE
+-2.9042 CENTIMETER
+-2.9042 CENTIMETERS
+-2.9042 CHASE
+-2.9042 COLOR
+-1.9499 DEGREES
+-2.6030 DISPLAY
+-2.9042 DO
+-2.9042 DOING
+-2.9042 EIGHT
+-2.9042 EIGHTEEN
+-2.4271 EIGHTY
+-2.9042 ELEVEN
+-2.9042 EXIT
+-2.9042 EXPLORE
+-2.6030 FIFTEEN
+-2.9042 FIFTY
+-2.9042 FIND
+-2.9042 FINISH
+-2.1259 FIVE
+-2.3020 FORTY
+-2.0011 FORWARD
+-2.9042 FOUR
+-2.9042 FOURTEEN
+-1.7000 GO
+-2.9042 GREY
+-2.9042 GUARD
+-2.4271 HALF
+-2.9042 HALL
+-2.9042 HALLWAY
+-2.9042 HALT
+-2.9042 HELLO
+-2.9042 HOME
+-2.6030 HUNDRED
+-2.9042 KEVIN
+-2.6030 LAB
+-2.2052 LEFT
+-2.9042 LISTENING
+-2.9042 LOST
+-2.3020 METER
+-2.0011 METERS
+-2.6030 MINUS
+-2.9042 NINE
+-2.9042 NINETEEN
+-2.4271 NINETY
+-2.9042 OFFICE
+-2.0011 ONE
+-2.9042 PERSON
+-2.4271 QUARTER
+-2.9042 QUARTERS
+-2.9042 QUIT
+-2.9042 READY
+-2.9042 REID
+-2.1259 RIGHT
+-2.9042 ROBOMAN
+-2.9042 ROOM
+-2.0590 ROTATE
+-2.6030 SAY
+-2.9042 SEBASTIAN
+-2.6030 SEVEN
+-2.9042 SEVENTEEN
+-2.9042 SEVENTY
+-2.9042 SIX
+-2.9042 SIXTEEN
+-2.9042 SIXTY
+-2.9042 STOP
+-2.4271 TEN
+-2.3020 THE
+-2.9042 THEN
+-2.9042 THIRTEEN
+-2.6030 THIRTY
+-2.3020 THREE
+-2.6030 TO
+-2.9042 TOM
+-2.2052 TURN
+-2.9042 TWELVE
+-2.9042 TWENTY
+-2.4271 TWO
+-2.9042 UNDERSTAND
+-2.9042 WANDER
+-2.9042 WHAT
+-2.6030 WINDOW
+-2.2052 YOU
+
+\end\
--- /dev/null
+check_PROGRAMS = strtest test_atof
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(srcdir)\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+TESTS = _fread_line.test \
+ _nextword.test \
+ _str2words.test \
+ _string_join.test \
+ _string_trim.test \
+ test_atof
+
+EXTRA_DIST = _fread_line.txt \
+ _fread_line.test \
+ _nextword.test \
+ _str2words.test \
+ _string_join.test \
+ _string_trim.test
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = strtest$(EXEEXT) test_atof$(EXEEXT)
+TESTS = _fread_line.test _nextword.test _str2words.test \
+ _string_join.test _string_trim.test test_atof$(EXEEXT)
+subdir = test/unit/test_string
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+strtest_SOURCES = strtest.c
+strtest_OBJECTS = strtest.$(OBJEXT)
+strtest_LDADD = $(LDADD)
+strtest_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_atof_SOURCES = test_atof.c
+test_atof_OBJECTS = test_atof.$(OBJEXT)
+test_atof_LDADD = $(LDADD)
+test_atof_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = strtest.c test_atof.c
+DIST_SOURCES = strtest.c test_atof.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(srcdir)\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+EXTRA_DIST = _fread_line.txt \
+ _fread_line.test \
+ _nextword.test \
+ _str2words.test \
+ _string_join.test \
+ _string_trim.test
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_string/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_string/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+strtest$(EXEEXT): $(strtest_OBJECTS) $(strtest_DEPENDENCIES)
+ @rm -f strtest$(EXEEXT)
+ $(LINK) $(strtest_OBJECTS) $(strtest_LDADD) $(LIBS)
+test_atof$(EXEEXT): $(test_atof_OBJECTS) $(test_atof_DEPENDENCIES)
+ @rm -f test_atof$(EXEEXT)
+ $(LINK) $(test_atof_OBJECTS) $(test_atof_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_atof.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#!/bin/sh
+exec ./strtest fread_line
--- /dev/null
+Hello world!
+123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
+All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy.
--- /dev/null
+#!/bin/sh
+exec ./strtest nextword
--- /dev/null
+#!/bin/sh
+exec ./strtest str2words
--- /dev/null
+#!/bin/sh
+exec ./strtest string_join
--- /dev/null
+#!/bin/sh
+exec ./strtest string_trim
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "strfuncs.h"
+#include "pio.h"
+#include "ckd_alloc.h"
+
+int
+main(int argc, char *argv[])
+{
+ if (argc < 2)
+ return 1;
+
+ if (!strcmp(argv[1], "string_join")) {
+ char *foo = string_join("bar", "baz", "quux", NULL);
+ if (strcmp(foo, "barbazquux") != 0) {
+ printf("%s != barbazquux\n", foo);
+ return 1;
+ }
+ foo = string_join("hello", NULL);
+ if (strcmp(foo, "hello") != 0) {
+ printf("%s != hello\n", foo);
+ return 1;
+ }
+ return 0;
+ }
+ else if (!strcmp(argv[1], "fread_line")) {
+ FILE *fp = fopen(TESTDATADIR "/_fread_line.txt", "r");
+ char *line;
+ size_t len;
+
+ if (fp == NULL) {
+ perror("Failed to open " TESTDATADIR "/_fread_line.txt");
+ return 1;
+ }
+ line = fread_line(fp, &len);
+ printf("len = %d orig = %d\n", len,
+ strlen("Hello world!\n"));
+ if (strcmp(line, "Hello world!\n") != 0) {
+ printf("'%s' != 'Hello world!\\n'\n", line);
+ return 1;
+ }
+ ckd_free(line);
+ line = fread_line(fp, &len);
+ /* A line of exactly 127 characters. */
+ printf("len = %d orig = %d\n", len,
+ strlen("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\n"));
+ if (strcmp(line, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\n") != 0) {
+ printf("'%s' != '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\\n'\n", line);
+ return 1;
+ }
+ ckd_free(line);
+ /* A very long line. */
+ line = fread_line(fp, &len);
+ printf("len = %d orig = %d\n", len,
+ strlen("All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. \n"));
+ if (strcmp(line, "All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. \n") != 0) {
+ printf("'%s' != 'All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. All work and no play makes Jack a very dull boy. \\n'\n", line);
+ return 1;
+ }
+ ckd_free(line);
+ line = fread_line(fp, &len);
+ if (line != NULL) {
+ printf("%p != NULL\n", line);
+ return 1;
+ }
+ }
+ else if (!strcmp(argv[1], "string_trim")) {
+ char *foo = ckd_salloc("\t foo bar baz \n");
+ string_trim(foo, STRING_BOTH);
+ if (strcmp(foo, "foo bar baz") != 0) {
+ printf("'%s' != 'foo bar baz'\n", foo);
+ return 1;
+ }
+ string_trim(foo, STRING_BOTH);
+ if (strcmp(foo, "foo bar baz") != 0) {
+ printf("'%s' != 'foo bar baz'\n", foo);
+ return 1;
+ }
+ strcpy(foo, "foo\nbar\n\n");
+ string_trim(foo, STRING_END);
+ if (strcmp(foo, "foo\nbar") != 0) {
+ printf("'%s' != 'foo\\nbar'\n", foo);
+ return 1;
+ }
+ strcpy(foo, " \t \t foobar\n");
+ string_trim(foo, STRING_START);
+ if (strcmp(foo, "foobar\n") != 0) {
+ printf("'%s' != 'foobar\\n'\n", foo);
+ return 1;
+ }
+ }
+ else if (!strcmp(argv[1], "str2words")) {
+ char *line = strdup(" foo bar baz argh");
+ char **words;
+ int n;
+
+ n = str2words(line, NULL, 0);
+ if (n != 4) {
+ printf("%d != 4\n", n);
+ return 1;
+ }
+ words = ckd_calloc(n, sizeof(*words));
+ n = str2words(line, words, n);
+ if (n != 4) {
+ printf("%d != 4\n", n);
+ return 1;
+ }
+ if (strcmp(words[0], "foo") != 0
+ || strcmp(words[1], "bar") != 0
+ || strcmp(words[2], "baz") != 0
+ || strcmp(words[3], "argh") != 0) {
+ printf("%s, %s, %s, %s != foo, bar, baz, argh\n",
+ words[0], words[1], words[2], words[3]);
+ return 1;
+ }
+ return 0;
+ }
+ else if (!strcmp(argv[1], "nextword")) {
+ char *line = strdup(" \tfoo bar\nbaz argh");
+ char *word;
+ const char *delim = " \t\n";
+ char delimfound;
+ int n;
+
+ n = nextword(line, delim, &word, &delimfound);
+ if (strcmp(word, "foo") != 0) {
+ printf("%s != foo\n", word);
+ return 1;
+ }
+ if (delimfound != ' ') {
+ printf("didn't find ' '\n");
+ return 1;
+ }
+ word[n] = delimfound;
+ line = word + n;
+ n = nextword(line, delim, &word, &delimfound);
+ if (strcmp(word, "bar") != 0) {
+ printf("%s != bar\n", word);
+ return 1;
+ }
+ if (delimfound != '\n') {
+ printf("didn't find '\\n'\n");
+ return 1;
+ }
+ word[n] = delimfound;
+ line = word + n;
+ n = nextword(line, delim, &word, &delimfound);
+ if (strcmp(word, "baz") != 0) {
+ printf("%s != baz\n", word);
+ return 1;
+ }
+ if (delimfound != ' ') {
+ printf("didn't find ' '\n");
+ return 1;
+ }
+ word[n] = delimfound;
+ line = word + n;
+ n = nextword(line, delim, &word, &delimfound);
+ if (strcmp(word, "argh") != 0) {
+ printf("%s != argh\n", word);
+ return 1;
+ }
+ if (delimfound != '\0') {
+ printf("didn't find NUL\n");
+ return 1;
+ }
+ word[n] = delimfound;
+ line = word + n;
+ n = nextword(line, delim, &word, &delimfound);
+ if (n != -1) {
+ printf("didn't get -1 at end of string\n");
+ }
+
+ line = strdup("FOO!");
+ n = nextword(line, delim, &word, &delimfound);
+ if (strcmp(word, "FOO!") != 0) {
+ printf("%s != FOO!\n", word);
+ return 1;
+ }
+ if (delimfound != '\0') {
+ printf("didn't find NUL\n");
+ return 1;
+ }
+
+ return 0;
+ }
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <locale.h>
+#include <stdlib.h>
+
+#include "strfuncs.h"
+
+int
+main(int argc, char *argv[])
+{
+ double foo;
+
+ /* Ensure that it's really locale-independent. */
+ if (setlocale(LC_ALL, "fr_CA.UTF-8") == NULL)
+ fprintf(stderr, "Note: setlocale(LC_ALL, fr_CA.UTF-8) failed\n");
+
+ foo = atof("1.5324523524523423");
+ printf("atof(): 1.5324523524523423 %f\n", foo);
+
+ foo = atof_c("1.5324523524523423");
+ printf("1.5324523524523423 %f\n", foo);
+ if (fabs(foo - 1.532) > 0.01)
+ return 1;
+
+ foo = atof_c("5e-3");
+ printf("5e-3 %f\n", foo);
+ if (fabs(foo - 0.005) > 0.01)
+ return 1;
+
+ foo = atof_c("1.2e+2");
+ printf("1.2e+2 %f\n", foo);
+ if (fabs(foo - 120.0) > 0.01)
+ return 1;
+
+ foo = atof_c("1e-80");
+ printf("1e-80 %g\n", foo);
+
+ return 0;
+}
--- /dev/null
+check_PROGRAMS = \
+ test_thread \
+ test_tls_log \
+ test_event \
+ test_msgq
+
+TESTS = $(check_PROGRAMS)
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+noinst_HEADERS = test_macros.h
+
+CLEANFILES = *.log
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_thread$(EXEEXT) test_tls_log$(EXEEXT) \
+ test_event$(EXEEXT) test_msgq$(EXEEXT)
+subdir = test/unit/test_thread
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_event_SOURCES = test_event.c
+test_event_OBJECTS = test_event.$(OBJEXT)
+test_event_LDADD = $(LDADD)
+test_event_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_msgq_SOURCES = test_msgq.c
+test_msgq_OBJECTS = test_msgq.$(OBJEXT)
+test_msgq_LDADD = $(LDADD)
+test_msgq_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_thread_SOURCES = test_thread.c
+test_thread_OBJECTS = test_thread.$(OBJEXT)
+test_thread_LDADD = $(LDADD)
+test_thread_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_tls_log_SOURCES = test_tls_log.c
+test_tls_log_OBJECTS = test_tls_log.$(OBJEXT)
+test_tls_log_LDADD = $(LDADD)
+test_tls_log_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_event.c test_msgq.c test_thread.c test_tls_log.c
+DIST_SOURCES = test_event.c test_msgq.c test_thread.c test_tls_log.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = $(check_PROGRAMS)
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+noinst_HEADERS = test_macros.h
+CLEANFILES = *.log
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_thread/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_thread/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_event$(EXEEXT): $(test_event_OBJECTS) $(test_event_DEPENDENCIES)
+ @rm -f test_event$(EXEEXT)
+ $(LINK) $(test_event_OBJECTS) $(test_event_LDADD) $(LIBS)
+test_msgq$(EXEEXT): $(test_msgq_OBJECTS) $(test_msgq_DEPENDENCIES)
+ @rm -f test_msgq$(EXEEXT)
+ $(LINK) $(test_msgq_OBJECTS) $(test_msgq_LDADD) $(LIBS)
+test_thread$(EXEEXT): $(test_thread_OBJECTS) $(test_thread_DEPENDENCIES)
+ @rm -f test_thread$(EXEEXT)
+ $(LINK) $(test_thread_OBJECTS) $(test_thread_LDADD) $(LIBS)
+test_tls_log$(EXEEXT): $(test_tls_log_OBJECTS) $(test_tls_log_DEPENDENCIES)
+ @rm -f test_tls_log$(EXEEXT)
+ $(LINK) $(test_tls_log_OBJECTS) $(test_tls_log_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_msgq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_thread.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tls_log.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+#include <stdio.h>
+#include <sbthread.h>
+#include <err.h>
+
+int
+worker_main(sbthread_t *th)
+{
+ sbevent_t *cond;
+
+ cond = sbthread_arg(th);
+
+ /* Get the first signal. */
+ sbevent_wait(cond, -1, -1);
+ E_INFO("Got signal\n");
+
+ /* Now wait a while and exit. */
+ sbevent_wait(cond, 1, 500*1000*1000);
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ sbthread_t *worker;
+ sbevent_t *cond;
+
+ cond = sbevent_init();
+ worker = sbthread_start(NULL, worker_main, cond);
+
+ E_INFO("Signalling condition\n");
+ sbevent_signal(cond);
+
+ E_INFO("Waiting (about 1.5 sec) for thread termination\n");
+ sbthread_free(worker);
+ sbevent_free(cond);
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+#include <stdio.h>
+#include <sbthread.h>
+#include <err.h>
+
+int
+worker_main(sbthread_t *th)
+{
+ sbmsgq_t *msgq;
+ void *data;
+ size_t len;
+
+ msgq = sbthread_msgq(th);
+ while ((data = sbmsgq_wait(msgq, &len, -1, -1)) != NULL) {
+ int msg = *(int *)data;
+ E_INFO("Got message: %d\n", msg);
+ if (msg == 32)
+ break;
+ }
+
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ sbthread_t *worker;
+ int i;
+
+ worker = sbthread_start(NULL, worker_main, NULL);
+ for (i = 0; i <= 32; ++i) {
+ int ii[128];
+ E_INFO("Sending message: %d\n", i);
+ ii[0] = i;
+ if (sbthread_send(worker, sizeof(ii), &ii) < 0) {
+ E_ERROR("sbthread_send failed\n");
+ return 1;
+ }
+ }
+ sbthread_free(worker);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include <sbthread.h>
+#include <fe.h>
+#include <ckd_alloc.h>
+#include <err.h>
+
+static const arg_t fe_args[] = {
+ waveform_to_cepstral_command_line_macro(),
+ { NULL, 0, NULL, NULL }
+};
+
+static int
+process(sbthread_t *th)
+{
+ FILE *raw;
+ int16 *buf;
+ mfcc_t **cepbuf;
+ size_t nsamps;
+ fe_t *fe;
+ long fsize;
+ int32 nfr;
+
+ if ((fe = fe_init_auto_r(sbthread_config(th))) == NULL)
+ return -1;
+
+ if ((raw = fopen(TESTDATADIR "/chan3.raw", "rb")) == NULL)
+ return -1;
+ fseek(raw, 0, SEEK_END);
+ fsize = ftell(raw);
+ fseek(raw, 0, SEEK_SET);
+ buf = ckd_malloc(fsize);
+ fread(buf, 1, fsize, raw);
+ nsamps = fsize / 2;
+
+ fe_process_utt(fe, buf, nsamps, &cepbuf, &nfr);
+ E_INFO("nfr = %d\n", nfr);
+ fe_free_2d(cepbuf);
+ ckd_free(buf);
+ fclose(raw);
+ fe_free(fe);
+
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ sbthread_t *threads[10];
+ cmd_ln_t *config;
+ int i;
+
+ E_INFO("Processing chan3.raw in 10 threads\n");
+ if ((config = cmd_ln_parse_r(NULL, fe_args, 0, NULL, FALSE)) == NULL)
+ return -1;
+ for (i = 0; i < 10; ++i) {
+ config = cmd_ln_retain(config);
+ threads[i] = sbthread_start(config, process, NULL);
+ }
+ for (i = 0; i < 10; ++i) {
+ int rv;
+ rv = sbthread_wait(threads[i]);
+ E_INFO("Thread %d exited with status %d\n", i, rv);
+ sbthread_free(threads[i]);
+ }
+ cmd_ln_free_r(config);
+ return 0;
+}
--- /dev/null
+#include <string.h>
+#include <stdio.h>
+#include <sbthread.h>
+#include <strfuncs.h>
+#include <fe.h>
+#include <ckd_alloc.h>
+#include <err.h>
+
+#include "test_macros.h"
+
+static const arg_t fe_args[] = {
+ waveform_to_cepstral_command_line_macro(),
+ { NULL, 0, NULL, NULL }
+};
+
+static int
+process(sbthread_t *th)
+{
+ FILE *raw, *logfh;
+ int16 *buf;
+ mfcc_t **cepbuf;
+ size_t nsamps;
+ fe_t *fe;
+ long fsize;
+ int32 nfr;
+ char outfile[16];
+
+ sprintf(outfile, "%03ld.log", (long)sbthread_arg(th));
+ if ((logfh = fopen(outfile, "w")) == NULL)
+ return -1;
+ err_set_logfp(logfh);
+ if ((fe = fe_init_auto_r(sbthread_config(th))) == NULL)
+ return -1;
+ if ((raw = fopen(TESTDATADIR "/chan3.raw", "rb")) == NULL)
+ return -1;
+ fseek(raw, 0, SEEK_END);
+ fsize = ftell(raw);
+ fseek(raw, 0, SEEK_SET);
+ buf = ckd_malloc(fsize);
+ fread(buf, 1, fsize, raw);
+ nsamps = fsize / 2;
+
+ fe_process_utt(fe, buf, nsamps, &cepbuf, &nfr);
+ E_INFO("nfr = %d\n", nfr);
+ fe_free_2d(cepbuf);
+ ckd_free(buf);
+ fclose(raw);
+ fe_free(fe);
+ fclose(logfh);
+
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ sbthread_t *threads[10];
+ cmd_ln_t *config;
+ int i;
+
+ E_INFO("Processing chan3.raw in 10 threads\n");
+ if ((config = cmd_ln_parse_r(NULL, fe_args, 0, NULL, FALSE)) == NULL)
+ return -1;
+ for (i = 0; i < 10; ++i) {
+ config = cmd_ln_retain(config);
+ threads[i] = sbthread_start(config, process, (void *)(long)i);
+ }
+ for (i = 0; i < 10; ++i) {
+ int rv;
+ rv = sbthread_wait(threads[i]);
+ E_INFO("Thread %d exited with status %d\n", i, rv);
+ sbthread_free(threads[i]);
+ }
+ /* Now check to make sure they all created logfiles with the
+ * correct contents. */
+ for (i = 0; i < 10; ++i) {
+ char logfile[16], line[256];
+ FILE *logfh;
+
+ sprintf(logfile, "%03d.log", i);
+ TEST_ASSERT(logfh = fopen(logfile, "r"));
+ while (fgets(line, sizeof(line), logfh)) {
+ string_trim(line, STRING_BOTH);
+ printf("%s: |%s|\n", logfile, line);
+ TEST_EQUAL(0, strcmp(line, "INFO: test_tls_log.c(44): nfr = 1436"));
+ }
+ fclose(logfh);
+ }
+ cmd_ln_free_r(config);
+ return 0;
+}
--- /dev/null
+check_PROGRAMS = \
+ test_fopen \
+ test_huff_code \
+ test_bit_encode \
+ test_build_directory \
+ test_heap \
+ test_filename \
+ test_readfile
+
+TESTS = $(check_PROGRAMS)
+
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\" \
+ -DLMDIR=\"${top_srcdir}/test/unit/test_ngram\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+
+noinst_HEADERS = test_macros.h
+
+CLEANFILES = *.log *.out
--- /dev/null
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = test_fopen$(EXEEXT) test_huff_code$(EXEEXT) \
+ test_bit_encode$(EXEEXT) test_build_directory$(EXEEXT) \
+ test_heap$(EXEEXT) test_filename$(EXEEXT) \
+ test_readfile$(EXEEXT)
+subdir = test/unit/test_util
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/include/config.h \
+ $(top_builddir)/include/sphinx_config.h
+CONFIG_CLEAN_FILES =
+test_bit_encode_SOURCES = test_bit_encode.c
+test_bit_encode_OBJECTS = test_bit_encode.$(OBJEXT)
+test_bit_encode_LDADD = $(LDADD)
+test_bit_encode_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_build_directory_SOURCES = test_build_directory.c
+test_build_directory_OBJECTS = test_build_directory.$(OBJEXT)
+test_build_directory_LDADD = $(LDADD)
+test_build_directory_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_filename_SOURCES = test_filename.c
+test_filename_OBJECTS = test_filename.$(OBJEXT)
+test_filename_LDADD = $(LDADD)
+test_filename_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_fopen_SOURCES = test_fopen.c
+test_fopen_OBJECTS = test_fopen.$(OBJEXT)
+test_fopen_LDADD = $(LDADD)
+test_fopen_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_heap_SOURCES = test_heap.c
+test_heap_OBJECTS = test_heap.$(OBJEXT)
+test_heap_LDADD = $(LDADD)
+test_heap_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_huff_code_SOURCES = test_huff_code.c
+test_huff_code_OBJECTS = test_huff_code.$(OBJEXT)
+test_huff_code_LDADD = $(LDADD)
+test_huff_code_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+test_readfile_SOURCES = test_readfile.c
+test_readfile_OBJECTS = test_readfile.$(OBJEXT)
+test_readfile_LDADD = $(LDADD)
+test_readfile_DEPENDENCIES = \
+ ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = test_bit_encode.c test_build_directory.c test_filename.c \
+ test_fopen.c test_heap.c test_huff_code.c test_readfile.c
+DIST_SOURCES = test_bit_encode.c test_build_directory.c \
+ test_filename.c test_fopen.c test_heap.c test_huff_code.c \
+ test_readfile.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_CYTHON = @HAVE_CYTHON@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ad_backend = @ad_backend@
+ad_files = @ad_files@
+ad_libs = @ad_libs@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = $(check_PROGRAMS)
+INCLUDES = \
+ -I$(top_srcdir)/include/sphinxbase \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -DTESTDATADIR=\"$(top_srcdir)/test/regression\" \
+ -DLMDIR=\"${top_srcdir}/test/unit/test_ngram\"
+
+LDADD = ${top_builddir}/src/libsphinxbase/libsphinxbase.la
+noinst_HEADERS = test_macros.h
+CLEANFILES = *.log *.out
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/test_util/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/unit/test_util/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test_bit_encode$(EXEEXT): $(test_bit_encode_OBJECTS) $(test_bit_encode_DEPENDENCIES)
+ @rm -f test_bit_encode$(EXEEXT)
+ $(LINK) $(test_bit_encode_OBJECTS) $(test_bit_encode_LDADD) $(LIBS)
+test_build_directory$(EXEEXT): $(test_build_directory_OBJECTS) $(test_build_directory_DEPENDENCIES)
+ @rm -f test_build_directory$(EXEEXT)
+ $(LINK) $(test_build_directory_OBJECTS) $(test_build_directory_LDADD) $(LIBS)
+test_filename$(EXEEXT): $(test_filename_OBJECTS) $(test_filename_DEPENDENCIES)
+ @rm -f test_filename$(EXEEXT)
+ $(LINK) $(test_filename_OBJECTS) $(test_filename_LDADD) $(LIBS)
+test_fopen$(EXEEXT): $(test_fopen_OBJECTS) $(test_fopen_DEPENDENCIES)
+ @rm -f test_fopen$(EXEEXT)
+ $(LINK) $(test_fopen_OBJECTS) $(test_fopen_LDADD) $(LIBS)
+test_heap$(EXEEXT): $(test_heap_OBJECTS) $(test_heap_DEPENDENCIES)
+ @rm -f test_heap$(EXEEXT)
+ $(LINK) $(test_heap_OBJECTS) $(test_heap_LDADD) $(LIBS)
+test_huff_code$(EXEEXT): $(test_huff_code_OBJECTS) $(test_huff_code_DEPENDENCIES)
+ @rm -f test_huff_code$(EXEEXT)
+ $(LINK) $(test_huff_code_OBJECTS) $(test_huff_code_LDADD) $(LIBS)
+test_readfile$(EXEEXT): $(test_readfile_OBJECTS) $(test_readfile_DEPENDENCIES)
+ @rm -f test_readfile$(EXEEXT)
+ $(LINK) $(test_readfile_OBJECTS) $(test_readfile_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bit_encode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_build_directory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_filename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fopen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_heap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_huff_code.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_readfile.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+# 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:
--- /dev/null
+/**
+ * @file test_bit_encode.c Test bitstream encoding
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "pio.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ FILE *fh;
+ bit_encode_t *be;
+ int i;
+ static unsigned char const bits[] = "\xde\xad\xbe\xef";
+ uint32 cw = 0xdeadbeef;
+ unsigned char inbits[16];
+
+ fh = fopen("bittest.out", "wb");
+ be = bit_encode_attach(fh);
+ bit_encode_write(be, bits, 8);
+ bit_encode_write(be, bits + 1, 16);
+ bit_encode_write(be, bits + 3, 8);
+ bit_encode_write_cw(be, cw >> 24, 8);
+ bit_encode_write_cw(be, cw >> 16, 8);
+ bit_encode_write_cw(be, cw >> 8, 8);
+ bit_encode_write_cw(be, cw, 8);
+ bit_encode_write_cw(be, cw >> 26, 6);
+ bit_encode_write_cw(be, cw >> 14, 12);
+ bit_encode_write_cw(be, cw >> 8, 6);
+ bit_encode_write_cw(be, cw, 8);
+ for (i = 0; i < 32; ++i) {
+ bit_encode_write_cw(be, cw >> (31-i), 1);
+ }
+ bit_encode_flush(be);
+ bit_encode_free(be);
+ fclose(fh);
+ fh = fopen("bittest.out", "rb");
+ i = fread(inbits, 1, 16, fh);
+ TEST_ASSERT(0 == memcmp(inbits, bits, 4));
+ TEST_ASSERT(0 == memcmp(inbits + 4, bits, 4));
+ TEST_ASSERT(0 == memcmp(inbits + 8, bits, 4));
+ TEST_ASSERT(0 == memcmp(inbits + 12, bits, 4));
+ fclose(fh);
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/**
+ * @file test_build_directory.c Test recursive directory creation
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "pio.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+ TEST_EQUAL(0, build_directory("foo/bar/baz"));
+ TEST_ASSERT(stat_mtime("foo/bar/baz") != -1);
+ TEST_EQUAL(0, build_directory("./quux/"));
+ TEST_ASSERT(stat_mtime("quux") != -1);
+ TEST_EQUAL(0, build_directory("./foo/bar/baz"));
+ TEST_ASSERT(stat_mtime("foo/bar/baz") != -1);
+ TEST_EQUAL(0, build_directory("/tmp/sphinxbase_foo_bar_baz"));
+ TEST_ASSERT(stat_mtime("/tmp/sphinxbase_foo_bar_baz") != -1);
+
+ return 0;
+}
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/**
+ * @file test_filename.c Test file name operations
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "filename.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+ char const testname[] = "/foo/bar/baz/quux.argh";
+ char const testname2[] = "foo/bar/baz";
+ char const testname3[] = "/foo";
+ char testout[32];
+
+ path2basename(testname, testout);
+ TEST_EQUAL(0, strcmp("quux.argh", testout));
+
+ path2dirname(testname, testout);
+ TEST_EQUAL(0, strcmp("/foo/bar/baz", testout));
+
+ path2dirname(testname2, testout);
+ TEST_EQUAL(0, strcmp("foo/bar", testout));
+
+ path2dirname(testname3, testout);
+ TEST_EQUAL(0, strcmp("", testout));
+
+ return 0;
+}
--- /dev/null
+/**
+ * @file test_fopen.c Test file opening
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "pio.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+ FILE *fh;
+ char line[256], *c;
+ int ispipe;
+
+ fh = fopen_comp(LMDIR "/100.arpa.gz", "r", &ispipe);
+ TEST_ASSERT(fh != NULL);
+ c = fgets(line, sizeof(line), fh);
+ TEST_EQUAL('#', line[0]);
+ fclose_comp(fh, ispipe);
+
+ fh = fopen_compchk(LMDIR "/100.arpa.gz", &ispipe);
+ TEST_ASSERT(fh != NULL);
+ c = fgets(line, sizeof(line), fh);
+ TEST_EQUAL('#', line[0]);
+ fclose_comp(fh, ispipe);
+
+ fh = fopen_compchk(LMDIR "/100.arpa.bz2", &ispipe);
+ TEST_ASSERT(fh != NULL);
+ c = fgets(line, sizeof(line), fh);
+ TEST_EQUAL('#', line[0]);
+ fclose_comp(fh, ispipe);
+
+ fh = fopen_compchk(LMDIR "/100.arpa", &ispipe);
+ TEST_ASSERT(fh != NULL);
+ c = fgets(line, sizeof(line), fh);
+ TEST_EQUAL('#', line[0]);
+ fclose_comp(fh, ispipe);
+
+ return 0;
+}
--- /dev/null
+/**
+ * @file test_heap.c Test heaps
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "heap.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ heap_t *heap;
+ int i;
+
+ heap = heap_new();
+ for (i = 0; i < 25; ++i)
+ heap_insert(heap, (void *)(long)i, i);
+ for (i = 0; i < 25; ++i) {
+ int32 val;
+ void *data;
+ TEST_EQUAL(1, heap_pop(heap, &data, &val));
+ TEST_EQUAL(val, i);
+ TEST_EQUAL((int)(long)data, i);
+ TEST_EQUAL(heap_size(heap), 25 - i - 1);
+ }
+ for (i = 0; i < 25; ++i)
+ heap_insert(heap, (void *)(long)i, i);
+ TEST_EQUAL(0, heap_remove(heap, (void *)(long)10));
+ TEST_EQUAL(-1, heap_remove(heap, (void *)(long)10));
+ TEST_EQUAL(heap_size(heap), 24);
+ TEST_EQUAL(0, heap_remove(heap, (void *)(long)15));
+ TEST_EQUAL(0, heap_remove(heap, (void *)(long)9));
+ TEST_EQUAL(0, heap_remove(heap, (void *)(long)0));
+ TEST_EQUAL(heap_size(heap), 21);
+ return 0;
+}
--- /dev/null
+/**
+ * @file test_huff_code.c Test Huffman coding
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "huff_code.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int32 const ivalues[10] = {
+ 1, 2, 3, 5, 7, 11, 13, 17, 19, 23
+};
+int32 const frequencies[10] = {
+ 42, 4, 5, 6, 225, 15001, 3, 2, 87, 1003
+};
+char * const svalues[10] = {
+ "foo", "bar", "baz", "quux", "argh",
+ "hurf", "burf", "blatz", "unf", "woof"
+};
+char * const svalues2[10] = {
+ "1","2","3","4","5","6","7","8","9","10"
+};
+char const cdata[7] = { 0x08, 0x30, 0x40, 0x4c, 0x00, 0x04, 0x50 };
+
+void
+test_intcode(huff_code_t *hc)
+{
+ FILE *fh;
+ char const *dptr;
+ int i, offset;
+ size_t dlen;
+ int32 val;
+
+ fh = fopen("hufftest.out", "wb");
+ huff_code_attach(hc, fh, "wb");
+ for (i = 0; i < 10; ++i) {
+ huff_code_encode_int(hc, ivalues[i], NULL);
+ }
+ huff_code_detach(hc);
+ fclose(fh);
+ fh = fopen("hufftest.out", "rb");
+ huff_code_attach(hc, fh, "rb");
+ for (i = 0; i < 10; ++i) {
+ int32 val;
+ huff_code_decode_int(hc, &val, NULL, NULL, 0);
+ printf("%d ", val);
+ TEST_EQUAL(val, ivalues[i]);
+ }
+ printf("\n");
+ huff_code_detach(hc);
+ fclose(fh);
+
+ dptr = cdata;
+ dlen = 7;
+ offset = 0;
+ for (i = 0; i < 10; ++i) {
+ huff_code_decode_int(hc, &val, &dptr, &dlen, &offset);
+ printf("%d ", val);
+ TEST_EQUAL(val, ivalues[i]);
+ }
+ TEST_EQUAL(dlen, 1);
+ TEST_EQUAL(offset, 4);
+ printf("\n");
+
+ dptr = cdata;
+ dlen = 7;
+ offset = 0;
+ i = 0;
+ while (huff_code_decode_int(hc, &val, &dptr, &dlen, &offset) != -1) {
+ printf("%d ", val);
+ TEST_EQUAL(val, ivalues[i++]);
+ }
+ TEST_EQUAL(dlen, 1);
+ TEST_EQUAL(offset, 4);
+ printf("\n");
+}
+
+void
+test_strcode(huff_code_t *hc, char * const *svalues)
+{
+ FILE *fh;
+ char const *dptr;
+ int i, offset;
+ size_t dlen;
+
+ fh = fopen("hufftest.out", "wb");
+ huff_code_attach(hc, fh, "wb");
+ for (i = 9; i >= 0; --i) {
+ huff_code_encode_str(hc, svalues[i], NULL);
+ }
+ huff_code_detach(hc);
+ fclose(fh);
+ fh = fopen("hufftest.out", "rb");
+ huff_code_attach(hc, fh, "rb");
+ for (i = 9; i >= 0; --i) {
+ char const *val = huff_code_decode_str(hc, NULL, NULL, 0);
+ printf("%s ", val);
+ TEST_EQUAL(0, strcmp(val, svalues[i]));
+ }
+ printf("\n");
+ huff_code_detach(hc);
+ fclose(fh);
+
+ dptr = cdata;
+ dlen = 7;
+ offset = 0;
+ for (i = 0; i < 10; ++i) {
+ char const *val = huff_code_decode_str(hc, &dptr, &dlen, &offset);
+ printf("%s ", val);
+ TEST_EQUAL(0, strcmp(val, svalues[i]));
+ }
+ TEST_EQUAL(dlen, 1);
+ TEST_EQUAL(offset, 4);
+ printf("\n");
+}
+
+int
+main(int argc, char *argv[])
+{
+ huff_code_t *hc;
+ FILE *fh;
+
+ hc = huff_code_build_int(ivalues, frequencies, 10);
+ huff_code_dump(hc, stdout);
+ test_intcode(hc);
+ fh = fopen("huffcode.out", "wb");
+ huff_code_write(hc, fh);
+ fclose(fh);
+ huff_code_free(hc);
+
+ fh = fopen("huffcode.out", "rb");
+ hc = huff_code_read(fh);
+ fclose(fh);
+ test_intcode(hc);
+ huff_code_free(hc);
+
+ hc = huff_code_build_str(svalues, frequencies, 10);
+ huff_code_dump(hc, stdout);
+ test_strcode(hc, svalues);
+ fh = fopen("huffcode.out", "wb");
+ huff_code_write(hc, fh);
+ fclose(fh);
+ huff_code_free(hc);
+
+ fh = fopen("huffcode.out", "rb");
+ hc = huff_code_read(fh);
+ fclose(fh);
+ test_strcode(hc, svalues);
+ huff_code_free(hc);
+
+ hc = huff_code_build_str(svalues2, frequencies, 10);
+ huff_code_dump(hc, stdout);
+ test_strcode(hc, svalues2);
+ huff_code_free(hc);
+
+ return 0;
+}
+
--- /dev/null
+#include <stdio.h>
+#include <math.h>
+
+#include "logmath.h"
+
+#define TEST_ASSERT(x) if (!(x)) { fprintf(stderr, "FAIL: %s\n", #x); exit(1); }
+#define TEST_EQUAL(a,b) TEST_ASSERT((a) == (b))
+#define TEST_EQUAL_FLOAT(a,b) TEST_ASSERT(fabs((a) - (b)) < EPSILON)
+#define LOG_EPSILON 20
+#define TEST_EQUAL_LOG(a,b) TEST_ASSERT(abs((a) - (b)) < LOG_EPSILON)
--- /dev/null
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/**
+ * @file test_readfile.c: Test for the methods to read the file
+ * @author David Huggins-Daines <dhuggins@cs.cmu.edu>
+ */
+
+#include "ckd_alloc.h"
+#include "bio.h"
+#include "test_macros.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+ int nsamps;
+ int16 *data;
+
+ data = bio_read_wavfile(TESTDATADIR, "chan3", ".wav", 44, FALSE, &nsamps);
+ TEST_EQUAL(230108, nsamps);
+
+ ckd_free(data);
+
+ return 0;
+}
--- /dev/null
+# Utility functions and parameters for regression tests
+
+# Predefined directories you may need
+# Stupid broken CMU Facilities autoconf doesn't do @abs_top_srcdir@
+builddir=../"@top_builddir@"
+sourcedir=../"@top_srcdir@"
+tests=$sourcedir/test
+
+# Automatically report failures on exit
+failures=""
+trap "report_failures" 0
+
+run_program() {
+ program="$1"
+ shift
+ $builddir/libtool --mode=execute "$builddir/src/$program/$program" $@
+}
+
+pass() {
+ title="$1"
+ echo "$title PASSED"
+}
+
+fail() {
+ title="$1"
+ echo "$title FAILED"
+ failures="$failures,$title"
+}
+
+assert() {
+ title="$1"
+ shift
+ if $@ >/dev/null 2>&1; then
+ pass "$title"
+ else
+ fail "$title"
+ fi
+}
+
+compare_table() {
+ title="$1"
+ shift
+ if perl "$tests/compare_table.pl" $@ | grep SUCCESS >/dev/null 2>&1; then
+ pass "$title"
+ else
+ fail "$title"
+ fi
+}
+
+report_failures() {
+ if test x"$failures" = x; then
+ echo "All sub-tests passed"
+ exit 0
+ else
+ echo "Sub-tests failed:$failures" | sed -e 's/,/\n/g'
+ exit 1
+ fi
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{06364F13-FBCE-4E2B-9289-0DD39E246205}</ProjectGuid>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>MultiByte</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>MultiByte</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../bin/Debug\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../bin/Release\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <Midl>\r
+ <TypeLibraryName>.\../../bin/Debug/sphinx_cepview.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../../include/win32;../../include;../../src/libsphinxbase/fe;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeaderOutputFile>.\Debug/sphinx_cepview.pch</PrecompiledHeaderOutputFile>\r
+ <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>\r
+ <ObjectFileName>.\Debug/</ObjectFileName>\r
+ <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <Link>\r
+ <OutputFile>.\../../bin/Debug/sphinx_cepview.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <ProgramDatabaseFile>.\../../bin/Debug/sphinx_cepview.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <Bscmake>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <OutputFile>.\../../bin/Debug/sphinx_cepview.bsc</OutputFile>\r
+ </Bscmake>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <Midl>\r
+ <TypeLibraryName>.\../../bin/Release/sphinx_cepview.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <AdditionalIncludeDirectories>../../include/win32;../../include;../../src/libsphinxbase/fe;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeaderOutputFile>.\Release/sphinx_cepview.pch</PrecompiledHeaderOutputFile>\r
+ <AssemblerListingLocation>.\Release/</AssemblerListingLocation>\r
+ <ObjectFileName>.\Release/</ObjectFileName>\r
+ <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <Link>\r
+ <OutputFile>.\../../bin/Release/sphinx_cepview.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <ProgramDatabaseFile>.\../../bin/Release/sphinx_cepview.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <Bscmake>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <OutputFile>.\../../bin/Release/sphinx_cepview.bsc</OutputFile>\r
+ </Bscmake>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_cepview\main_cepview.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\sphinxbase\sphinxbase.vcxproj">\r
+ <Project>{2f025ead-99bd-40f5-b2cc-f0a28cad7f2d}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{fb2ec15f-1293-4caf-9e7e-96ab15c92074}</UniqueIdentifier>\r
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{20a38e95-9739-4f78-9dd1-da3dc30f9b63}</UniqueIdentifier>\r
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{d6e04c7c-930c-409a-8b2c-369254961949}</UniqueIdentifier>\r
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_cepview\main_cepview.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{D088C451-BB4D-4379-AFFA-C7523DBD35DD}</ProjectGuid>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>MultiByte</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>MultiByte</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../bin/Debug\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../bin/Release\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <Midl>\r
+ <TypeLibraryName>.\../../bin/Debug/sphinx_fe.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../../include/win32;../../include;../../src/libsphinxbase/fe;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeaderOutputFile>.\Debug/sphinx_fe.pch</PrecompiledHeaderOutputFile>\r
+ <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>\r
+ <ObjectFileName>.\Debug/</ObjectFileName>\r
+ <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <Link>\r
+ <OutputFile>.\../../bin/Debug/sphinx_fe.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <ProgramDatabaseFile>.\../../bin/Debug/sphinx_fe.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <Bscmake>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <OutputFile>.\../../bin/Debug/sphinx_fe.bsc</OutputFile>\r
+ </Bscmake>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <Midl>\r
+ <TypeLibraryName>.\../../bin/Release/sphinx_fe.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <AdditionalIncludeDirectories>../../include/win32;../../include;../../src/libsphinxbase/fe;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeaderOutputFile>.\Release/sphinx_fe.pch</PrecompiledHeaderOutputFile>\r
+ <AssemblerListingLocation>.\Release/</AssemblerListingLocation>\r
+ <ObjectFileName>.\Release/</ObjectFileName>\r
+ <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <Link>\r
+ <OutputFile>.\../../bin/Release/sphinx_fe.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <ProgramDatabaseFile>.\../../bin/Release/sphinx_fe.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <Bscmake>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <OutputFile>.\../../bin/Release/sphinx_fe.bsc</OutputFile>\r
+ </Bscmake>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_fe\sphinx_fe.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\..\src\sphinx_fe\cmd_ln_defn.h" />\r
+ <ClInclude Include="..\..\src\sphinx_fe\sphinx_wave2feat.h" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\sphinxbase\sphinxbase.vcxproj">\r
+ <Project>{2f025ead-99bd-40f5-b2cc-f0a28cad7f2d}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{7ed03328-b900-4740-8d07-ab9eaec51fb2}</UniqueIdentifier>\r
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{33d5a7d6-f860-4b3b-b0b1-fd97051c2ad5}</UniqueIdentifier>\r
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{54e29ae7-a644-41d7-9ea9-0200a873301d}</UniqueIdentifier>\r
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_fe\sphinx_fe.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\..\src\sphinx_fe\cmd_ln_defn.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\sphinx_fe\sphinx_wave2feat.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{0E6AF9F5-8904-4873-8856-7216415782B4}</ProjectGuid>\r
+ <RootNamespace>sphinx_jsgf2fsg</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\bin\$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\bin\$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../../include;../../include/win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <AdditionalIncludeDirectories>../../include;../../include/win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_jsgf2fsg\main.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\sphinxbase\sphinxbase.vcxproj">\r
+ <Project>{2f025ead-99bd-40f5-b2cc-f0a28cad7f2d}</Project>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_jsgf2fsg\main.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{AFB07B69-EDC1-4E99-B0F3-E6B14FF07C5D}</ProjectGuid>\r
+ <RootNamespace>sphinx_lm_convert</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\bin\$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\bin\$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../../include;../../include/win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <AdditionalIncludeDirectories>../../include;../../include/win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_lmtools\sphinx_lm_convert.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\sphinxbase\sphinxbase.vcxproj">\r
+ <Project>{2f025ead-99bd-40f5-b2cc-f0a28cad7f2d}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_lmtools\sphinx_lm_convert.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{AF17E630-A43F-4E0A-9BC4-67CD4E2E7FA1}</ProjectGuid>\r
+ <RootNamespace>sphinx_pitch</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\bin\$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\bin\$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../../include;../../include/win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <AdditionalIncludeDirectories>../../include;../../include/win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_adtools\sphinx_pitch.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\sphinxbase\sphinxbase.vcxproj">\r
+ <Project>{2f025ead-99bd-40f5-b2cc-f0a28cad7f2d}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\sphinx_adtools\sphinx_pitch.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}</ProjectGuid>\r
+ <RootNamespace>sphinxbase</RootNamespace>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>MultiByte</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>MultiByte</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../bin/Release\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../bin/Debug\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <Midl>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MkTypLibCompatible>true</MkTypLibCompatible>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <TargetEnvironment>Win32</TargetEnvironment>\r
+ <TypeLibraryName>.\../../bin/Release/sphinxbase.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <AdditionalIncludeDirectories>../../include/win32;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;_USRDLL;SPHINXBASE_EXPORTS;HAVE_CONFIG_H;SPHINXDLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeaderOutputFile>.\Release/sphinxbase.pch</PrecompiledHeaderOutputFile>\r
+ <AssemblerListingLocation>.\Release/</AssemblerListingLocation>\r
+ <ObjectFileName>.\Release/</ObjectFileName>\r
+ <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <Link>\r
+ <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>../../bin/Release/sphinxbase.dll</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <ProgramDatabaseFile>../../bin/Release/sphinxbase.pdb</ProgramDatabaseFile>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>../../bin/Release/sphinxbase.lib</ImportLibrary>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <Bscmake>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <OutputFile>.\../../bin/Release/sphinxbase.bsc</OutputFile>\r
+ </Bscmake>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <Midl>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MkTypLibCompatible>true</MkTypLibCompatible>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <TargetEnvironment>Win32</TargetEnvironment>\r
+ <TypeLibraryName>.\../../bin/Debug/sphinxbase.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../../include/win32;../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;_USRDLL;SPHINXBASE_EXPORTS;HAVE_CONFIG_H;SPHINXDLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeaderOutputFile>.\Debug/sphinxbase.pch</PrecompiledHeaderOutputFile>\r
+ <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>\r
+ <ObjectFileName>.\Debug/</ObjectFileName>\r
+ <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <Link>\r
+ <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>../../bin/Debug/sphinxbase.dll</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <ProgramDatabaseFile>../../bin/Debug/sphinxbase.pdb</ProgramDatabaseFile>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>../../bin/Debug/sphinxbase.lib</ImportLibrary>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <Bscmake>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <OutputFile>.\../../bin/Debug/sphinxbase.bsc</OutputFile>\r
+ </Bscmake>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\agc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\bio.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\bitvec.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\blas_lite.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\case.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\ckd_alloc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\cmd_ln.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\cmn.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\cmn_prior.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxad\cont_ad_base.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\dtoa.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\err.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\errno.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\f2c_lite.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_interface.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_sigproc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp_affine.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp_inverse_linear.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp_piecewise_linear.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\feat.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\filename.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fixlog.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\fsg_model.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\genrand.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\glist.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\hash_table.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\heap.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\huff_code.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\info.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\jsgf.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\jsgf_parser.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\jsgf_scanner.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\lda.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\listelem_alloc.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\lm3g_model.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\logmath.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\matrix.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\mmio.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_arpa.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_dmp.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_dmp32.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_set.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\pio.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxad\play_win32.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\profile.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxad\rec_win32.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\sbthread.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\slamch.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\slapack_lite.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\strfuncs.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\string_wce.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\unlimit.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\utf8.c" />\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\yin.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\..\include\ad.h" />\r
+ <ClInclude Include="..\..\include\agc.h" />\r
+ <ClInclude Include="..\..\include\bio.h" />\r
+ <ClInclude Include="..\..\include\bitvec.h" />\r
+ <ClInclude Include="..\..\include\byteorder.h" />\r
+ <ClInclude Include="..\..\include\case.h" />\r
+ <ClInclude Include="..\..\include\ckd_alloc.h" />\r
+ <ClInclude Include="..\..\include\clapack_lite.h" />\r
+ <ClInclude Include="..\..\include\cmd_ln.h" />\r
+ <ClInclude Include="..\..\include\cmn.h" />\r
+ <ClInclude Include="..\..\include\win32\config.h" />\r
+ <ClInclude Include="..\..\include\cont_ad.h" />\r
+ <ClInclude Include="..\..\include\err.h" />\r
+ <ClInclude Include="..\..\include\f2c.h" />\r
+ <ClInclude Include="..\..\include\fe.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_internal.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp_affine.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp_inverse_linear.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp_piecewise_linear.h" />\r
+ <ClInclude Include="..\..\include\feat.h" />\r
+ <ClInclude Include="..\..\include\filename.h" />\r
+ <ClInclude Include="..\..\include\fixpoint.h" />\r
+ <ClInclude Include="..\..\include\fsg_model.h" />\r
+ <ClInclude Include="..\..\include\gau_cb.h" />\r
+ <ClInclude Include="..\..\include\gau_cb_float64.h" />\r
+ <ClInclude Include="..\..\include\gau_cb_int32.h" />\r
+ <ClInclude Include="..\..\include\gau_file.h" />\r
+ <ClInclude Include="..\..\include\gau_mix.h" />\r
+ <ClInclude Include="..\..\include\genrand.h" />\r
+ <ClInclude Include="..\..\include\glist.h" />\r
+ <ClInclude Include="..\..\include\hash_table.h" />\r
+ <ClInclude Include="..\..\include\heap.h" />\r
+ <ClInclude Include="..\..\include\huff_code.h" />\r
+ <ClInclude Include="..\..\include\info.h" />\r
+ <ClInclude Include="..\..\include\jsgf.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\jsgf_internal.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\jsgf_parser.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\jsgf_scanner.h" />\r
+ <ClInclude Include="..\..\include\libutil.h" />\r
+ <ClInclude Include="..\..\include\listelem_alloc.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\lm3g_model.h" />\r
+ <ClInclude Include="..\..\include\logmath.h" />\r
+ <ClInclude Include="..\..\include\matrix.h" />\r
+ <ClInclude Include="..\..\include\mmio.h" />\r
+ <ClInclude Include="..\..\include\mulaw.h" />\r
+ <ClInclude Include="..\..\include\ngram_model.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_arpa.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_dmp.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_internal.h" />\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_set.h" />\r
+ <ClInclude Include="..\..\include\pio.h" />\r
+ <ClInclude Include="..\..\include\prim_type.h" />\r
+ <ClInclude Include="..\..\include\profile.h" />\r
+ <ClInclude Include="..\..\include\s3_arraylist.h" />\r
+ <ClInclude Include="..\..\include\sbthread.h" />\r
+ <ClInclude Include="..\..\include\win32\sphinx_config.h" />\r
+ <ClInclude Include="..\..\include\sphinx_types.h" />\r
+ <ClInclude Include="..\..\include\sphinxbase_export.h" />\r
+ <ClInclude Include="..\..\include\strfuncs.h" />\r
+ <ClInclude Include="..\..\include\unlimit.h" />\r
+ <ClInclude Include="..\..\include\yin.h" />\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{cc0ceed0-a34d-4f0f-bcb8-e1f44f59d62b}</UniqueIdentifier>\r
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{7d23a9d1-9320-4724-abaa-525fd55849b4}</UniqueIdentifier>\r
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\agc.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\bio.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\bitvec.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\blas_lite.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\case.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\ckd_alloc.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\cmd_ln.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\cmn.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\cmn_prior.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxad\cont_ad_base.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\dtoa.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\err.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\errno.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\f2c_lite.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_interface.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_sigproc.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp_affine.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp_inverse_linear.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fe_warp_piecewise_linear.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\feat.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\filename.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\fixlog.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\fsg_model.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\genrand.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\glist.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\hash_table.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\heap.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\huff_code.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\info.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\jsgf.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\jsgf_parser.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\jsgf_scanner.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\feat\lda.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\listelem_alloc.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\lm3g_model.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\logmath.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\matrix.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\mmio.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_arpa.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_dmp.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_dmp32.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\lm\ngram_model_set.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\pio.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxad\play_win32.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\profile.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxad\rec_win32.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\sbthread.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\slamch.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\slapack_lite.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\strfuncs.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\string_wce.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\unlimit.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\util\utf8.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\src\libsphinxbase\fe\yin.c">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\..\include\ad.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\agc.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\bio.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\bitvec.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\byteorder.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\case.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\ckd_alloc.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\clapack_lite.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\cmd_ln.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\cmn.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\win32\config.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\cont_ad.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\err.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\f2c.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\fe.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_internal.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp_affine.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp_inverse_linear.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\fe\fe_warp_piecewise_linear.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\feat.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\filename.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\fixpoint.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\fsg_model.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\gau_cb.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\gau_cb_float64.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\gau_cb_int32.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\gau_file.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\gau_mix.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\genrand.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\glist.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\hash_table.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\heap.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\huff_code.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\info.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\jsgf.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\jsgf_internal.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\jsgf_parser.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\jsgf_scanner.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\libutil.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\listelem_alloc.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\lm3g_model.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\logmath.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\matrix.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\mmio.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\mulaw.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\ngram_model.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_arpa.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_dmp.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_internal.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\src\libsphinxbase\lm\ngram_model_set.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\pio.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\prim_type.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\profile.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\s3_arraylist.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\sbthread.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\win32\sphinx_config.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\sphinx_types.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\sphinxbase_export.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\strfuncs.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\unlimit.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\include\yin.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+</Project>
\ No newline at end of file
--- /dev/null
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2007-11-22.22
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
+# 2007 Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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., 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case "$1" in
+ '')
+ echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
+ exit 1
+ ;;
+ --basedir)
+ basedir=$2
+ shift 2
+ ;;
+ -h|--h*)
+ cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+ INPUT is the input file
+ OUTPUT is one file PROG generates
+ DESIRED is the file we actually want instead of OUTPUT
+ PROGRAM is program to run
+ ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v|--v*)
+ echo "ylwrap $scriptversion"
+ exit $?
+ ;;
+esac
+
+
+# The input.
+input="$1"
+shift
+case "$input" in
+ [\\/]* | ?:[\\/]*)
+ # Absolute path; do nothing.
+ ;;
+ *)
+ # Relative path. Make it absolute.
+ input="`pwd`/$input"
+ ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+ if test "$1" = "--"; then
+ shift
+ break
+ fi
+ pairlist="$pairlist $1"
+ shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+ [\\/]* | ?:[\\/]*) ;;
+ *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines. But that might take us over the 14-char limit.
+dirname=ylwrap$$
+trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+ 0) "$prog" "$input" ;;
+ *) "$prog" "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+ set X $pairlist
+ shift
+ first=yes
+ # Since DOS filename conventions don't allow two dots,
+ # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+ # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+ y_tab_nodot="no"
+ if test -f y_tab.c || test -f y_tab.h; then
+ y_tab_nodot="yes"
+ fi
+
+ # The directory holding the input.
+ input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
+ # Quote $INPUT_DIR so we can use it in a regexp.
+ # FIXME: really we should care about more than `.' and `\'.
+ input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
+
+ while test "$#" -ne 0; do
+ from="$1"
+ # Handle y_tab.c and y_tab.h output by DOS
+ if test $y_tab_nodot = "yes"; then
+ if test $from = "y.tab.c"; then
+ from="y_tab.c"
+ else
+ if test $from = "y.tab.h"; then
+ from="y_tab.h"
+ fi
+ fi
+ fi
+ if test -f "$from"; then
+ # If $2 is an absolute path name, then just use that,
+ # otherwise prepend `../'.
+ case "$2" in
+ [\\/]* | ?:[\\/]*) target="$2";;
+ *) target="../$2";;
+ esac
+
+ # We do not want to overwrite a header file if it hasn't
+ # changed. This avoid useless recompilations. However the
+ # parser itself (the first file) should always be updated,
+ # because it is the destination of the .y.c rule in the
+ # Makefile. Divert the output of all other files to a temporary
+ # file so we can compare them to existing versions.
+ if test $first = no; then
+ realtarget="$target"
+ target="tmp-`echo $target | sed s/.*[\\/]//g`"
+ fi
+ # Edit out `#line' or `#' directives.
+ #
+ # We don't want the resulting debug information to point at
+ # an absolute srcdir; it is better for it to just mention the
+ # .y file with no path.
+ #
+ # We want to use the real output file name, not yy.lex.c for
+ # instance.
+ #
+ # We want the include guards to be adjusted too.
+ FROM=`echo "$from" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+ TARGET=`echo "$2" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+ sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
+ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+ # Check whether header files must be updated.
+ if test $first = no; then
+ if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+ echo "$2" is unchanged
+ rm -f "$target"
+ else
+ echo updating "$2"
+ mv -f "$target" "$realtarget"
+ fi
+ fi
+ else
+ # A missing file is only an error for the first file. This
+ # is a blatant hack to let us support using "yacc -d". If -d
+ # is not specified, we don't want an error when the header
+ # file is "missing".
+ if test $first = yes; then
+ ret=1
+ fi
+ fi
+ shift
+ shift
+ first=no
+ done
+else
+ ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# 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: